top of page

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 1234 – 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 19Part 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 – 1234 – 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.

 

Download DataSpell 2023.1 EAP

 

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:

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 SummarizationSorting 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:

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:

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:

Bash (Unix shell)

The Enigma project is now out of Beta.

Android

🆕 Topic: Parcel and Bundle

Fundamentals

🆕 Topics:

 

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:

Furthermore, we’ve released the projects Maze RunnerJeopardy! Question Answering BotLearning Progress TrackerHotKitchenSchool 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:

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:

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:

Additionally, the projects Amazing Prices and Dog Glossary are now out of Beta.

Data Science

🆕 Topics:

Fundamentals

🆕 Topics:

 

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.

Download DataSpell 2023.1.3

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 4, 2023:

JetBrains Academy’s New Projects and Topics: July Update

If you’re learning Python, JavaScript, Kotlin, or Go and you’re interested in adding unconventional projects to your developer portfolio, such as a traffic light, browser game, or account service, we’ve got you covered!

But that’s not all. We’re also introducing 66 new topics across programming languages, algorithms and data structures, system administration and DevOps, and computer science fundamentals. This will allow you to further expand your programming knowledge.

Now, let’s take a closer look at what’s new.

Python (data science, machine learning)

🆕 Python project: Traffic Light (Beta). Hard

In this project, not only will you create your own traffic light app, but you will also gain valuable skills in multi-threading, exception handling, class inheritance, and implementing the circular queue data structure.

🆕 Data science project: Random Forest from Scratch (Beta). Hard

Dive into the implementation of one of the most popular ensemble algorithms, Random Forest. You’ll have the opportunity to build the entire algorithm from scratch using numpy and test it on the titanic dataset from sklearn.

🆕 NLP project: HyperSearch Engine (Beta). Challenging

Build your very own search engine using the TF-IDF algorithm. Your program will be able to highlight the target word and provide context around it.

🆕 Django project: Regex Tester (Beta). Challenging

Harness the power of regular expressions by creating a tool for testing regexes. In this project, you’ll develop a simple regex tester that can store the history of tests, allowing you to tame the complexity of regular expressions.

🆕 Topics: 

 

Last month 5 Python projects got high scores for their usefulness, clarity, and fun from our users. These projects have now been released from Beta and are ready for you to explore:

 

Frontend (HTML, CSS, JavaScript)

🆕 Project: Site for Marathon (Beta). Easy

Discover the power of iframes in web development as you learn to seamlessly embed external content within your web pages. Explore the techniques of absolute positioning and z-index to precisely position elements on your page. Gain proficiency in working with images and adding subtle animations to enhance the dynamism of your web page.

🆕 Project: Who Wants to Be a Millionaire (Beta). Medium

Create a browser game while acquiring essential skills in web development. Dive into the world of browser events and learn to effectively handle them, enabling seamless interactivity within your game. Work with JSON objects, allowing you to efficiently store and manipulate game data, and develop your game logic using JavaScript.

🆕 Topics: 

 

We’ve also released the Postprocessor project from Beta, with improved content and functionality.

Kotlin

🆕 Project: Bulls and Cows (Beta). Medium

Challenge yourself by creating an advanced version of the classic code-breaking game “Bulls and Cows”. Begin by recreating the original version of the game and then elevate it to new heights with your innovative additions and enhancements.

🆕 Spring Boot project: Account Service (Beta). Challenging

Master the Spring Security module. Gain a solid understanding of user authentication and authorization, allowing you to ensure the utmost security for your applications. Learn how to register security events and familiarize yourself with the latest information security standards for web applications, ensuring your projects meet modern requirements.

🆕 Topics:

 

The Blockchain and Cinema Room Manager have also been released from Beta.

Go

🆕 Project: File Type Analyzer (Beta). Challenging

Files come in a variety of formats, often indicated by their names. Even if the file type has been manually changed or removed, information about the type is still embedded within the file. In this project, you’ll build a tool that extracts information from files to determine their type. Experiment with various algorithms and observe how different algorithms impact the tool’s speed.

