Yes, GitHub’s Copilot Can Leak (Real) Secrets

There has been a growing focus on the ethical and privacy concerns surrounding advanced language models like ChatGPT and OpenAI GPT technology. These concerns have raised important questions about the potential risks of using such models. However, it is not only these general-purpose language models that warrant attention; specialized tools like code completion assistants also come with their own set of concerns.

A year into its launch, GitHub’s code-generation tool Copilot has been used by a million developers, adopted by more than 20,000 organizations, and generated more than three billion lines of code, GitHub said in a blog post.

Leveling Up Your Unity Coroutines: Advanced Patterns, Debugging, and Performance Optimization

Welcome to the final installment of our comprehensive series on Unity's Coroutines. If you've been following along, you've already built a strong foundation in the basics of coroutine usage in Unity. Now, it's time to take your skills to the next level. In this article, we will delve deep into advanced topics that are crucial for writing efficient and robust coroutines. 

You might wonder, "I've got the basics down, why delve deeper?" The answer lies in the complex, real-world scenarios you'll encounter in game development. Whether you're working on a high-performance 3D game or a real-time simulation, the advanced techniques covered here will help you write coroutines that are not only functional but also optimized for performance and easier to debug.

What Role Will Open-Source Hardware Play in Future Designs?

Open-source software has changed the face of the software industry for good. Now, open-source hardware promises to do the same for the electronics sector.

These platforms have been popular among hobbyists for years. As the IoT grows and production costs rise, the trend is creeping into commercial integrated circuit design, too. Where it proceeds from here will reshape electronics design. Here’s what that could look like.

What Is Dynamic Sampling and How It Works

Sometimes you may want to limit the amount of analytics data coming into your API management tool. This could be because you want to exclude specific traffic, such as internal or health check traffic, or you may want to reduce unnecessary data to control cost. Dynamic sampling does just this. Dynamic sampling lets you control which API calls are logged to your API management tool based on customer or API behavior. Intelligently extrapolate metrics for accurate reporting even with multiple sample rates so that no matter what rules or sample rates you have set up, you can be sure you are still seeing an accurate representation of your data.

Dynamic sampling is controlled by setting up sampling rules in the API management tool's dashboard. You can create rules based on criteria such as request path, response status codes, user or company behaviors, and more. You can also control the applied sample rate for each rule. The sample rate is the percentage of events that will make their way into your API management tool. For example, if you set a rule to sample 50% of events, your management tool will log half of the matching events intelligently (and not just log every other event to meet the 50% sampling rate).

Google Bard vs. ChatGPT: Which Tool Is Better for Your Business?

Selecting the right automated text generation tool is a crucial decision for businesses. Google Bard and ChatGPT are leading options in this space, each offering unique functionalities. This article will scrutinize the strengths and weaknesses of both platforms to help you make an informed choice. Whether your focus is customer service, content creation, marketing, or something else, understanding how these tools perform is vital. We'll examine different use cases to give you a comprehensive view of what each has to offer. Keep reading to find out which of these tools may be the best fit for your company's specific needs.

Which Tool Is Better for Your Business?

Although both tools are powerful right now, there are certain areas where one tool beats the other. Let’s take a look at how you can use each tool to facilitate efficiency in your organization.

How To Implement OAuth User Authentication in Next.js

In this article, we will learn how to add user authentication with OAuth providers in your Next.js app. To do so, we’ll be using NextAuth.js, which is a user authentication solution that simplifies the whole process and has built-in support for many popular sign-in services.

What’s OAuth?

OAuth (Open Authorization) is an open standard for access delegation, commonly used as a way for Internet users to grant websites or applications access to their information on other websites but without giving them the passwords. 

Unleashing the Power of Hyper-V: A Comprehensive Overview

Virtualization has emerged as a crucial tool for businesses looking to manage their IT infrastructure with greater efficiency, flexibility, and cost-effectiveness in today’s rapidly changing digital environment. Microsoft’s Hyper-V is a top virtualization platform that enables companies to maximize the use of their hardware resources. Virtualization is now an essential component of contemporary computing systems due to the constantly changing information technology landscape. Hyper-V, one of the top virtualization platforms, has consistently pushed the envelope of innovation, enabling companies to maximize their resources, streamline their processes, and cut costs.

This article explores the state-of-the-art advancements in Hyper-V, highlighting its pivotal role in shaping the virtualization landscape.

The Emergence of Micro Frontends: Integrating With Next.js

This methodology allows different services to be developed, deployed, and scaled independently by different teams. The success of this architectural style has inspired a similar approach in the world of frontend development: micro frontends.

