<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Dev Tips</title><link>https://dev-tips.com/</link><description>Tips, tricks, techniques, tutorials, and tidbits for software developers</description><atom:link href="https://dev-tips.com/feed" rel="self" type="application/rss+xml"></atom:link><language>en-US</language><lastBuildDate>Mon, 03 Jul 2023 22:06:11 +0000</lastBuildDate><copyright>© Dev Tips 2023</copyright><item><title>Use a .mailmap file to merge, consolidate, or replace author names and email addresses in Git</title><link>https://dev-tips.com/git/use-a-mailmap-file-to-merge-consolidate-or-replace-author-names-and-email-addresses-in-git</link><guid>https://dev-tips.com/git/use-a-mailmap-file-to-merge-consolidate-or-replace-author-names-and-email-addresses-in-git</guid><description>A handy trick to unify multiple author identities (i.e. names and email addresses) and simplify tracking commits, especially in teams with different machines or Git clients.</description><pubDate>Mon, 03 Jul 2023 20:56:03 +0000</pubDate></item><item><title>LTR/RTL text direction support and localized content examples in Storybook</title><link>https://dev-tips.com/storybook/ltr-rtl-text-direction-support-and-localized-content-examples-in-storybook</link><guid>https://dev-tips.com/storybook/ltr-rtl-text-direction-support-and-localized-content-examples-in-storybook</guid><description>Toggling stories and their content between LTR and RTL text direction in Storybook does not require an add-on and is possible using Storybook’s built-in global types.</description><pubDate>Fri, 03 Feb 2023 11:14:47 +0000</pubDate></item><item><title>Short-circuiting promises using timeouts in JavaScript</title><link>https://dev-tips.com/javascript/short-circuiting-promises-using-timeouts-in-javascript</link><guid>https://dev-tips.com/javascript/short-circuiting-promises-using-timeouts-in-javascript</guid><description>In case a promise may need too long to resolve, short-circuiting it using a timeout ensures good and fail-safe user experience.</description><pubDate>Fri, 20 May 2022 14:39:46 +0000</pubDate></item><item><title>Feature branch deployment and preview environment in GitLab CI</title><link>https://dev-tips.com/gitlab/feature-branch-deployment-and-preview-environment-in-gitlab-ci</link><guid>https://dev-tips.com/gitlab/feature-branch-deployment-and-preview-environment-in-gitlab-ci</guid><description>GitLab’s built-in environment capabilities facilitate feature branch deployments of both static applications (e.g. SPAs, Storybook, SSG) and dynamic applications.</description><pubDate>Tue, 29 Mar 2022 21:24:47 +0000</pubDate></item><item><title>Rename case-sensitive files in Git on macOS</title><link>https://dev-tips.com/git/rename-case-sensitive-files-in-git-on-macos</link><guid>https://dev-tips.com/git/rename-case-sensitive-files-in-git-on-macos</guid><description>As macOS is case-insensitive, simply renaming a file won’t be recognized as a change in Git. This can be handled by using »git mv« instead.</description><pubDate>Sun, 02 Jan 2022 20:53:09 +0000</pubDate></item><item><title>Passing Web Component HTML attributes to React</title><link>https://dev-tips.com/react/passing-web-component-html-attributes-to-react</link><guid>https://dev-tips.com/react/passing-web-component-html-attributes-to-react</guid><description>When wrapping React into a native Web Component, you may want to pass HTML attributes of the custom element to your React component/application in order to work with these values.</description><pubDate>Fri, 12 Nov 2021 09:51:57 +0000</pubDate></item><item><title>Change the author and committer of a Git commit</title><link>https://dev-tips.com/git/change-the-author-and-committer-of-a-git-commit</link><guid>https://dev-tips.com/git/change-the-author-and-committer-of-a-git-commit</guid><description>Git allows to set/change the name and email address of both the author and committer of a commits. This can be helpful if you need to commit someone else’s work.</description><pubDate>Wed, 27 Oct 2021 06:28:30 +0000</pubDate></item><item><title>Anonymize author names for historical commits in Git</title><link>https://dev-tips.com/git/anonymize-author-names-for-historical-commits-in-git</link><guid>https://dev-tips.com/git/anonymize-author-names-for-historical-commits-in-git</guid><description>When handing off a repository (e.g. to another company), you may want or need to pay attention to privacy concerns like names and email addresses of developers in the repository history. Using rebasing, you can anonymize author names in a quick and automated way.</description><pubDate>Tue, 26 Oct 2021 20:29:31 +0000</pubDate></item><item><title>Conditional mandatory properties depending on other properties in TypeScript</title><link>https://dev-tips.com/typescript/conditional-mandatory-properties-depending-on-other-properties-in-typescript</link><guid>https://dev-tips.com/typescript/conditional-mandatory-properties-depending-on-other-properties-in-typescript</guid><description>Learn how you can facilitate union types to implement types where the necessity of specific properties can be defined depending on other properties in the same type.</description><pubDate>Mon, 18 Oct 2021 10:12:42 +0000</pubDate></item><item><title>Resolving JavaScript promises from the outside using the »Deferred« pattern</title><link>https://dev-tips.com/javascript/resolving-javascript-promises-from-the-outside-using-the-deferred-pattern</link><guid>https://dev-tips.com/javascript/resolving-javascript-promises-from-the-outside-using-the-deferred-pattern</guid><description>Native promises in JavaScript don’t expose public »resolve« and »reject« methods. However, if you need to resolve a promise from the outside, e.g. to pause or delay asynchronous operations, you can simply use a custom »Deferred« class.</description><pubDate>Sat, 03 Jul 2021 21:19:14 +0000</pubDate></item><item><title>Exporting outputs from CDK and CloudFormation to environment variables or ».env« files</title><link>https://dev-tips.com/aws/exporting-outputs-from-cdk-and-cloudformation-to-environment-variables-or-dotenv-files</link><guid>https://dev-tips.com/aws/exporting-outputs-from-cdk-and-cloudformation-to-environment-variables-or-dotenv-files</guid><description>When running an application involving different services on AWS, you may need to export infrastructure output (e.g. API endpoints) as environment variables or ».env« files for further use (e.g. SPA frontends such as React or Vue.js).</description><pubDate>Sat, 26 Jun 2021 21:19:14 +0000</pubDate></item><item><title>Deploying updates to ECS Fargate services for every ECR push with AWS CodePipeline and AWS CDK</title><link>https://dev-tips.com/aws/deploying-updates-to-ecs-fargate-services-for-every-ecr-push-with-aws-codepipeline-and-aws-cdk</link><guid>https://dev-tips.com/aws/deploying-updates-to-ecs-fargate-services-for-every-ecr-push-with-aws-codepipeline-and-aws-cdk</guid><description>How to setup your AWS ECS Fargate service so it automatically gets re-deployed once its ECR image gets updated for continuous delivery with AWS CodePipeline in AWS CDK.</description><pubDate>Sun, 20 Jun 2021 09:12:44 +0000</pubDate></item><item><title>Using »jq« to filter JSON output</title><link>https://dev-tips.com/tools/using-jq-to-filter-json-output</link><guid>https://dev-tips.com/tools/using-jq-to-filter-json-output</guid><description>»jq« is a lightweight command-line JSON processor based on the concept of filters operating over a JSON stream. There are numerous predefined functions/filters that can easily be combined using pipes to quickly create and apply complex operations and transformations.</description><pubDate>Sat, 12 Jun 2021 15:45:01 +0000</pubDate></item><item><title>»Big O« notation</title><link>https://dev-tips.com/algorithms/big-o-notation</link><guid>https://dev-tips.com/algorithms/big-o-notation</guid><description>How the notation works, what it is used for, and examples for the most common time complexities (constant, linear, logarithmic, quadratic, and exponential) in JavaScript.</description><pubDate>Sat, 05 Jun 2021 19:11:34 +0000</pubDate></item><item><title>A/B tests with React and Google Optimize or Optimizely</title><link>https://dev-tips.com/frontend/a-b-tests-with-react-and-google-optimize-or-optimizely</link><guid>https://dev-tips.com/frontend/a-b-tests-with-react-and-google-optimize-or-optimizely</guid><description>Due to React re-rendering the DOM autonomously (and thus unpredictably), it’s not possible to use the usual WYSIWYG (»What You See Is What You Get«) approach of A/B testing tools like Google Optimize or Optimizely used by non-developers to maintain A/B tests.</description><pubDate>Sat, 29 May 2021 09:23:30 +0000</pubDate></item><item><title>Modernize legacy frontends from inside-out via SPA injection</title><link>https://dev-tips.com/frontend/modernize-legacy-frontends-from-inside-out-via-spa-injection</link><guid>https://dev-tips.com/frontend/modernize-legacy-frontends-from-inside-out-via-spa-injection</guid><description>By embedding a new single-page application (SPA) into a legacy website or application and slowly expanding its functionality, you can modernize frontends from inside-out.</description><pubDate>Sat, 22 May 2021 23:30:09 +0000</pubDate></item><item><title>Rendering React applications as native Web Components</title><link>https://dev-tips.com/react/rendering-react-applications-as-native-web-components</link><guid>https://dev-tips.com/react/rendering-react-applications-as-native-web-components</guid><description>Learn how to render a React application created with »Create React App« in an isolated native Web Component to make use of Shadow DOM and encapsulate your application, e.g. for micro-frontend architectures or SPA injection.</description><pubDate>Sat, 15 May 2021 11:47:53 +0000</pubDate></item><item><title>Testing multiple values using table-driven tests in Jest</title><link>https://dev-tips.com/jest/testing-multiple-values-using-table-driven-tests-in-jest</link><guid>https://dev-tips.com/jest/testing-multiple-values-using-table-driven-tests-in-jest</guid><description>How table-driven tests in Jest can help you avoiding writing boilerplate for similar test cases.</description><pubDate>Sun, 09 May 2021 09:44:56 +0000</pubDate></item><item><title>GitLab CI YAML configuration linting</title><link>https://dev-tips.com/gitlab/gitlab-ci-yaml-configuration-linting</link><guid>https://dev-tips.com/gitlab/gitlab-ci-yaml-configuration-linting</guid><description>If you want to test the validity of a GitLab CI YAML configuration before committing it to the repository, GitLab provides a built-in linting tool that allows checking for syntax/logical errors.</description><pubDate>Sat, 01 May 2021 17:01:04 +0000</pubDate></item><item><title>Sharing/Extending configuration between GitLab CI jobs</title><link>https://dev-tips.com/gitlab/sharing-extending-configuration-between-gitlab-ci-jobs</link><guid>https://dev-tips.com/gitlab/sharing-extending-configuration-between-gitlab-ci-jobs</guid><description>Have you ever wanted to execute a GitLab CI job for multiple environments and copied blocks of YAML several times? YAML anchors, extending, and hidden keys to rescue!</description><pubDate>Sat, 24 Apr 2021 09:34:21 +0000</pubDate></item></channel></rss>