🆕 Topics: Synchronization with channelsContext cancellation and timeouts

Java

🆕 Topics: Hashing java.security.MessageDigestUnderstand the problemExternal resources

Algorithms and structures

🆕 Topics: Dynamic programming: another approachCryptographic hash functionsEdit distanceCaesar cipherVigenère cipher

System administration and DevOps

🆕 Topics: 

 

Scala

🆕 Topic: Unified types

Fundamentals

🆕 Topics:

 

That wraps up this month’s offerings! We hope you’ll enjoy exploring these exciting projects and topics to enhance your programming skills.

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.

If you have any questions or if you would like to share your feedback, feel free to leave a comment below, contact us at academy@jetbrains.com, or share your thoughts with us on Twitter or Facebook.

Enjoy learning!

 

 

July 6, 2023:

Space On-Premises 2023.2 Is Out!

Do you strive for complete control over your data while developing software?

You’ll be glad to know we’ve just released Space On-Premises 2023.2, a more accessible version with new simplified installation options and other useful features.

With the new AWS one-click installation option, you can now quickly and easily run Space on the AWS cloud. You can also use Docker Compose as a stable installation with the expanded Docker Compose configuration steps that we’ve added in this version.

To help improve your productivity, Space On-Premises 2023.2 adds a number of new features, such as powerful IDE-inspired navigation, issue time tracking, the ability to store build artifacts and cache project dependencies, support for Rust packages, the quick option to create issues directly from code snippets, and more.

 

Read this article to learn what’s new in the 2023.2 version, and see an overview of the available installation options to find one that suits your team best.

Full Article

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.

August 16, 2023:

Increase Your Productivity With TeamCity Documentation Examples for the Kotlin DSL

TeamCity offers the ability to define project settings and configure CI/CD pipelines programmatically with the help of the Kotlin DSL. 

To help you take advantage of the Kotlin DSL’s capabilities and simplify the build configuration process, we’ve created extensive Kotlin DSL documentation. It comes with examples that you can simply copy-paste directly into your code base.

How the Kotlin DSL documentation works

Every TeamCity server has its own Kotlin DSL documentation, which is automatically curated to match the TeamCity version and any plugins installed on the server. If you install a new plugin, the documentation compiles again, providing you with relevant examples.
You can also refer to the general Kotlin DSL documentation, which is available in the TeamCity docs.

Accessing the Kotlin DSL documentation from IntelliJ IDEA

The Kotlin DSL documentation is available right from IntelliJ IDEA (both Ultimate and Community editions). You can access it by going to Maven Tool Window | Download Sources and Documentation.

Another way to access the Kotlin DSL documentation directly from your IDE is to run the mvn -U dependency:sources command.

The documentation’s context and examples change when you click on an entity (for example, a build step or a trigger). The information is displayed either in a popup window or in the panel on the left, depending on the settings you’ve selected.

There are a few different ways to open the Kotlin DSL examples from your IDE:

  1. Pressing F1 on Mac or Ctrl + Q on Windows. Refer to this section of the IntelliJ IDEA documentation for more details.

  2. Clicking on the name of an entity (such as a build step or a command). The examples will open in the menu on the right-hand side of the window.

  3. Simply hovering over an entity to access the in-line information window.

How this feature is helpful

Using Kotlin DSL examples can save you time when configuring your pipelines as code. The examples also make it easier to discover all of the things you can do when configuring builds, in addition to helping you identify the scenarios that TeamCity can support.

Working with the Kotlin DSL examples can be a particularly great option when you are just getting started, as they provide a solid foundation on which to build your understanding of the Kotlin DSL.

TeamCity also provides you with an option to view your settings as code with the help of the View as code button, which is available on the build level. This displays your settings as code that you can copy and paste to your codebase.

If your project can’t be configured via the UI and you’d still like to experiment with the View as code feature, consider setting up a sandbox project on your TeamCity server. It will give you a chance to play around with different TeamCity features and see how they look in the Kotlin DSL.

Further resources

If you’d like to learn more about using the Kotlin DSL for TeamCity, here are some additional resources that you might find useful:

Over to you

