News AggregatorTop Benefits of Automation Testing for a Successful Product ReleaseAggregated on: 2022-03-22 03:50:20 Introduction Businesses rely on automation testing to keep up with faster and higher-quality processes that agile development demands. There are many benefits of automation testing, such as reducing costs, avoiding delays, and helping to create a great customer experience. Unplanned or ad hoc testing can lead to discrepancies and issues that will directly affect the business deliverables. Testing is an essential part of product development, so businesses need to have tests ever-ready. Developers have always been finding bugs and resolving issues, but no matter how experienced you are in solving such problems, there will be some bugs that you can never catch on your own. Testers use regression testing to stabilize the product for faster releases and quickly fix issues after migrating the code to the production environment. Automation testing has numerous benefits in comparison to manual testing. Automating increases the effectiveness of processes, expedites execution, and maximizes test coverage. It further removes chances of repetitive mistakes/tasks by testers, reduces human error, and provides instant feedback for quick resolution of issues, which improves overall efficiency in all activities. Let’s explore the advantages of automation testing in software development in detail as we move further. View more...5 Keys to Successfully Implement Team Topologies in Your OrganizationAggregated on: 2022-03-22 02:20:20 Effective software teams are essential for any organization to deliver value continuously and sustainably. But this effectiveness is, oftentimes, hard to attain. In their book “Team Topologies,” Matthew Skelton and Manuel Pais present a “practical, step-by-step adaptive model for organization design and team interaction, where team structures and communication pathways are able to evolve together with technological and organizational maturity.” View more...What Do You Mean By a “Distributed Database?”Aggregated on: 2022-03-22 02:05:20 The earthly landscape we walk upon usually changes very slowly. It’s measurable in centimeters or inches per year. But the digital landscape, and specifically the distributed database landscape, is changing at a massive rate. You can read more about the tremendous changes currently occurring in the industry in our recent blog on this next tech cycle. Before we can look at the way these changes are impacting the distributed database landscape, we have to define what we mean by the term “distributed database.” That’s the purpose of this article. View more...Error Handling Across Different LanguagesAggregated on: 2022-03-22 00:50:20 I've tried Go in the past, and the least I could say is that I was not enthusiastic about it. Chief among my griefs was how the language handled errors, or more precisely, what mechanism it provided developers with to manage them. In this post, I'd like to describe how a couple of popular languages cope with errors. A Time Before Our Time I could probably go back a long time, but I needed to choose a baseline at some point. In this post, the baseline is C. View more...The Dangers of Fatal LoggingAggregated on: 2022-03-22 00:50:20 I want to talk about fatal logging. It’s practically always a bad idea. Let me explain… I was recently reviewing some code written in Go, where I saw this pattern in a constructor function: View more...Dynamic Lists With SwiftUI Using Swift Concurrency for Asynchronous Data LoadingAggregated on: 2022-03-22 00:05:20 In a previous blog post, I described an implementation of lists in SwiftUI where items are loaded dynamically as the user scrolls and additional data for each item is fetched asynchronously. I also wanted to provide a reusable infrastructure for lists where you could concentrate only on the data fetching logic and the presentation of a single list item, but didn’t quite reach that goal. In this blog post, I try to improve the list infrastructure and the separation of concerns between the data model and UI. I also want to test the Swift Concurrency features (async/await etc) for the asynchronous parts, and see how well it plays with SwiftUI. View more...Debugging Java Equals and Hashcode Performance in ProductionAggregated on: 2022-03-21 23:35:20 I wrote a lot about the performance metrics of the equals method and hash code in this article. There are many nuances that can lead to performance problems in those methods. The problem is that some of those things can be well hidden. To summarize the core problem: the hashcode method is central to the java collection API. Specifically, with the performance of hash tables (specifically the Map interface hash table). The same is true with the equals method. If we have anything more complex than a string object or a primitive, the overhead can quickly grow. View more...How the which Command Works on LinuxAggregated on: 2022-03-21 23:35:20 When we are running servers, or even our local computer, different applications may install the same piece of software multiple times. For example, it is not uncommon to accidentally have two versions of Node.JS installed on a server or computer. In the example where we have multiple versions of Node.JS, it can be confusing which versions are running, or which will be used when we run the node command in a terminal window. View more...From IBM Integration Bus to IBM App Connect Enterprise in Containers (Part 4b)Aggregated on: 2022-03-21 23:35:20 In Scenario 4a, we showed you how to deploy an IBM MQ queue manager in a container using the Kubernetes (OpenShift) command-line interface (CLI). That showed that it’s really just a couple of commands and all the detail is really in the definition files. That’s certainly the approach you’ll want to move to for production so you can automate the deployment through pipelines. However, sometimes it’s useful to just be able to perform actions through a user interface without having to know the detail eg. command lines, and file formats, and that’s what we’re going to look at in this scenario. Installing the IBM MQ Operator IBM MQ Operator that we discussed in Scenario 4a will once again be used under the covers to perform the deployment. The operator also provides us with the user interface which, as you will discover, is neatly integrated with the OpenShift web console. View more...Is Your Dev Team TOO Big to Succeed? w/ SAIC’s Bob RitchieAggregated on: 2022-03-21 23:35:20 Modern problems require modern solutions, right? The problem is, it’s becoming increasingly difficult to understand what solutions are required for a given problem and even harder to task a team with finding them. View more...CockroachDB TIL: Volume 6Aggregated on: 2022-03-21 22:50:20 This is my series of articles covering short "Today I learned" topics as I work with CockroachDB. Topic 1: Cockroach Init Container Use init container to initialize Cockroach and exit, you no longer need to explicitly run init when you bring up CockroachDB. View more...Playwright vs Selenium: A ComparisonAggregated on: 2022-03-21 22:20:20 What Is Playwright? Playwright by Microsoft is the newest addition to the Headless Browser Testing frameworks in popular use. Built by the same team which created Puppeteer (Headless Browser Testing Framework for Google Chrome), Playwright, too, is an open-source NodeJS based framework. However, it provides wider coverage for cross-browser testing by supporting Chrome, Firefox, and WebKit, while Puppeteer supports Chrome and Chromium browsers only. Playwright is compatible with Windows, Linux, and macOS, and can be integrated with major CI/CD servers such as Jenkins, CircleCI, Azure Pipeline, TravisCI, etc., in addition to the testing frameworks like Jest, Jasmine, Mocha. Besides JavaScript. View more...Typescript Basics: How keyof WorksAggregated on: 2022-03-21 21:05:20 In Javascript and Typescript, we often run into situations where we have an object with a certain set of properties, and then another variable that matches one or many keys in that object. This can cause all sorts of issues if the keys can be edited. For example, imagine the following situation: JavaScript let myUser = { name: "John Doe", email: "xyz@fjolt.com", age: 15 } function getUserDetails() { let ourKeys = [ "name", "red", "age" ]; let constructedObject = {}; ourKeys.forEach(function(item) { constructedObject[item] = myUser[item]; }); return constructedObject } We could imagine that ourKeys maybe coming from a database, or an API. For the purposes of explanation, I've put it in a simple array. When we run through each of these keys using our forEach loop, we output details from myUser into a new Object, called constructedObject. View more...What Is JDBC Connection? | JDBC Connection ExampleAggregated on: 2022-03-21 20:05:20 In the video below, we take a closer look at JDBC Connection with examples. Let's get started! View more...Make Your Team Miserable With These Popular Project-Management Anti-PatternsAggregated on: 2022-03-21 19:05:20 Image by István Mihály from Pixabay Managers Are in the Best Position To Cause Misery As managers, we’re in the best position to cause sadness on our teams. If you aspire to be truly great at inflicting pain on your team, pay attention! We’ll cover three of the most popular ways. View more...The Ultimate Guide on Composite IDs in JPA EntitiesAggregated on: 2022-03-21 18:05:19 Previously, we talked about IDs generated in database and applications, discussed the pros and cons of various strategies for generation and implementation details. Now it is time to discuss less popular but still useful ID type: composite ID. Do We Need Composite Keys at All? It might seem that composite keys are not needed in modern applications, but it is not like this. Recently there was a poll on Twitter, and results showed that about 55% of developers would use composite keys if required: View more...Oracle Fusion Cloud vs. Propel PLMAggregated on: 2022-03-21 03:50:19 Digital innovation is not only evolving the product's features but also the way they are designed and manufactured. To remain relevant in the changing market dynamics, enterprises must continuously strategize ways to optimize operational efficiency and infrastructure costs, improve product quality, and reduce time to market to accelerate the overall growth of the business. Enterprises are required to embrace digital transformation and innovate at a faster rate. However, to achieve this, it is essential to choose the right PLM software. With several PLM options available on the market, it can be a daunting challenge to choose the right PLM software that best fits your business needs. That's why we have picked two industry-leading SaaS PLM platforms: Oracle Fusion Cloud and Propel PLM, and we will compare the differences between both solutions so that you can make an informed decision for your next PLM investment. View more...A Complete Guide to Deploying Github Projects on Amazon EC2Aggregated on: 2022-03-21 03:20:19 GitHub Actions: Performs the build and test (Continuous Integration) AWS CodeDeploy: Automates the deployment process to EC2 (Continuous Deployment) View more...What Are The Key Challenges a Platform Team Experiences?Aggregated on: 2022-03-21 03:20:19 With the increased reliance on various technologies for software development, both software and hardware need to grow along with those technologies to provide reliable and secure services. However, this need has led to creating more complex solutions than ever. Thus, the importance of robust infrastructure has come to the forefront to deliver these solutions reliably at a global scale. Due to these facts, the platform team has to face different challenges to provide and maintain this infrastructure without affecting the software development lifecycle (SDLC) or end-users. What Is a Platform Team? We have Dev for development, QA for testing, and likewise, the platform team for managing the infrastructure of an organization. This infrastructure includes both internal SDLC resources like CI/CD pipelines, staging/testing environments, production resources, and in most cases, managing software deployments. The platform team will handle most operational aspects of an SDLC. They are the key component that manages most of DevOps tools and platforms, bringing the full benefits of DevOps. View more...Generating Secure Properties in Mule 4Aggregated on: 2022-03-21 03:20:19 Secure Property Placeholder is an essential standard for keeping sensitive data like User ID and Password secure (encrypted/cypher-text) in the Property file. Securing properties is one of the crucial elements in every Mule project. MuleSoft has introduced a Secure properties generator with a point and click environment that saves time and effort in specific scenarios. This blog will explore both traditional methods — using jar — and modern methods — using secure property generator — of generating secure properties in Mule 4. View more...What China’s Tech Crackdown Means For IoTAggregated on: 2022-03-21 03:20:19 The latest slew of regulation changes by the Chinese Communist Party (CCP) has had a profound effect on the status of IoT companies in China. The gaming industry was the first to feel the wrath of the new CCP legislation. After being torpedoed with penalties and regulatory changes to alter entire areas of business operation, gaming companies like Tencent and NetEase watched the government compare their industry to a type of digital drug addicting the Chinese youth. Now, there is serious cause for concern for the Internet of Things (IoT). Foreign investors have already begun to pull out after seeing a collective $50 billion decrease in the market value of China’s biggest tech corporations. Likewise, the fractious political situation between the CCP and Hong Kong — an international hub for IoT products — has added yet more uncertainty. View more...What Every Java Developer Should Know About Thread, Runnable, and Thread PoolAggregated on: 2022-03-21 02:50:19 Multithreading Is Most Complex And Biggest Part Of Java Multithreading chapters are the most difficult to understand and use in Java. Unfortunately, there are not that many sources where you can get all the answers. Meanwhile, concurrency knowledge is critically important. In this article, I explain the core aspects of multithreading that every Java developer has to know. In this part, we start with the Thread and Runnable subject. Why Is Concurrency Knowledge So Critical? You Can't Get Senior Java Job Without Good Knowledge Of Multithreading Multithreading knowledge almost certainly is the subject of interviews for senior Java positions. Without a clear understanding of multithreading with and without hands-on experience, you most likely will fail. View more...What Is Sanity Testing? - A Brief GuideAggregated on: 2022-03-20 23:35:19 Software testing is crucial in the development and delivery of software. There are various types of software testing, each with its own function in the software development process. One of the most useful tests among them is sanity testing. What Is Sanity Testing? It's a type of software testing that ensures flaws are repaired and that the modifications don't cause any new problems. It's a form of retesting to make sure that any updates or newly introduced features work as planned. The goal of sanity testing is to validate the application's functionality, not to perform extensive testing. It's typically used to fix major bugs. It is done to check that fresh code changes are working properly. The goal is not to test the application's important functionalities, but rather to see if the defects have been fixed. It generally works after a slight adjustment. View more...How to Use JWT SecurelyAggregated on: 2022-03-20 23:35:19 In my articles about Spring Boot Security and LDAP authentication, we implemented JWT as a user information carrier between client and server. You can access those articles from here and here. In this article, we will dig into another concept, usage of JWT securely in a Spring Boot application. JWT (JSON Web Token) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed. You may get detailed information from its official website. View more...Sanity vs Smoke Testing: What’s the DifferenceAggregated on: 2022-03-20 23:35:19 Before we get into sanity vs. smoke testing, it's important to understand the difference between the two. What Is Smoke Testing? Smoke Testing is a software testing procedure that determines whether or not a software build has been delivered and is stable. The QA team does smoke testing to validate that the software is ready for further testing. Smoke testing is often known as "Build Verification Testing" or "Confidence Testing." View more...How To Change Node.JS VersionAggregated on: 2022-03-20 21:35:19 In this quick guide, we'll be looking at the easiest way to change the Node.JS version using nvm. Using NVM To Change node.JS Version First, you will need to install nvm, which stands for node version management. To install nvm, you can do it by running the following script: View more...Testing Golang With httptestAggregated on: 2022-03-20 19:35:19 Go, often referred to as Golang, is a popular programming language built by Google. Its design and structure help you write efficient, reliable, and high-performing programs. Often used for web servers and rest APIs, Go offers the same performance as other low-level languages like C++ while also making sure the language itself is easy to understand with a good development experience. Go’s httptest package is a useful resource for automating your server testing process to ensure that your web server or REST API works as expected. Automating server testing not only helps you test whether your code works as expected; it also reduces the time spent on testing and is especially useful for regression testing. The httptest package is also useful for testing HTTP clients that make outbound requests to remote servers. View more...JVM Memory Architecture and GC Algorithm BasicsAggregated on: 2022-03-20 19:35:19 Purpose This article discusses the basic concept of JDK8 and upwards memory management with heap and stack memory. and the basics of GC and its Algorithms. Importance of Memory Management Java garbage collector doesn't ensure that the heap memory will be completely free, and also, for a developer, it is not possible to force a garbage collector to run at a specific time. So it is helpful to know how memory management in Java works. View more...MongoDB to Couchbase (Part 3): Data TypesAggregated on: 2022-03-20 19:05:19 In the article on MongoDB and Couchbase database objects, we saw the mapping from databases to buckets, collections to collections, documents to documents, and field to fields. The data itself is stored within these fields. The {"field": "value"} is commonly called key-value pairs. Every key has a value and the value is the data. This value self describes the data under BSON or JSON definition in MongoDB and Couchbase. MongoDB uses BSON, Couchbase uses JSON -- both are document-oriented and JSON-based. Couchbase uses JSON exactly, MongoDB uses extended JSON called BSON, binary JSON. View more...A Simple Code Generator Using a Cool Python featureAggregated on: 2022-03-20 19:05:19 For my most recent project, I wrote a couple of code generators - three variants of a Python/Spark application generator and at least four variants of an Airflow DAG generator. Different variants were needed as the requirements and the complexity of the output evolved over a period of time. Using this experience, I will show how you can get started on your journey of writing a code generator using a cool feature of Python.For the purpose of this article, I will use a Python program that generates a basic Python/Spark application to get and display 10 rows of the specified table. The application to be generated is as below Python import os import sys import pyspark from pyspark import SparkContext from pyspark.sql import SQLContext from pyspark.sql import SparkSession spark_session = SparkSession.builder.appName("generator").getOrCreate() try: df = spark_session.sql("select * from user_names") df.show(10, False) except Exception as e: print("Got an error {er}".format(er=str(e))) spark_session.stop() Version 1The simplest method for generating this application is to make use of print statements as below View more...Did We Build The Right Thing? That's What UAT Is About.Aggregated on: 2022-03-20 19:05:19 There are reasons to give key stakeholders the opportunity to officially sign off on a new software release. We need some formal approval from the people who commissioned it, or at least their delegates. This last stage prior to release is commonly called the user-acceptance test and executed in a UAT environment. It’s an indispensable stage, but treating it as the final step in testing is problematic for several reasons. Let me start with a car example. Dealerships are generous with free test drives for the same reason that clothing stores let your try on three different shirts. It’s to let the endowment effect do its dirty work: wearing (or driving) something feels more like you already own it. It's to get a taste for the look and feel, and a catalyst for closing the deal. It's not about really testing the vehicle -- they expect it back unscratched. Toyota doesn’t need their customers taking an active part in their QA process. View more...DynamoDB Partition Key Strategies for SaaSAggregated on: 2022-03-20 18:35:19 Amazon DynamoDB is a fully managed NoSQL database service built for scalability and high performance. It’s one of the most popular databases used at SaaS companies.. We selected DynamoDB for the same reasons as everyone else: autoscaling, low cost, zero downtime. However, at scale, DynamoDB can present serious performance issues. SaaS applications commonly follow a multi-tenant architecture, which means every customer receives a single instance of the software. At scale, this can often lead to hotkey problems due to an uneven partitioning of data in Amazon DynamoDB, which can be resolved with two solutions that will allow the system to scale. When using Amazon DynamoDB for a multi-tenant solution, you need to know how to effectively partition the tenant data in order to prevent performance bottlenecks as the application scales over time. View more...Ultimate Guide to Types in TypeScriptAggregated on: 2022-03-20 16:20:19 TypeScript is a strongly typed language built on top of Javascript. As such, types have to be defined in TypeScript when we write our code, rather than inferred as they normally are in Javascript. In this guide, we'll be diving into how types work in TypeScript, and how you can make the most of them. If you're totally new to TypeScript, start with our guide on making your first TypeScript project. View more...Lessons Learned Moving From On-Prem to Cloud NativeAggregated on: 2022-03-20 16:20:19 Recently, I came across a sample e-commerce application that demonstrates how to use Next.js, GraphQL engine, Postgres, and a few other frameworks to build a modern web application. The application supports basic e-commerce capabilities such as product inventory and order management, recommendation system, and checkout function. This made me curious as to how much effort it would take to turn this application from an on-prem to a cloud-native solution. The original architecture for this sample app looked like the below diagram. You can start the whole setup in a few minutes following this guide. View more...Cookies at the Edge: Not a Baking Blog PostAggregated on: 2022-03-20 16:20:19 I came across an interesting use case for edge compute the other day: cookie management at the edge. It probably won’t be super relevant to a ton of people, but it’s an interesting use case I wanted to share nonetheless. Brief Background About Cookies When most people think of cookies, they picture delicious baked morsels. But we’re not here to talk about those (unfortunately). In the context of web development, cookies are one of the options web developers have to store data. View more...What Are Linear Data Structures?Aggregated on: 2022-03-20 15:50:19 Why should I care? We use these data structures every day in programming. Even if you're already familiar with them, it's helpful to recap them occasionally. View more...What Is JDBC PreparedStatement?Statement vs PreparedStatementAggregated on: 2022-03-20 10:20:19 In the video below, we take a closer look at JDBC PreparedStatement with example and Statement vs PreparedStatement. Let's get started! View more...Query S3 With SQL Using S3 SelectAggregated on: 2022-03-20 09:50:19 S3 Select is an AWS S3 feature that allows developers to run SQL queries on objects in S3 buckets. Here's an example. SQL SELECT s.zipcode, s.id FROM s3object s where s.name = 'Harshil' Previously we wrote about the different ways you can write SQL with AWS. In this article, we will see how to configure and use S3 Select to make working with big datasets easier. View more...Hands-On With Adobe Document Generation APIAggregated on: 2022-03-19 17:35:18 This week Adobe is proud to announce the availability of the Document Generation API as part of Adobe Document Services. This is a powerful new service that enables developers to generate both Word and PDF documents from a template and dynamic data. This new API is fully supported by our Java, .Net, and Node SDKs already and can be used in any other language via a REST API. Let’s take a look at how this works. Document generation is done by combining a Word document that acts as a template along with your data. This data could be hard-coded in a JSON file or fetched on the fly from another API. Adobe Document Generation API will take your Word document template, inject your data, and then output either a Word document or PDF as the result. How about a simple demo? View more...How to Customise SuperTokens APIsAggregated on: 2022-03-19 16:35:18 Auth requirements are quite varied. Therefore any auth solution must provide the ability to customise their APIs. Each solution uses its own terminology for this feature: Keycloak uses “Implementing an SPI” View more...Compare JSON Documents and Apply Patches With TerminusDB and MongoDBAggregated on: 2022-03-19 15:20:18 In this demo tutorial, we will show how the diff and patch operation can be applied to monitor changes in TerminusDB schema, TerminusDB documents, JSON schema, and other document databases like MongoDB. A Little Background on JSON Diff and Patch A fundamental tool in Git’s strategy for distributed management of source code is the concept of the diff and the patch. These foundational operations are what make git possible. Diff is used to construct a patch that can be applied to an object such that the final state makes sense for some value of makes sense. View more...Deploy a Multi-Datacenter Apache Cassandra Cluster in Kubernetes (Pt. 1)Aggregated on: 2022-03-19 14:35:18 The Get Started examples on the K8ssandra site are primarily concerned with spinning up a single Apache Cassandra™ datacenter in a single Kubernetes cluster. However, there are many situations that can benefit from other deployment options. In this series of posts, we’ll examine different deployment patterns and show how to implement them using K8ssandra. Flexible Topologies With Cassandra From its earliest days, Cassandra has included the ability to assign nodes to datacenters and racks. A rack was originally conceived as mapping to a single rack of servers connected to shared resources, like power, network, and cooling. A datacenter could consist of multiple racks with physical separation. These constructs allowed developers to create high-availability deployments by replicating data across different fault domains. This ensured that Cassandra clusters remain operational amid failures ranging from a single physical server, rack, to an entire datacenter facility. View more...JavaScript: Building Table Sorting and PaginationAggregated on: 2022-03-19 14:05:18 As part of my job in managing this blog, I check my stats frequently, and I've noticed that some of my more basic Vue.js articles have had consistently good traffic for quite some time. As I find myself doing more and more with "regular" JavaScript (sometimes referred to as "Vanilla JavaScript", but I'm not a fan of the term) I thought it would be a good idea to update those old posts for folks who would rather skip using a framework. With that in mind, here is my update to my post from over four years ago, Building Table Sorting and Pagination in Vue.js You don't need to read that old post as I think the title is rather descriptive. How can we use JavaScript to take a set of data - render it in a table - and support both sorting and pagination? Here's how I solved this. Before I begin, a quick note. I'll be loading all of my data and while that works with a "sensible" amount of data, you don't want to be sending hundreds of thousands of rows of data to the client and sorting and paging in the client. That being said, I think an entirely client-side solution is absolutely safe if you understand the size of your data and know it's not going to impact performance. View more...Postgres Connection Pooling and ProxiesAggregated on: 2022-03-19 14:05:18 One essential concept that every backend engineer should know is connection pooling. This technique can improve the performance of an application by reducing the number of open connections to a database. Another related term is "proxies," which help us implement connection pools. In this article, we'll discuss connection pooling, implementing it in Postgres, and how proxies fit in. We'll do this while also examining some platform-specific considerations. View more...How the cat Command Works on LinuxAggregated on: 2022-03-19 13:35:18 cat, short for concatenate, is used on Linux and Unix-based systems like MacOS for reading the contents of a file, concatenating the contents with other files, and for creating new, concatenated files. It's also frequently used to copy the contents of files. The syntax for cat is shown below, where x is the file name, and [OPTIONS] are optional settings which alter how cat works. View more...Lessons Learned From Previous ProjectsAggregated on: 2022-03-19 13:35:18 An exciting part of software development is what was unanimously considered good practice at one point in time can be more ambiguous years later. Or even plain wrong. However, you generally need to do it multiple times over time to realize it. Here are my top learnings from my experience in Java projects. Packaging by Layers When I started my developer career in Java, every project organized their classes by layers - controllers, services and DAOs (repositories). A typical project's structure would look like this: View more...What Is Jaro-Winkler Similarity?Aggregated on: 2022-03-19 13:35:18 Why Should I Care? String similarity metrics have various uses; from user-facing search, functionality to spell checkers. There are a few common string similarity metrics. Knowing a little about each will help you to choose the right one, should you ever need to implement something like this yourself. View more...Serverless for SurvivalAggregated on: 2022-03-18 20:05:18 When new technologies arise, we first adopt them for their technical value. If that value proves out, then we reach the magic “crossing the chasm” moment: when a technology jumps to widespread adoption through proven business value and goes mainstream. Some technologies, a very select few, make one more jump forward, however — from mainstream to existential imperative. View more...How To Hire Remote Developers SuccessfullyAggregated on: 2022-03-18 19:35:18 There are many aspects to consider when you want to hire remote developers: the candidate’s technical and soft skills, the region where you hire, how to find a developer, hiring format, and many more. Here, we’ll talk about what a developer needs to work efficiently in the remote format, as well as how to check if this work is efficient. Ask an HR manager about what is important for a remote developer and most likely you will hear that this person should be independent, organized, self-disciplined, structured, etc. That sounds reasonable, but what hides behind these names in reality? Let’s take a thorough look at the candidate requirements from a practical perspective. View more...Asynchronous API Calls: Spring Boot, Feign, and Spring @AsyncAggregated on: 2022-03-18 19:35:18 The requirement was to hit an eternal web endpoint and fetch some data and apply some logic to it, but the external API was super slow and the response time grew linearly with the number of records fetched. This called for the need to parallelize the entire API call in chunks/pages and aggregate the data. Our synchronous feign client: View more... |
|
|