What Are Micro Frontends?

Micro frontends extend the principles of microservices to the frontend. The idea is to decompose a web application’s UI into smaller, semi-independent "micro" applications that work loosely together. Each team owns a specific feature or part of the application, with full control over their domain, from the database to the user interface.

Libcurl C++ CURLE_FAILED_INIT. SSH Error -43.

Hello all. I'm relatively new to libcurl C++, and I have been hopelessly stuck.
Bit of a background for this app. It is very legacy, having been made in the early 2000s. LPSTRs abound. It looks in FTPs for files from suppliers (who have an SFTP they interact with and a script grabs files from that and puts them on the FTP) and it processes them and sends the orders to our warehouse. We have a security item to cut out the FTP, which means making a C/C++ program interact with SFTPs directly. That is a long story short.
To that end, we implemented libcurl C++. It works with SFTPs that are through our b2b2 domain, but not with SFTPs that interact with ftp2 domains. Unfortunately, we are also being forced to migrate all the b2b2 SFTPs to our ftp2 domain.
The error is CURLE_FAILED_INIT, and CURLE_ERRORBUFFER further expands that to "Failure establishing ssh session: -43, Failed getting banner". I assume it does not mean Bruce Banner. I have Googled so much I have nightmares and nothing seems to work, like retries and CURLOPT_SSL_VERIFYHOST being 0L. I contacted our networking team and they confirmed the issue is NOT on their end. Same story with the team that creates and manages the SFTPs. I have stumped a lot of people with this.
The code I have follows:

struct SftpConnectionInfo {
    std::string strUsername;
    std::string strPassword;
    std::string strServerPath;
};


    struct GetDirListData {
    std::string strFilePrefix;
    std::vector<std::string> strMatchedFilenames;
};




static size_t GetDirListCallbackFunction(char* izard, size_t size, size_t nmemb, GetDirListData* dirListData)
{
    size_t totalSize = size * nmemb;
    std::string strFilename = izard;
    const size_t underscorePos = strFilename.find("_");
    std::string strFilePrefix = dirListData->strFilePrefix;
    std::string strPrefixOnFile = (strFilename.substr(0, underscorePos));
    std::transform(strPrefixOnFile.begin(), strPrefixOnFile.end(), strPrefixOnFile.begin(), ::toupper);
    std::transform(strFilePrefix.begin(), strFilePrefix.end(), strFilePrefix.begin(), ::toupper);
    if (totalSize > 0 && strcmp(strFilePrefix.c_str(), strPrefixOnFile.c_str()) == 0)
    {
        dirListData->strMatchedFilenames.emplace_back(izard, totalSize);
    }
    return totalSize;
}



BOOL GetDirectoryListFromSFTP(SftpConnectionInfo connectionInfo, GetDirListData *dirListData)
{
    CURL* curl;
    CURLcode result = CURLE_GOT_NOTHING;
    char errbuff[CURL_ERROR_SIZE];
    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();

    if (curl)
    {
        curl_easy_setopt(curl, CURLOPT_URL, connectionInfo.strServerPath.c_str());
        curl_easy_setopt(curl, CURLOPT_USERNAME, connectionInfo.strUsername.c_str());
        curl_easy_setopt(curl, CURLOPT_PASSWORD, connectionInfo.strPassword.c_str());
        curl_easy_setopt(curl, CURLOPT_PROTOCOLS, CURLPROTO_SFTP);
        curl_easy_setopt(curl, CURLOPT_DIRLISTONLY, 1L);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, GetDirListCallbackFunction);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, dirListData);
        curl_easy_setopt(curl, CURLOPT_SSL_CIPHER_LIST, "+diffie-hellman-group1-sha1");
        curl_easy_setopt(curl, CURLOPT_SSH_AUTH_TYPES, CURLSSH_AUTH_PASSWORD);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
        curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuff); // Will provide a detailed error message if a CURL error occurs.
        errbuff[0] = 0; // Must make sure this buffer is empty prior to use.
        result = curl_easy_perform(curl);
    }

    curl_easy_cleanup(curl);
    curl_global_cleanup();
    return result == CURLE_OK;
}

That code just looks in the SFTP to find files with the various prefixes, like order and ack. I have put breakpoints in the callback function, but it does not seem to get there. The error appears on the curl_easy_perform line.
I have also tried to do CURLOPT_VERBOSE, but for some reason no matter what I try with that the output file for that remains empty.
We are going to be working on a modernized replacement for this eventually, but another app is ahead of it in that queue so this change needs to be done in the meantime.

Anyone have any ideas to help?

Thank you! <3