Do you have any questions or comments about how we can improve the Kotlin DSL examples and documentation? We’d love to get your feedback! Feel free to share it in the comment section below. 

Happy building!

Feb 3, 2023
Feb 23, 2023
Apr 2, 2023
Apr 6, 2023
May 30, 2023
Jun 1, 2023
Jun 23, 2023
Jul 12, 2023
May 4, 2023
Aug 16, 2023
July 4, 2023
July 6, 2023

August 24, 2023:

How To Choose a CI/CD Tool: A Framework

There are plenty of options available when it comes to selecting a CI/CD tool for your organization. A direct feature comparison on third-party websites like G2 can help you get a solid understanding of a tool’s core functionality. 

However, you might still find it challenging to understand whether a tool is capable of meeting your specific requirements, how easy it is to use, or how compliant it is with your industry regulations.

In this blog post, we offer general guidelines for selecting an appropriate CI/CD solution and delve into how TeamCity fits into this framework. We hope it will help you make an informed decision when choosing the best tool for your organization.

Choosing the right CI/CD tool for your needs and goals

The needs for a CI/CD solution can vary greatly between teams, and a tool that serves one team perfectly might not be as suitable for another.

Here, we suggest seven main factors to consider when choosing a CI/CD solution for your team.

  1. Development workflow. The solution should integrate smoothly into your development workflows without requiring you to write too many custom scripts or plugins.

  2.  

  3. Pipeline configuration. The tool should offer a flexible setup for environments, security checks, approvals, and more to allow the proper flow of artifacts and dependencies between build steps.

  4.  

  5. Feedback and analysis. The CI/CD solution should provide comprehensive feedback on multiple levels, from error messages to infrastructure performance, to ensure fast problem resolution and an uninterrupted delivery process.

  6.  

  7. Scalability and maintenance. Moving from one tool to another can take months of work, which makes it very important to use a solution that will cover all of your future needs from the outset.

  8.  

  9. Security. It’s critical to prevent malicious actors from stealing your source code, hacking into your infrastructure, or compromising the end product.

  10.  

  11. Cost efficiency. When evaluating a CI/CD solution, it’s not only crucial to look at the price of a license or a subscription but also the operational and maintenance expenses.

  12.  

  13. Usability and support. Every developer, even without prior experience in continuous delivery, should be able to understand how their project is built and deployed, and how to effectively use the tool to deliver changes faster.

  14.  

  15. Hosting model. Depending on your company’s needs, you might consider using a cloud or self-hosted solution. Both options have their advantages, so the final choice entirely depends on your specific needs.

All modern solutions offer essential features, such as Docker supportconfiguration as code, or automatic building of pull requests. For smaller projects, the differences between these solutions may not be as significant.

However, as your team grows and your workflows become more complex, it becomes increasingly difficult to set up the pipelines correctly and ensure they function as intended. In such cases, your experience with different CI/CD tools may vary greatly.

💡See also: Best Continuous Integration Tools for 2023 ‒ Survey Results

Source: Developer Ecosystem Report 2022

Development workflow

When evaluating a continuous integration tool, it is important to understand to what extent the tool can be customized to your workflow, and to what extent your team will need to adjust its processes to the tool. Consider the following aspects:

Diversity of your change workflows

Your team may require the ability to build every pull request, run the pipeline when someone commits to a specific branch, or trigger a build when a particular user changes files within a particular directory.

Sometimes, you may need to run the build pipeline without committing changes to the repository to ensure that you never commit broken code and avoid negatively affecting your team members’ efforts.

💡See also: Pre-Tested Commit: No broken code in your version control

Your code may be distributed across multiple version control systems (VCSs) of different types or live in a monorepo. You may need to rebuild and redeploy the application whenever an external dependency, such as a Maven package or a Docker container, is updated.

By carefully evaluating a CI/CD tool’s support for your specific change workflows, you can ensure that the tool is a good fit for your team and minimize the need for changes in your own processes.

Docker and non-Docker workflows

While Docker can provide a convenient and efficient approach to building many types of applications, there are situations where running on an actual OS is necessary. For instance, if your application relies on integration with a hardware component that cannot be accessed from a Docker container, you may require an OS-based workflow.

Similarly, a Docker-based workflow may be insufficient for your team’s needs if your software requires interaction with an OS, such as when developing a system driver or a Windows service.

When choosing the best CI tool for your team, evaluate your specific project requirements and consider the advantages and limitations of both approaches.

Team maturity

Teams just beginning their journey with continuous integration may be more flexible in adapting their workflow to fit a particular solution. Thus, tools with fewer configurable options may provide a simpler and more streamlined user experience.

In contrast, highly skilled teams that precisely understand their needs may find all-inclusive DevOps platforms limiting, as these solutions might not offer the required level of flexibility and customization.

Ease of migration

When selecting a new CI/CD tool, ease of migration should be one of the key considerations. In many cases, it may be simpler to migrate to a standalone solution rather than to a complete DevOps platform. This way, users can migrate in batches, you’ll have to write fewer manual integrations, and it will minimize disruption to your development workflows.

Organizational aspects

It’s vital to consider the culture and policies of your organization, particularly if teams are encouraged to select their own development tools.

Keep in mind that some team members may resist changes to their workflow, especially if they are comfortable and familiar with their current tools.

Development workflow support in TeamCity

TeamCity is an excellent fit for the following workflows:

  • Support for multiple VCSs.

  • Ability to run CI/CD processes without committing.

  • Granular control of changes (filtering by branches, usernames, file masks, etc.).

  • Trigger-defined parameters.

  • Comprehensive API to integrate with other tools.

While it may be tricky to choose between the streamlined experience of a platform and the flexibility of a standalone tool, the good news is that one doesn’t necessarily prevent you from using the other.

Since it’s common for teams to use multiple CI/CD tools concurrently, you might as well use a combination of a standalone solution and an all-inclusive DevOps platform as long as there’s proper integration between the two.

Pipeline configuration

Every team has its own unique workflow and requirements, which makes using a customizable solution that fully meets your needs vital. Here are the different types of pipeline configuration that you might consider when choosing a CI/CD tool.

UI and code-based configuration

Some tools offer a UI-based configuration approach that provides an easy way to get started and maintain the setup, as the pipelines can be configured without any special knowledge.

All modern tools support configuration as code, which gives you a versioned configuration history.

Many tools use YAML configurations, which provide a very straightforward way to automate the building and testing of simple apps. However, managing YAML files can become increasingly difficult as the team and infrastructure become more complex.

For large-scale projects, it might be more effective to configure CI/CD using a fully-fledged  programming language, which allows using loops, conditional statements, and other language constructs. In addition, it makes it easy to write the configuration code in an IDE and take advantage of its refactoring and debugging features.

Workflow customization

Customization is a critical aspect of selecting continuous integration and continuous delivery software, as it allows teams to create pipelines that match their specific build and deployment workflows.

Depending on the trigger event, such as a code commit, a dependency update, or a scheduled trigger, teams may want to customize the build environment, scope of testing, Docker image tag, and other pipeline components.

If you need to execute specific steps sequentially on the same build agent (for example, you might want to start a Windows service and then run a build on the same system), the chosen tool should provide the ability to set this up exactly as needed.

Environment configuration

When selecting a CI/CD tool, it is essential to consider the level of customization it provides in terms of environment configuration. Specifically, teams should be able to choose the build environment that best fits their requirements, whether using Docker containers, cloud build agents, bare metal servers, or hybrid options.

💡See also: TeamCity’s Build Infrastructure Features

Pipeline optimization

As discussed in the Scalability section above, there are various optimization techniques that can help teams to complete builds faster and shorten the feedback loop.

One key optimization technique is the ability to cache dependencies, which can help minimize build times by avoiding having to download and install dependencies every time a build is run. Additionally, the ability to reuse build artifacts can further reduce build times, as previously-built components can be reused in subsequent builds.

Parallelizing tests across multiple build agents is another effective way to optimize pipelines in large projects. By spreading tests across multiple build agents, teams can reduce the time required to run all tests, helping to shorten the feedback loop and ensure that issues are identified and addressed more quickly.