Feature Flags for CI/CD: Heads or Tails, You Always Win

What Are Feature Flags?

Feature flags are a software development technique that help to turn certain functionality on and off during runtime without the deployment of code. For both feature flags and modern development in general, it is always focused on the race to deploy software faster to the customers. However, it is not only that the software has to reach the customer faster, but it also has to be done with lesser risk. Feature flags are a potent tool (set of patterns or techniques) that can be used to reinforce the CI/CD pipeline by increasing the velocity and decreasing the risk of the software deployed to the production environment. Feature flags are also known as feature bits, feature flippers, feature gates, conditional features, feature switches, or feature toggles (even though the last one may have a subtle distinction which we will see a bit later).

Feature flags help to control and experiment over the feature lifecycle. They are a DevOps best practice that are often observed in distributed version control systems. Even incomplete features can be pushed to production because feature flags help to separate deployment from release. Earlier, the lowest level of control was at the deployment level. Now, feature flags move the lowest level of control to each individual item or artifact (feature, update, or bug fixes) that’s in production which makes it even more granular than the production deployment.

Optimize AWS Costs With CloudWatch’s Advanced Metrics, Dashboards, and Alerts

Understanding how to monitor your AWS costs is vital for businesses of all sizes. As your infrastructure grows, you must view your expenses to prevent budget overruns. Amazon CloudWatch provides an advanced solution, allowing detailed monitoring and customized dashboarding for cost metrics. In this blog, we dive deep into leveraging advanced dashboarding with Amazon CloudWatch to manage and analyze AWS costs efficiently. 

Understanding Amazon CloudWatch in the Context of AWS Costs

Amazon CloudWatch is a monitoring solution and a powerful resource and application tracking tool. Regarding cost metrics, CloudWatch seamlessly integrates with AWS Cost Explorer, enabling you to visualize and understand your AWS spending. 

Sustainable Programming

Sustainable programming refers to the creation of software and applications that are designed and developed with their impact on the environment and society at large in mind.

Today, sustainability has become a global concern and a priority for many companies and organizations worldwide. As a result, it is increasingly common to find sustainable programming initiatives and practices that focus on reducing the environmental impact of technology and computing.

Why Should You Get Rid of Flaky Tests?

Amidst the quest for automation and speed, a common obstacle emerges flaky tests. These seemingly innocent but troublesome tests can undermine the entire CI/CD optimization process.

To understand the nuisance of flaky tests, it's like having a roommate you can more or less count on. When you ask him for a hand, you never know how he'll handle your request. He may or may not pay the rent, and the same goes for chores. When you get home from work, your last yogurt may be waiting for you, or it may be digesting in his belly. That's what we call an unreliable roommate. Despite identical rules, conditions, and environments, he can make random decisions.

Enabling Software Engineering Sustainability for Future Digital Transformations

Sustainable engineering, also known as engineering sustainability or sustainable design, is a discipline in the field of engineering that emphasizes the development of products, systems, and infrastructure with the goal of reducing effects on the environment, society, and economy while maximizing long-term advantages. It entails incorporating sustainability principles into the engineering process to tackle worldwide issues, such as climate change, depletion of resources, and social disparities.

Software engineering sustainability, also referred to as software engineering or green software development, is an approach to designing and developing software that aims to minimize its social and economic effects throughout its lifespan. This approach acknowledges the influence of software on sustainability as it affects energy consumption, resource utilization, and societal factors. Let’s delve into some facets of software engineering sustainability. 

How To Build Computer Vision-Driven Car Damage Detection

Computer vision, as an integral component of artificial intelligence, is gaining increasing significance within the insurance sector. Its implementation yields manifold advantages, such as process automation, cost reduction, heightened precision, and an enhanced customer experience.

Computer vision technology brings many opportunities, including the replacement of manual inspection to a certain extent. That’s why the Intelliarts team found it promising to start working on an automated car damage assessment project. 

Tutorial for Building an Ethereum DApp With Integrated Web3 Monitoring

This post walks through the steps to creating a simple Ethereum DApp using Web3.js and Truffle and setting up monitoring of the API transactions sent to the blockchain. This article also provides an explanation of various pieces of technology involved in developing DApps.

What Is Blockchain?

Decentralized Applications (or DApps) are applications that do not rely on a centralized backend running in AWS or Azure that power traditional web and mobile applications (outside of hosting the frontend code itself). Instead, the application interacts directly with a blockchain, which can be thought of as a distributed cluster of nodes analogous to applications interacting directly with a “masterless” cluster of Cassandra nodes with full replication on every peer in an untrusted peer-to-peer network.