💡Parallel tests revolutionized how we develop and test TeamCity. Our own integration tests have become over 10x faster, dropping from four hours to about 20 minutes.

Artifact management

Producing and propagating artifacts is essential to any CI/CD pipeline. Artifacts allow your builds to “communicate” and pass the data from one build to another.

By choosing a tool that can store artifacts, you can store the data produced by your builds for further analysis and debugging.

Feedback and analysis

The primary purpose of CI/CD is to shorten the time it takes to receive feedback on the changes you make to your software. The most actionable feedback is the one that is directly tied to specific code changes and provides information about the status of builds and deployments, as well as changes in performance and quality metrics.

When evaluating a CI/CD solution, the following aspects must be considered:

Analysis of build results

CI/CD solutions should provide a detailed analysis of build results, including information on failed tests, build times, error logs, and other key metrics. This information should be easily accessible and presented in a way that allows developers to identify and address issues quickly.

Trends

It is important for tools to provide trend analysis capabilities, allowing teams to track changes in build and deployment performance over time. This can help teams to identify patterns and trends and proactively address potential issues before they become more serious.

Performance monitoring

To identify bottlenecks and resolve issues that affect the efficiency of the CI/CD process, it is critical to be able to profile the performance of build agents and identify the need to provision more resources to the build infrastructure.

Performance monitoring in TeamCity

VCS and issue tracker integration

By integrating with the version control system and the issue tracker, a CI/CD tool opens more ways to provide feedback.

Flaky test detection

It’s important for a continuous integration tool to be able to analyze and detect flaky tests. To shorten the feedback loop and speed up your development process, look for a tool that can identify flaky tests for you and highlight them in the test results.

Scalability and maintenance

Software projects tend to grow in size and complexity. A reliable CI/CD system must be able to handle this growth and keep pace with the growing number of pipelines, builds, users, roles, and workflows.

To ensure that your team is never held back, the system should be able to efficiently manage resources and be equipped with monitoring and maintenance tools to resolve any issues that arise quickly.

The following factors will help you understand the level of scalability required for your team.

User management

In small-scale projects, it’s usually sufficient to have basic role-based access rules that define who can trigger builds, view build results, or modify the pipeline configuration. Large teams require more advanced features, such as LDAP integration or single sign-on (SSO) support, two-factor authentication, project hierarchy, granular permission management, approval workflows, and audits.

💡See also: TeamCity’s User Management Features

Pipeline optimizations

As the frequency of commits and the complexity of workflows increases, it becomes important to utilize the resources of the CI/CD efficiently. This can be done by reusing build artifacts and minimizing the number of unnecessary rebuilds, reordering build queues, parallelizing tests, and via other similar features.

Project templates

The larger your organization is, the more you will benefit from using project templates. By standardizing typical workflows, you can significantly reduce the effort required to create and maintain pipelines, improve collaboration between teams, prevent misconfigurations, and increase the security of your CI/CD pipelines.

In this case study, Gearbox, an award-winning game development company, shares how they were able to streamline their CI/CD processes and standardize their CI/CD practices with the help of TeamCity’s reusable project templates.

Read the complete case study

Performance and fault tolerance

As the number of projects grows and the demand for computing resources increases, it becomes more challenging to scale the build infrastructure and mitigate the risks of potential downtimes.

Typical requirements of large companies include automated provisioning of build agents (such as by integrating with cloud platforms) and the ability to organize build agents in pools for easier management.

Enterprise-level solutions pay a lot of attention to high-availability features, such as the ability to run multiple application servers in a clustered environment and smart load balancing.

Maintenance and upgrade

To identify and resolve issues in the CI/CD setup, administrators should have the monitoring and logging tools and be able to increase resources, implement caching mechanisms, or update artifact retention policies when needed.

Special attention should be given to upgrading the solution. Some tools rely on external plugins so heavily that upgrading them without breaking existing functionality may be difficult or even impossible.

A scalable CI/CD solution may not be crucial for small teams and projects with limited complexity. However, as the size of the team and the complexity of the project increase, it becomes one of the most critical aspects of the software development process.

How TeamCity supports scalability

TeamCity can support projects of any size, including projects with a vast amount of dependencies. It can scale automatically during periods of high load. One instance of TeamCity Server can stably work with 1,000+ build agents.

💡Read more: Solving Build Server Scalability Issues

Security features

Security is a major consideration for any software development process, and it is especially critical for CI/CD, as CI/CD tools are given trusted access to sensitive data and systems.

When evaluating a solution, look at the security features from two main perspectives:

  1. Security of the service. With new threats and vulnerabilities emerging every day, the solution must ensure that potential attackers can’t get access to your source code, secret keys, build infrastructure, or build results.

  2. Security of the end product. Many CI/CD tools allow integrating security checks into the build pipelines to ensure that the resulting software doesn’t have vulnerabilities that can be exploited.

Some teams tend to prioritize speed and efficiency over security, which can lead to shortcuts and neglect of security best practices. Integrated platforms generally provide an easier way to secure CI/CD at the cost of “vendor-locking” you into their ecosystem and workflows.

💡Check out our whitepaper “9 Ways To Prevent a Supply Chain Attack on Your CI/CD Server” for additional security tips.

Cost efficiency

As pipelines become more complex and team sizes grow, the price of a license or subscription can become less important compared to other factors that can affect the effectiveness of the CI/CD system:

  • Statistically, by reordering the build queue and minimizing redundant builds, teams can save at least 30% of the build time and associated costs.

  • The more tools and services your CI/CD supports out of the box, the less the chance you’ll have to write and maintain custom scripts and external integrations. This can drastically affect maintenance costs.

  • Additionally, most teams have peak periods (usually during release times) when any failures of the continuous integration tool can significantly impact the company’s business. This is one of the challenges that can hardly be evaluated without having actual experience with a particular CI/CD solution. Still, it is possible to understand how it handles such issues by reading reviews and feedback from other teams regarding work on similar tasks.

 

Ultimately, the total cost of ownership of a CI/CD solution depends on your team’s specific needs and requirements. As a general rule, it is prudent to consider the following factors:

Integration costs

Integrating CI/CD with version control systems, issue trackers, build and test frameworks, deployment automation systems, and other tools can be very time-consuming and expensive.

Maintenance costs

Every CI/CD solution requires allocating resources for running regular security audits and keeping the underlying infrastructure up to date, diagnosing and eliminating bottlenecks. In many companies, supporting these processes requires an entire team.

CI/CD efficiency

If your builds are constantly sitting in the queue and you are not getting rapid feedback, this defeats the whole purpose of a CI/CD solution. Such features as dynamic scaling in the cloud, re-using of builds, and test parallelization significantly impact developer efficiency in large companies.

Feedback

To achieve efficient and productive software development, it is essential to have a feedback loop that is not only timely but also actionable. When a build fails, developers should quickly identify the root cause of the issue and see a clear path to a resolution. Often, there is an observable time between being notified of a build failure and fully understanding what needs to be fixed – and this is where a reliable tool can provide immense value.

By analyzing build logs and providing precise information about the issue, the best CI/CD tools can help developers fix any issues quickly and confidently, leading to faster feedback loops and increased overall productivity.

Factors that reduce TeamCity’s cost of ownership:

  • Licensing costs

  • Infrastructure costs

  • Integration costs

  • Maintenance costs

Usability and support

Finding the optimal balance between functionality and user experience is a constant challenge for vendors of CI/CD solutions. When evaluating software usability for your team, you should consider the following factors:

UI consistency

As the size of projects increases, it becomes increasingly essential that your CI/CD provides the required functionality without adding unnecessary complexity. When evaluating a solution, ensure that the most critical features are provided by the vendor, not developed by the community.

An intuitive user interface is vital in a CI/CD solution because it helps developers easily and quickly understand and use the solution, even when working with complex processes.

Example of TeamCity’s UI

External plugins can often introduce navigation issues, feature an unresponsive interface, have conflicting terms and icons, exhibit difficulty adapting to different screen sizes and devices, and lack proper documentation. Regardless of how experienced your team is, an inconsistent user interface will always result in reduced productivity.

“One of the competitors had a very unfriendly UI. The feeling that people should have when they come into a CI/CD system is that it is very sturdy; it won’t break when I try to do anything in it. I think TeamCity has a very well-polished UI. You have confidence that it is a well-working system when you navigate it.”
– Steve Fortier, Lead Release Engineer, Gearbox

Read the complete case study

 

Accessibility

If a CI/CD system supports accessibility features such as screen reader compatibility, keyboard navigation, and high contrast mode, it’s usually a good indicator that it provides a good experience in general.

 

Documentation and support

 

Comprehensive documentation, tutorials, videos, and a supportive community can be essential for effectively using a CI/CD tool. As a rule of thumb, the longer the solution has been available on the market, the higher the chance that you will be able to resolve problems and obtain answers to your questions.

 

API

 

Depending on the specific requirements of your team and the workflow you want to implement, you may need to integrate your CI/CD with external tools. This experience can vary widely depending on the maturity of the API, the availability and quality of its documentation, and how rapidly it changes between versions of the software.

 

Hosting model

 

 

CI/CD solutions can be roughly divided into two categories – cloud and on-premises options.

The cloud option takes the burden of maintaining and scaling the CI/CD processes off your team’s shoulders and allows you to build the pipeline in the cloud.

 

 

Meanwhile,  on-premises solution will enable you to host your CI/CD behind the security of your firewall, complying with the strictest security regulations and requirements.

 

 

Final thoughts

 

Choosing a CI/CD tool for your organization depends on many factors. In this blog post, we’ve provided you with the key factors you might want to consider when researching the best fit for your team or organization.

 

 

Feel free to share your questions or comments in the section below. We’ll be happy to answer them.

 

 

Happy building!

September 6, 2023:

JetBrains Academy’s New Projects and Topics: September Update

September is a month of change and excitement, and we’re here to make it even more inviting with our latest updates. Our team has prepared four new Python projects and more than 90 new educational topics.

Let’s look at these updates in more detail.

Python

🆕 Project: Rhythm Store (Beta). Medium.

In this project, you will learn the basics of SQL, testing your skills with complex queries using an e-commerce database: tracking orders, products, employees, and other vital data. If you love to deal with complex databases, this project is for you.

🆕 Project: Text-Based Adventure Game (Beta). Hard.

Explore the history of gaming!
Back in the day, video games – like Colossal Cave Adventure –  were mostly text-based adventures with no fancy graphics. In this project, you’ll get to make a text-based game with your own story, learning how to utilize “if” statements, array lists, dictionaries, and loops. You will also learn the basics of file handling.

🆕 Project: House Classification (Beta). Hard.

Welcome to our Amsterdam real estate challenge, in which you’ll predict house prices using machine learning with loads of categorical data. Learn how to use different data encoders and dive into master data manipulation and decision tree algorithms, the key to unlocking the secrets of Amsterdam’s housing market!

🆕 Project: Bike Shop. Challenging.

You’ll create a web application for a bike shop that allows customers to customize their bikes and checks whether the necessary parts are in stock. In this project, you will learn about general Django concepts and master Django ORM (object-relational mapping). As a result, you’ll create an application with separate pages for each object in a database – bikes, in this case.  Ready for a ride? Let’s go!

🆕 Topics: 

 

Furthermore, we’ve released the Random Forest from ScratchDatabases for Sales, and Nobel Laureates projects from Beta with improved features and functionality for learners.

Kotlin

🆕 Topics: 

 

Additionally, the JSON Database project was released from Beta.

C++

🆕 Topics: For loop statementIf/else conditional statementJump statementsSwitch conditional statementWhile loop statementFunctionsOverloaded functionsParameters and arguments in functionsReturn in functionsArithmetic operatorsComparison operatorsIncrement and decrement operatorsLogical operatorsOperator precedence and associativity rules

Java

🆕 Topics: Greedy algorithmsConvert text inputIntroduction to HashSet

Go

🆕 Topic: CRUD operations – update

Frontend

🆕 Topics: 

 

Additionally, the URL Shortener project was released from Beta.

System administration and DevOps

🆕 Topics: ExpressionsMultiple stage buildingRunning a pod with a simple applicationUtilization of resources in a pod

Math

🆕 Topic: Probabilities as frequencies

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 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.

Happy learning!

September 18, 2023:

Introducing the Space integration for Jira Cloud

We believe that well-organized processes are crucial for building software efficiently. With this in mind, we're taking an issue-centric approach to software development that seamlessly integrates coding into the pipeline, boosting developer productivity and reducing friction.

As an extensible platform, Space aims to provide a similar issue tracking experience for both external issue trackers and Space issues. Today, we're happy to take the first step and introduce the Space integration for Jira Cloud, which allows you to:

  • Preview Jira issues in Space

  • Create Jira issues from Space

  • Automatically link Jira issues to commits and merge requests

For more information and to install the integration, head over to this page

October 13, 2023:

updates and improvements to YouTrack

Knowledge Base Updates

This release includes a handful of features designed to make your knowledge base experience even better.

Feature

Description

Inline Comments

With inline comments, you can now annotate specific parts of text from articles in the knowledge base. This lets you express your thoughts and ask questions related to the highlighted content. You can also use this feature to start and resolve threaded discussions directly in an article.

PDF Export

A new option lets you export articles as PDF files, which means you can share content from your knowledge base anywhere you like, online or off.

Article Statistics

Starting from the 2023.2 release, you can track how many people are viewing and linking to your content.

Helpdesk Improvements

Following the initial release of helpdesk projects in YouTrack 2023.1, we listened to your feedback and added some valuable new features to enhance your support experience.

Feature

Description

CCs

Tickets in helpdesk projects now include the option to add reporters and other users as CCs. This means you can keep all concerned parties up to date on every response and interaction.

Creating Tickets for Other Users

Helpdesk agents can now create tickets on behalf of any other user in the system. New search queries have been added to help agents and reporters find these tickets.

Other Enhancements

Feature

Description

Zero Inbox for the Notification Center

You now have the ability to mark reactions and mentions as read, which means you can see an empty feed when you have read all your notifications.

Updated Workspace Settings for Lite UI

The workspace preferences that let you customize the positions of the panels for custom fields and links in YouTrack Classic are now available in YouTrack Lite as well.

Smart Suggestions for Search Queries

We've improved the logic behind the auto-completion for search queries to de-prioritize suggestions that are not likely to return matches. This means you should always see suggestions that are relevant to your current context as you refine your search criteria.

Invitations for New Users from Project Settings

YouTrack now sends invitations to new users who are added to a project team using their email address. This helps you create accounts for new teammates directly in the project settings.

Okta Synchronization

We've updated the built-in authentication module for Okta to let you sync group memberships and custom attributes on a set schedule.

New Options for Opening the Command Dialog

A new option in the Apply Command dialog in YouTrack Lite lets you choose whether to open the dialog using a standard keyboard shortcut or by pressing any key. This means you can limit this action so you don't trigger it accidentally.

Turkish Language Support

Thanks to contributions from our community translation project, you can now start using YouTrack in Turkish.

This new language option is available at the global level or as a per-user preference.

Discontinued Features

Feature

Description

Custom Shortcut Schemes

We have removed support for custom keyboard shortcut schemes. This means that administrators can only select the default shortcut scheme or the alternative scheme for Slavic-language keyboards.

Jabber Notifications

Given the ongoing decline in popularity compared to other messaging platforms, we have decided to discontinue support for notifications over Jabber (XMPP).

MSI Distribution

Starting from YouTrack 2023.2, we no longer distribute the application as a Windows Installer package. System administrators will need to use another distribution to upgrade an existing MSI installation. We recommend that you upgrade your installation using our Docker Container.

Integration with Upsource

As JetBrains has discontinued technical support for Upsource, we have also dropped support for integrations between Upsource and YouTrack.

Aug 24, 2023
Sep 6, 2023
Sep 18, 2023
Oct 13, 2023
bottom of page