3561 stories
·
2 followers

The guide to Git I never had

1 Share

🩺 Doctors have stethoscopes.
🔧 Mechanics have spanners.
👨‍💻 We developers, have Git.

Have you noticed that Git is so integral to working with code that people hardly ever include it in their tech stack or on their CV at all? The assumption is you know it already, or at least enough to get by, but do you?

Git is a Version Control System (VCS). The ubiquitous technology that enables us to store, change, and collaborate on code with others.

🚨 As a disclaimer, I would like to point out that Git is a massive topic. Git books have been written, and blog posts that could be mistaken for academic papers too. That's not what I’m going for here. I'm no Git expert. My aim here is to write the Git fundamentals post I wish I had when learning Git.

As developers, our daily routine revolves around reading, writing, and reviewing code. Git is arguably one of the most important tools we use. Mastering the features and functionalities Git offers is one of the best investments you can make in yourself as a developer.

So let’s get started

If you feel I missed or should go into more detail on a specific command, let me know in the comments below. And I will update this post accordingly. 🙏

While we are on the topic

If you are looking to put your Git skills to work and would like to contribute to Glasskube, we officially launched in February and we aim to be the no-brainer, default solution for Kubernetes package management. With your support, we can make it happen. The best way to show your support is by starring us on GitHub ⭐

Let’s lay down the foundations

Does Git ever make you feel like Peter Griffin? If you don’t learn Git the right way you run the risk of constantly scratching your head, getting stuck on the same issues, or rueing the day you see another merge conflict appear in your terminal. Let's ensure that doesn’t happen by defining some foundational Git concepts.

Branches

In a Git repository, you'll find a main line of development, typically named "main" or "master" (deprecated) from which several branches diverge. These branches represent simultaneous streams of work, enabling developers to tackle multiple features or fixes concurrently within the same project.

Git branches

Commits

Git commits serve as bundles of updated code, capturing a snapshot of the project's code at a specific point in time. Each commit records changes made since the last commit was recorded, all together building a comprehensive history of the project's development journey.

Git commits

When referencing commits you will generally use its uniquely identified cryptographic hash.

Example:

This shows detailed information about the commit with that hash.

Tags

Git tags serve as landmarks within the Git history, typically marking significant milestones in a project's development, such as releases, versions, or standout commits. These tags are invaluable for marking specific points in time, often representing the starting points or major achievements in a project's journey.

Git tags

HEAD

The most recent commit on the currently checked-out branch is indicated by the HEAD, serving as a pointer to any reference within the repository. When you're on a specific branch, HEAD points to the latest commit on that branch. Sometimes, instead of pointing to the tip of a branch, HEAD can directly point to a specific commit (detached HEAD state).

Stages

Understanding Git stages is crucial for navigating your Git workflow. They represent the logical transitions where changes to your files occur before they are committed to the repository. Let's delve into the concept of Git stages:

Git stages

Working directory 👷

The working directory is where you edit, modify, and create files for your project. Representing the current state of your files on your local machine.

Staging area 🚉

The staging area is like a holding area or a pre-commit zone where you prepare your changes before committing them to the repository.

Useful command here: git add Also git rm can be used to unstage changes

Local repository 🗄️

The local repository is where Git permanently stores the committed changes. It allows you to review your project's history, revert to previous states, and collaborate with others on the same codebase.

You can commit changes that are ready in the staging area with: git commit

Remote repository 🛫

The remote repository is a centralized location, typically hosted on a server (like GitHub, GitLab, or Bitbucket), where you can share and collaborate with others on your project.

You can use commands like git push and git pull to push/pull your committed changes from your local repository to the remote repository.

Getting Started with Git

Well, you have to start somewhere, and in Git that is your workspace. You can fork or clone an existing repository and have a copy of that workspace, or if you are starting completely fresh in a new local folder on your machine you have to turn it into a git repository with git init. The next step, crucially not to be overlooked is setting up your credentials.

Source:  Shuai Li

Credentials set up

When running pushing and pulling to a remote repository you don’t want to have to type your username and password every time, avoid that by simply executing the following command:

git config --global credential.helper store

The first time you interact with the remote repository, Git will prompt you to input your username and password. And after that, you won’t be prompted again

It's important to note that the credentials are stored in a plaintext format within a .git-credentials file.

To check the configured credentials, you can use the following command:

git config --global credential.helper

Working with branches

When working locally it’s crucial to know which branch you are currently on. These commands are helpful:

# Will show the changes in the local repository
git branch

# Or create a branch directly with
git branch feature-branch-name

To transition between branches use:

Additionally to transitioning between them, you can also use:

git checkout 
# A shortcut to switch to a branch that is yet to be created with the -b flag
git checkout -b feature-branch-name

To check the repository's state, use:

A great way to always have a clear view of your current branch is to see it right in the terminal. Many terminal add-ons can help with this. Here is one.

Terminal view

Working with commits

When working with commits, utilize git commit -m to record changes, git amend to modify the most recent commit, and try your best to adhere to commit message conventions.

# Make sure to add a message to each commit
git commit -m "meaningful message"

If you have changes to your last commit, you don’t have to create another commit altogether, you can use the -—amend flag to amend the most recent commit with your staged changes

# make your changes
git add .
git commit --amend
# This will open your default text editor to modify the commit message if needed.
git push origin your_branch --force

⚠️ Exercise caution when utilizing --force, as it has the potential to overwrite the history of the target branch. Its application on the main/master branch should be generally avoided.

As a rule of thumb it's better to commit more often than not, to avoid losing progress or accidentally resetting the unstaged changes. One can rewrite the history afterward by squashing multiple commits or doing an interactive rebase.

Use git log to show a chronological list of commits, starting from the most recent commit and working backward in time

Manipulating History

Manipulating History involves some powerful commands. Rebase rewrites commit history, Squashing combines multiple commits into one, and Cherry-picking selects specific commits.

Rebasing and merging

It makes sense to compare rebasing to merging since their aim is the same but they achieve it in different ways. The crucial difference is that rebasing rewrites the project's history. A desired choice for projects that value clear and easily understandable project history. On the other hand, merging maintains both branch histories by generating a new merge commit.

During a rebase, the commit history of the feature branch is restructured as it's moved onto the HEAD of the main branch

rebase

The workflow here is pretty straightforward.

Ensure you're on the branch you want to rebase and fetch the latest changes from the remote repository:

git checkout your_branch
git fetch

Now choose the branch you want to rebase onto and run this command:

git rebase upstream_branch

After rebasing, you might need to force-push your changes if the branch has already been pushed to a remote repository:

git push origin your_branch --force

⚠️ Exercise caution when utilizing --force, as it has the potential to overwrite the history of the target branch. Its application on the main/master branch should be generally avoided.

Squashing

Git squashing is used to condense multiple commits into a single, cohesive commit.

git squashing

The concept is easy to understand and especially useful if the method of unifying code that is used is rebasing, since the history will be altered, it’s important to be mindful of the effects on the project history. There have been times I have struggled to perform a squash, especially using interactive rebase, luckily we have some tools to help us. This is my preferred method of squashing which involves moving the HEAD pointer back X number of commits while keeping the staged changes.

# Change to the number after HEAD~ depending on the commits you want to squash
git reset --soft HEAD~X
git commit -m "Your squashed commit message"
git push origin your_branch --force

⚠️ Exercise caution when utilizing --force, as it has the potential to overwrite the history of the target branch. Its application on the main/master branch should be generally avoided.

Cherry-picking

Cherry-picking is useful for selectively incorporating changes from one branch to another, especially when merging entire branches is not desirable or feasible. However, it's important to use cherry-picking judiciously, as it can lead to duplicate commits and divergent histories if misapplied

Cherry-picking

To perform this first you have to identify the commit hash of the commit you would like to pick, you can do this with git log. Once you have the commit hash identified you can run:

git checkout target_branch
git cherry-pick <commit-hash> # Do this multiple times if multiple commits are wanted
git push origin target_branch

Advanced Git Commands

Signing commits

Signing commits is a way to verify the authenticity and integrity of your commits in Git. It allows you to cryptographically sign your commits using your GPG (GNU Privacy Guard) key, assuring Git that you are indeed the author of the commit. You can do so by creating a GPG key and configuring Git to use the key when committing. Here are the steps:

# Generate a GPG key
gpg --gen-key

# Configure Git to Use Your GPG Key
git config --global user.signingkey <your-gpg-key-id>

# Add the public key to your GitHub account

# Signing your commits with the -S flag
git commit -S -m "Your commit message"

# View signed commits
git log --show-signature

Git reflog

A topic that we haven’t explored is Git references, they are pointers to various objects within the repository, primarily commits, but also tags and branches. They serve as named points in the Git history, allowing users to navigate through the repository's timeline and access specific snapshots of the project. Knowing how to navigate git references can be very useful and they can use git reflog to do just that. Here are some of the benefits:

  • Recovering lost commits or branches
  • Debugging and troubleshooting
  • Undoing mistakes

Interactive rebase

Interactive rebase is a powerful Git feature that allows you to rewrite commit history interactively. It enables you to modify, reorder, combine, or delete commits before applying them to a branch.

In order to use it you have to become familiar with the possible actions such are:

  • Pick (“p“)
  • Reword (“r“)
  • Edit (“e“)
  • Squash (“s“)
  • Drop (“d“)

Interactive rebase

Here is a useful video to learn how to perform an interactive rebase in the terminal, I have also linked a useful tool at the bottom of the blog post.

Collaborating with Git

Origin vs Upstream

The origin is the default remote repository associated with your local Git repository when you clone it. If you've forked a repository, then that fork becomes your "origin" repository by default.

Upstream on the other hand refers to the original repository from which your repository was forked.

To keep your forked repository up-to-date with the latest changes from the original project, you git fetch changes from the "upstream" repository and merge or rebase them into your local repository.

# By pulling the pulled changes will be merged into your working branch
git pull <remote_name> <branch_name>
# If you don't want to merge the changes use
git fetch <remote_name>

To see the remote repositories associated with you local Git repo, run:

Conflicts

Don’t panic, when trying to merge or rebase a branch and conflicts are detected it only means that there are conflicting changes between different versions of the same file or files in your repository and they can be easily resolved (most times).

They are typically indicated within the affected files, where Git inserts conflict markers <<<<<<<, ======= and >>>>>>> to highlight the conflicting sections. Decide which changes to keep, modify, or remove, ensuring that the resulting code makes sense and retains the intended functionality.

After manually resolving conflicts in the conflicted files, remove the conflict markers <<<<<<<, =======, and >>>>>>> and adjust the code as necessary.

Save the changes in the conflicted files once you're satisfied with the resolution.

If you have issues resolving conflicts, this video does a good job at explaining it.

Popular Git workflows

Various Git workflows exist, however, it's important to note that there's no universally "best" Git workflow. Instead, each approach has its own set of pros and cons. Let's explore these different workflows to understand their strengths and weaknesses.

Feature Branch Workflow 🌱

Each new feature or bug fix is developed in its own branch and then merge it back into the main branch once completed by opening a PR.

  • Strength: Isolation of changes and reducing conflicts.
  • Weakness: Can become complex and require diligent branch management.

Gitflow Workflow 🌊

Gitflow defines a strict branching model with predefined branches for different types of development tasks.

It includes long-lived branches such as main, develop, feature branches, release branches, and hotfix branches.

  • Strength: Suitable for projects with scheduled releases and long-term maintenance.
  • Weakness: Can be overly complex for smaller teams

Forking Workflow 🍴

In this workflow, each developer clones the main repository, but instead of pushing changes directly to it, they push changes to their own fork of the repository. Developers then create pull requests to propose changes to the main repository, allowing for code review and collaboration before merging.

This is the workflow we use to collaborate on the open-source Glasskube repos.

  • Strength: Encourages collaboration from external contributors without granting direct write access to the main repository.
  • Weakness: Maintaining synchronization between forks and the main repository can be challenging.

Trunk-Based Development 🪵

If you are on a team focused on rapid iteration and continuous delivery, you might use trunk-based development which developers work directly on the main branch committing small and frequent changes.

  • Strength: Promotes rapid iteration, continuous integration, and a focus on delivering small, frequent changes to production.
  • Weakness: Requires robust automated testing and deployment pipelines to ensure the stability of the main branch, may not be suitable for projects with stringent release schedules or complex feature development.

What the fork?

Forking is highly recommended for collaborating on Open Source projects since you have complete control over your own copy of the repository. You can make changes, experiment with new features, or fix bugs without affecting the original project.

💡 What took me a long time to figure out was that although forked repositories start as separate entities, they retain a connection to the original repository. This connection allows you to keep track of changes in the original project and synchronize your fork with updates made by others.

That’s why even when you push to your origin repository. Your changes will show up on the remote also.

Git Cheatsheet


# Clone a Repository
git clone <repository_url>

# Stage Changes for Commit
git add <file(s)>

# Commit Changes
git commit -m "Commit message"

# Push Changes to the Remote Repository
git push

# Force Push Changes (use with caution)
git push --force

# Reset Working Directory to Last Commit
git reset --hard

# Create a New Branch
git branch <branch_name>

# Switch to a Different Branch
git checkout <branch_name>

# Merge Changes from Another Branch
git merge <branch_name>

# Rebase Changes onto Another Branch (use with caution)
git rebase <base_branch>

# View Status of Working Directory
git status

# View Commit History
git log

# Undo Last Commit (use with caution)
git reset --soft HEAD^

# Discard Changes in Working Directory
git restore <file(s)>

# Retrieve Lost Commit References
git reflog

# Interactive Rebase to Rearrange Commits
git rebase --interactive HEAD~3

# Pull changes from remote repo
git pull <remote_name> <branch_name>

# Fetch changes from remote repo
git fetch <remote_name>

  • Tool for interactive rebasing.

  • Cdiff to view colorful, incremental diffs.

  • Interactive Git branching playground


If you like this sort of content and would like to see more of it, please consider supporting us by giving us a Star on GitHub 🙏

Read the whole story
emrox
3 hours ago
reply
Hamburg, Germany
Share this story
Delete

A brief history of web development. And why your framework doesn't matter.

1 Share
Read the whole story
emrox
2 days ago
reply
Hamburg, Germany
Share this story
Delete

Linux On Desktop In 2023

1 Share
Read the whole story
emrox
2 days ago
reply
Hamburg, Germany
Share this story
Delete

Cardiorespiratory fitness is a strong and consistent predictor of morbidity and mortality among adults: an overview of meta-analyses representing over 20.9 million observations from 199 unique cohort studies

1 Share

Cardiorespiratory fitness is a strong and consistent predictor of morbidity and mortality among adults: an overview of meta-analyses representing over 20.9 million observations from 199 unique cohort studies

  1. http://orcid.org/0000-0002-1768-319XJustin J Lang1,2,3,
  2. http://orcid.org/0000-0001-6729-5649Stephanie A Prince1,2,
  3. Katherine Merucci4,
  4. http://orcid.org/0000-0002-4513-9108Cristina Cadenas-Sanchez5,6,
  5. http://orcid.org/0000-0002-5607-5736Jean-Philippe Chaput2,7,8,
  6. http://orcid.org/0000-0002-1752-5431Brooklyn J Fraser3,9,
  7. http://orcid.org/0000-0001-5461-5981Taru Manyanga10,
  8. Ryan McGrath3,11,12,13,
  9. http://orcid.org/0000-0003-2001-1121Francisco B Ortega5,14,
  10. http://orcid.org/0000-0002-7227-2406Ben Singh3,
  11. http://orcid.org/0000-0001-7601-9670Grant R Tomkinson3
  1. Correspondence to Dr Justin J Lang, Public Health Agency of Canada, Ottawa, Canada; justin.lang@phac-aspc.gc.ca

BMJ Learning - Take the Test

Abstract

Objective To examine and summarise evidence from meta-analyses of cohort studies that evaluated the predictive associations between baseline cardiorespiratory fitness (CRF) and health outcomes among adults.

Design Overview of systematic reviews.

Data source Five bibliographic databases were searched from January 2002 to March 2024.

Results From the 9062 papers identified, we included 26 systematic reviews. We found eight meta-analyses that described five unique mortality outcomes among general populations. CRF had the largest risk reduction for all-cause mortality when comparing high versus low CRF (HR=0.47; 95% CI 0.39 to 0.56). A dose–response relationship for every 1-metabolic equivalent of task (MET) higher level of CRF was associated with a 11%–17% reduction in all-cause mortality (HR=0.89; 95% CI 0.86 to 0.92, and HR=0.83; 95% CI 0.78 to 0.88). For incident outcomes, nine meta-analyses described 12 unique outcomes. CRF was associated with the largest risk reduction in incident heart failure when comparing high versus low CRF (HR=0.31; 95% CI 0.19 to 0.49). A dose–response relationship for every 1-MET higher level of CRF was associated with a 18% reduction in heart failure (HR=0.82; 95% CI 0.79 to 0.84). Among those living with chronic conditions, nine meta-analyses described four unique outcomes in nine patient groups. CRF was associated with the largest risk reduction for cardiovascular mortality among those living with cardiovascular disease when comparing high versus low CRF (HR=0.27; 95% CI 0.16 to 0.48). The certainty of the evidence across all studies ranged from very low-to-moderate according to Grading of Recommendations, Assessment, Development and Evaluations.

Conclusion We found consistent evidence that high CRF is strongly associated with lower risk for a variety of mortality and incident chronic conditions in general and clinical populations.

  • Cardiovascular Diseases
  • Review
  • Cohort Studies
  • Physical fitness

Data availability statement

Data are available on reasonable request.

http://creativecommons.org/licenses/by-nc/4.0/

This is an open access article distributed in accordance with the Creative Commons Attribution Non Commercial (CC BY-NC 4.0) license, which permits others to distribute, remix, adapt, build upon this work non-commercially, and license their derivative works on different terms, provided the original work is properly cited, appropriate credit is given, any changes made indicated, and the use is non-commercial. See: http://creativecommons.org/licenses/by-nc/4.0/.

Statistics from <a href="http://Altmetric.com" rel="nofollow">Altmetric.com</a>

Request Permissions

If you wish to reuse any or all of this article please use the link below which will take you to the Copyright Clearance Center’s RightsLink service. You will be able to get a quick price and instant permission to reuse the content in many different ways.

WHAT IS ALREADY KNOWN ON THIS TOPIC

  • Many systematic reviews have examined the prospective link between baseline cardiorespiratory fitness and health outcomes, but no study has compiled all the evidence to help identify important gaps in the literature.

WHAT THIS STUDY ADDS

  • This study identified 26 systematic reviews with meta-analysis representing over 20.9 million observations from 199 unique cohort studies. Cardiorespiratory fitness was strongly and consistently protective of a variety of incident chronic conditions and mortality-related outcomes.

  • Gaps in the literature continue to exist, with limited evidence available among women, and certain clinical populations. Several health outcomes could benefit from future meta-analyses, including specific cancer types, especially among women (eg, breast cancer) and mental health conditions beyond depression.

HOW THIS STUDY MIGHT AFFECT RESEARCH, PRACTICE OR POLICY

  • Given the strength of the predictive utility of cardiorespiratory fitness across many health outcomes, cardiorespiratory fitness would be a valuable risk stratification tool in clinical practice.

Introduction

Cardiorespiratory fitness (CRF) is a physical trait that reflects the integrated function of numerous bodily systems to deliver and use oxygen to support muscle activity during sustained, rhythmic, whole-body, large muscle physical activity.1 CRF can be objectively measured using direct (usually by maximal exercise testing with concomitant gas exchange analysis)2 or indirect (exercise predicted equations)3 4 methods with a variety of maximal or submaximal protocols using different modalities (eg, stationary cycling, treadmill running/walking, bench stepping, field-based running/walking). Non-exercise prediction equations with reasonable validity are also available when direct CRF measurement is not feasible.5 6 CRF is commonly expressed as the maximum or peak rate of oxygen consumption per kilogram of body mass (common units: mL/kg/min) or metabolic equivalents of task (METs). Nearly half of the variance in CRF is attributable to genetics, with the remainder modified primarily through habitual physical activity.7 For example, brisk walking for approximately 150 min per week can result in large relative improvements in CRF among sedentary and unfit individuals.8 9 Even those with severe chronic disease can improve CRF through well-planned aerobic physical activity programmes.10

Low CRF is considered a strong chronic disease risk factor that is not routinely assessed in clinical practice.11 Evidence suggests that the inclusion of CRF as a clinical vital sign would enhance patient management by improving the classification of those at high risk of adverse outcomes.11 The evidence supporting CRF as an important risk factor has accumulated since the 1980s through large cohort studies that investigated the prospective risk of all-cause mortality and cardiovascular events associated with CRF.12–14 Research has linked CRF to the incidence of some cancers (eg, colon/rectum, lung),15 type 2 diabetes,16 metabolic syndrome,17 stroke18 and depression.19 Higher CRF may even improve the prognosis in those with chronic conditions such as cancer,20 peripheral artery disease,21 heart failure22 and chronic kidney disease.23

Given the mounting evidence supporting CRF as an important risk factor, numerous systematic reviews with meta-analyses summarising results of primary studies for various health outcomes have been published. Kodama et al 24 published the first meta-analysis on the health-related predictive validity of CRF and found that a 1-MET (3.5 mL/kg/min) higher level of CRF was associated with a 13% and 15% reduction in the risk of all-cause mortality and cardiovascular disease (CVD) events, respectively. This study helped to establish the meaningful clinically important difference (MCID) of 1-MET for exercise trials. Since Kodama’s study, there have been several systematic reviews with meta-analyses, with several published in recent years (ie, 2020+). Most systematic reviews have focused on a single health outcome. To date, there has not been a systematic synthesis of the relationships between CRF and a broad range of health outcomes. To help summarise the breadth of evidence, an overview of reviews provides a systematic method to examine evidence across a range of outcomes for a specific exposure.25 Thus, the objective of this study was to conduct an overview of systematic reviews with meta-analyses from cohort studies that investigated relationships between CRF and prospective health-related outcomes among adults. We also aimed to assess the certainty of the evidence for each identified health outcome.

Methods

This overview followed the methods outlined in the Cochrane handbook,25 and additional methods that were published elsewhere.26 We adhered to both the Preferred Reporting Items for Overviews of Reviews statement27 and the Meta-analyses of Observational Studies in Epidemiology reporting standards.28 The overview was prospectively registered with the PROSPERO international prospective register of systematic reviews (#CRD42022370149). Here, we present a condensed methods section with the full methods available in online supplemental methods.

Supplemental material

Eligibility criteria

Population

Adult populations (≥18 years) including apparently healthy and clinical populations with diagnosed chronic conditions. Studies that focused on certain special populations were excluded (ie, those recovering from surgery, athletes, disease at birth, pregnant individuals).

Exposure

The primary exposure was CRF measured using the following approaches: (1) maximal exercise testing with gas analysis (ie, directly measured V̇O2max/peak), (2) maximal or submaximal exercise testing without gas analysis, which used either exercise prediction equations to estimate CRF or the measured exercise performance (ie, indirect measures) or (3) non-exercise prediction equations for estimating CRF.

Outcome

Any health-related outcome such as all-cause or cause-specific mortality, incident conditions related to physical risk factors, chronic conditions or mental health issues were included. Among populations with diagnosed chronic conditions, we included evidence on outcomes such as mortality or disease severity.

Study design

Only systematic reviews with meta-analyses that searched a minimum of two bibliographic databases and provided a sample search strategy were included. We also included meta-analyses that pooled data from primary prospective/retrospective cohort or case-control studies. These studies were the focus because of their ability to assess causality for observational research.

Publication status and language restriction

Only systematic reviews published in peer-reviewed journals in English, French or Spanish (based on authors’ language capacity) were eligible. Conference abstracts or papers, commentaries, editorials, dissertations or grey literature were ineligible.

Time frame

Systematic reviews published during the past 20 years for the initial search.

Information sources

Five bibliographic databases, including OVID Medline, OVID Embase, Scopus, CINAHL and EBSCOhost SPORTDiscus, were searched from 1 January 2002 to 21 November 2022. The search was later updated from 1 November 2022 to 8 March 2024.

Search strategy

A research librarian (KM) created the search strategy in collaboration with the authorship team, and the final search was peer-reviewed by an independent research librarian using the Peer Review of Electronic Search Strategies guidelines.29 The search strategies for each database are available in online supplemental appendix 1. The reference lists of included papers were also searched for additional relevant systematic reviews.

Selection process

All records were imported into RefWorks where duplicates were removed using automated and manual methods. Records were imported into Covidence for further deduplication and record screening. Reviewers were not blinded to the study metadata when screening. The title and abstract from each record were screened by two of the following independent reviewers (JJL, SAP, CC-S, J-PC, BJF, TM, BS and GRT) against the inclusion criteria. Full-text papers were obtained for each record that met the inclusion criteria or provided insufficient evidence to make a conclusive decision at the title and abstract stage. Conflicts during title and abstract screening automatically advanced to full-text screening. Each full-text record was screened by two of the following independent reviewers (JJL, SAP, CC-S, J-PC, BJF, TM, BS and GRT) against the inclusion criteria. Conflicts at the full-text stage were resolved through discussion by two reviewers (JJL and SAP), with a third reviewer resolving disagreements (GRT).

Data collection process

Data extraction was completed in Covidence using a form that was piloted by the authorship group for accuracy. Data from the included studies were extracted by two of the following independent reviewers (JJL, SAP, CC-S, J-PC, BJF, TM, FBO, BS and GRT). Conflicts were resolved by one reviewer (JJL), who contacted the reviewers who extracted the data when necessary to resolve conflicts.

Data items

The data extraction form included several items related to the demographic characteristics of the primary studies, the meta-analyses effect estimates and related statistics, and details for risk of bias and subgroup analyses.

Review quality

We extracted the original risk of bias assessment for each primary study, as reported by the study authors. Most of the included studies used the Newcastle-Ottawa Scale (NOS) to assess risk of bias for cohort studies.30 In the event that risk of bias was not assessed, a new assessment was conducted and verified by two reviewers using the NOS. We also assessed quality of the systematic reviews using the second edition of A MeaSurement Tool to Assess systematic Reviews 2 (AMSTAR2) checklist.31 Two of the following independent reviewers (JJL, SAP, CC-S, J-PC, BJF, TM, FBO, BS and GRT) assessed review quality. Conflicts were resolved by one reviewer (JJL), with the reviewers who extracted the data contacted to resolve outstanding conflicts.

Effect measures

We presented pooled hazard ratios (HRs) or relative risks (RRs) for an incident event (ie, mortality or morbidity) across the included systematic reviews. We extracted data from models that compared high versus low CRF and those that examined the impact of a 1-MET higher level of CRF.

Synthesis of data

We followed an outcome-centric approach, as outlined by Kho et al.26 Our goal was to identify systematic reviews with non-overlapping primary studies for each outcome to avoid double counting evidence. When more than one eligible systematic review was identified for a single outcome, we calculated the corrected covered area (CCA) to assess the degree of overlap in the primary studies.32

Embedded Image

Where, N is the total number of times a primary study appeared across reviews (inclusive of double counting), r is the number of unique primary studies and c is the number of systematic reviews included for the outcome.

The CCA was interpreted as slight (0%–5%), moderate (6%–10%), high (11%–15%) or very high (>15%). If the CCA was slight or moderate, we included multiple systematic reviews per outcome. If the CCA was high or very high, we selected the highest quality systematic review according to the AMSTAR2 assessment. We included the most recent systematic review when reviews of the same outcome were rated as equal in quality.

Synthesis of results

For each health outcome, we reported evidence for apparently healthy and clinical populations separately. We summarised results using a narrative synthesis approach using summary of findings tables. Results were reported as described by the systematic review authors. Meta-analytical results, including the effect, confidence limits, number of studies and number of participants, were presented by outcome using a forest plot to allow for easy comparison between studies. RR values were taken to approximate the HR. When comparing high versus low CRF, we inverted the scale when studies compared low versus high by taking the reciprocal (ie, HR=2.00 was changed to HR=0.50). Dose−response values were rescaled to a 1-MET higher level of CRF when more than 1-MET was used or if the unit increase was in VO2. We rescaled by taking the natural log of the HR, dividing or multiplying it to correspond with 1-MET, and exponentiating the result. Subgroup analyses for sex were described when available.

Certainty of the evidence assessment

For each outcome, the certainty of the evidence was assessed using a modified Grading of Recommendations, Assessment, Development and Evaluations (GRADE) approach.33 Observational cohort evidence began at ‘high’ certainty because randomised controlled trials were deemed not feasible for our research question.34 The certainty of the evidence could be rated down based on five domains (ie, risk of bias, imprecision, inconsistency, indirectness and publication bias). See online supplemental table 1 for a GRADE decision rules table.

Equity, diversity and inclusion statement

Our research team included diversity across genders with representation from researchers at all career stages. We stratified our results by sex which allowed use to identify the potential need for more diversity in this area of the literature. This stratification allowed us to discuss the overall generalisability of our results. The GRADE evaluation carried out in this study assessed the indirectness of the results. We downgraded evidence that did not demonstrate good global representation or did not provide a gender-balanced sample. Reducing indirectness is important for ensuring the results are representative of the target population.

Results

We identified 9062 records after removing duplicates, assessed 199 full-text papers, and excluded 165 papers during full-text screening, and 8 papers because of high or very high overlap based on the CCA calculation (see figure 1 and online supplemental appendix 2 for full texts with reasons for exclusion). The proportion of agreement between reviewers for title and abstract screening ranged from 95% to 100% while the agreement for full-text screening ranged from 75% to 100%. We included 26 systematic reviews with meta-analyses representing over 20.9 million observations from 199 unique cohort studies, including 21 mortality or incident chronic disease outcomes. We identified CCA values in the high or very high range for sudden cardiac mortality (CCA=33%; n=2), incident heart failure (33%; n=2), incident depression (50%; n=2), incident type 2 diabetes (25%; n=4) and all-cause mortality among those living with heart failure (14%; n=3; see online supplemental appendix 2 for more details). We included multiple systematic reviews for all-cause mortality because the CCA was moderate (10%; n=3).

Tables 1–3 describe the study characteristics. We identified 8 systematic reviews that investigated mortality outcomes, with pooled data from 95 unique primary cohort studies. Nine systematic reviews investigated incident outcomes, pooling data from 63 unique primary cohort studies. The remaining 9 systematic reviews investigated health-related outcomes among populations living with chronic conditions, which represented data from 51 unique primary cohort studies. 11 reviews were of critically low quality, 4 were low, 8 were moderate and 3 were of high quality as assessed using the AMSTAR2 (see online supplemental table 2). See online supplemental table 3 for a detailed summary of findings with the certainty of the evidence for each outcome.

View this table:

Table 1

Study characteristics for general populations without known disease at baseline and mortality outcomes

View this table:

Table 2

Study characteristics for general populations without known disease at baseline and incident outcomes

View this table:

Table 3

Study characteristics for clinical populations with diagnosed chronic disease at baseline and mortality outcomes

Figure 2 illustrates results for CRF as a predictor of mortality outcomes, which included all-cause, CVD, sudden cardiac, all cancer and lung cancer mortality. When comparing high versus low CRF across all outcomes, there was a 41% (HR for all-cause mortality24=0.59; 95% CI 0.52 to 0.66) to 53% (HR for all-cause mortality35=0.47; 95% CI 0.39 to 0.56) reduction in the risk of premature mortality. The certainty of the evidence was assessed as very low-to-moderate, mainly due to serious indirectness (ie, most studies only included male participants). In assessing the dose–response relationship, a 1-MET higher level of CRF was associated with a 7% (HR for all cancer mortality35=0.93; 95% CI 0.91 to 0.96) to 51% (HR for sudden cardiac mortality36=0.49; 95% CI 0.33 to 0.73) reduction in the risk of premature mortality. The certainty of the evidence ranged from very low-to-moderate, largely due to serious indirectness from a large proportion of male-only studies. Sex differences were similar between outcomes with larger CIs for females because of smaller samples (see online supplemental figure 1). For example, there were 1 858 274 male participants compared with 180 202 female participants for all-cause mortality.

Figure 2

HRs for each mortality outcome in apparently healthy populations at baseline for high versus low CRF and per 1-MET increase in CRF. Estimates from Laukkanen (2022), Han (2022), Kodama (2009) and Aune (2020) were reported as RR, the remaining studies were reported as HR. Qui (2021) reported estimates from self-reported CRF. Kodama (2009) reported low versus high CRF which were inverted for this study. CRF, cardiorespiratory fitness; CVD, cardiovascular disease; eCRF, estimated non-exercise cardiorespiratory fitness; GRADE, Grading of Recommendations, Assessment, Development and Evaluations; MET, metabolic equivalent of task; NA, not applicable; NR, not reported; RR, relative risk.

Figure 3 describes results for CRF as a predictor of newly diagnosed chronic conditions, including: hypertension, heart failure, stroke, atrial fibrillation, dementia, chronic kidney disease, depression and type 2 diabetes. Online supplemental figure 2 describes results for all cancer (male only), lung cancer (male only), colon/rectum cancer (male only) and prostate cancer. When comparing high versus low CRF, there was a 37% (HR for incident hypertension37=0.63; 95% CI 0.56 to 0.70) to 69% (HR for incident heart failure38=0.31; 95% CI 0.19 to 0.49) reduction in the risk of incident conditions. The certainty of this evidence was rated as very low-to-low largely due to inconsistency and indirectness (ie, high heterogeneity that could not be described by subgroup analysis and largely male populations). The dose–response relationship per 1-MET higher level of CRF was associated with a 3% (HR for incident stroke39=0.97; 95% CI 0.96 to 0.98) to 18% (HR for incident heart failure38=0.82; 95% CI 0.79 to 0.84) reduction in the risk of incident conditions. The certainty of the evidence ranged from very low-to-low due to inconsistency and indirectness. Only two studies reported results for females separately. High versus low CRF was more protective for incident stroke and type 2 diabetes among females compared with males (online supplemental figure 2). Among men, there was a null association between high versus low CRF for prostate cancer (HR=1.15; 95% CI 1.00 to 1.30).40

Figure 3

HRs for each incident outcome in apparently healthy populations at baseline for high versus low CRF and per 1-MET increase in CRF. Note: Estimates from Cheng (2022), Aune (2021), Wang (2020), Xue (2020), Tarp (2019) and Kunutsor (2023) were reported as RR, the remaining studies were reported as HR. Kandola (2019) reported estimates for low versus high which were inverted for this study. The estimates from Tarp (2019) are fully adjusted for adiposity. Aune (2021) was reported per 5-MET increase which we converted to 1-MET increase for this study. CRF, cardiorespiratory fitness; CVD, cardiovascular disease; GRADE, Grading of Recommendations, Assessment, Development and Evaluations; MET, metabolic equivalent of task; NA, not applicable; NR, not reported; RR, relative risk.

Figure 4 highlights results comparing high versus low CRF among individuals living with chronic conditions. There was a 19% (HR for adverse events among those living with pulmonary hypertension41=0.81; 95% CI 0.78 to 0.85) to 73% (HR for cardiovascular mortality among those living with CVD42=0.27; 95% CI 0.16 to 0.48) reduction in the risk of all-cause and type-specific mortality. Comparing delayed versus not delayed heart rate recovery was associated with an 83% reduced risk of adverse events among those living with coronary artery disease. The certainty of the evidence for mortality in those living with a chronic condition was rated as very low-to-low largely due to risk of bias, indirectness and imprecision (ie, low-quality studies, mainly male participants and small sample sizes). No evidence examining sex differences were available. See online supplemental table 3 for a detailed summary of findings.

Figure 4

HRs for health outcomes in patients living with chronic conditions at baseline for high versus low CRF and delayed versus not delayed HRR. Estimates from Morris (2014) were reported as RR, the remaining estimates were reported as HR. Yang (2023), Fuentes-Abolafio (2020), Morris (2014), Rocha (2022) and Lachman (2018) reported estimates as low versus high which were inverted for this study. Cantone (2023) was reported per 1-unit VO2 increase which we converted to 1-MET increase for this study. Adverse events for Lachman (2018) were all-cause mortality, cardiovascular mortality and hospitalisations for congestive heart failure. CRF, cardiorespiratory fitness; CVD, cardiovascular disease; GRADE, Grading of Recommendations, Assessment, Development and Evaluations; HRR, heart rate recovery; MET, metabolic equivalent of task; NA, not applicable; NR, not reported; RR, relative risk.

Discussion

This overview of systematic reviews demonstrated that CRF is a strong and consistent predictor of risk across many mortality outcomes in the adult general population. Among populations living with chronic conditions such as cancer, heart failure and CVD, this study showed better prognosis for those with higher CRF. We also demonstrated that low CRF is an important risk factor for developing future chronic conditions such as hypertension, heart failure, stoke, atrial fibrillation, dementia and depression. Given that we summarised evidence from cohort studies, and randomised controlled trials cannot be used in our investigation, the results of this study may signal a causal relationship between CRF and future health outcomes. We also found a significant dose–response effect showing protection for every 1-MET higher level of CRF. This evidence further supports 1-MET as an MCID for CRF and could be considered as a target for interventions. The strength and consistency of the evidence across a wide range of outcomes supports the importance of CRF for clinical assessment and public health surveillance.

Several studies have identified the need for the routine measurement of CRF in clinical and public health practice.11 43 For instance, a scientific statement from the American Heart Association concluded that healthcare providers should assess CRF during annual routine clinical visits using submaximal tests (eg, treadmill, cycling or bench stepping tests) or self-report estimates and that patients living with chronic conditions should have CRF measured regularly using a symptom-limited direct measure.11 There are several benefits to regular measurement of CRF in clinical practice. First, CRF is an important risk factor that provides additional information beyond traditional risk factors such as blood pressure, total cholesterol and smoking status.44 Second, given the strong link with habitual physical activity, CRF could be a valuable tool to help guide exercise prescription. In those with low CRF (defined based on age, sex and health status), large relative improvements can be attained through additional moderate physical activity (ie, brisk walking at a heart rate of 50% of peakO2).45 The largest health benefits have been observed when individuals move from being unfit to fit.46 Lastly, CRF measured using field-based tests are easy to implement with a variety of tests that could be adapted to suit space and time limitations.

Areas of future work

Applying the GRADE approach to evaluate the certainty of the evidence helped identify several important gaps in the literature. Nearly all the outcomes identified in this study were downgraded due to the evidence being generated largely from samples comprising males. Although an increase in female samples would help improve the certainty of the evidence, it likely would not impact the magnitude of the observed effects because the benefits of CRF were similar for males and females in our study (see online supplemental figures 1,2) and other large cohort studies.47 There is also a need for higher-quality studies with larger samples sizes in clinical populations, as many of the outcomes were downgraded due to primary studies with high risk of bias, low sample sizes (<4000 participants), and inconsistencies in the measurement of CRF across studies. Improving the evidence for CRF in clinical populations remains an important research gap. For instance, outcomes in clinical populations with a serious or very serious risk of bias were often rated this way due to a lack of adequate control for confounding, including a lack of adjustment for age, sex, and body mass.

In addition to the need for higher-quality studies with greater samples in more diverse populations including females, we did not identify any systematic reviews that explored the association between CRF and breast cancer48 or mental health outcomes beyond incident depression and dementia, as an example. These outcomes present important areas for future work. Finally, future studies would benefit from repeated longitudinal measures of CRF to further establish causality.

Implications for clinical practice

This study further demonstrates the importance of including CRF measurement in regular clinical practice. For every 1-MET (3.5 mL/kg/min) higher level of CRF, we identified substantial reductions in the risk of all-cause, CVD and cancer mortality. We also identified significant reductions in the risk of incident hypertension, heart failure, stroke, atrial fibrillation and type 2 diabetes per higher MET. For most, a 1-MET higher level of CRF is attainable through a regular aerobic exercise programme. For example, in a large population-based observational study of over 90 000 participants, nearly 30% were able to increase their CRF by 1-MET (median follow-up was 6.3 years) without intervention.49 However, for some, improvements as small as 0.5-METs may substantially benefit health.50 51

Given the strength of the predictive utility of CRF across many health outcomes, CRF would be a valuable risk stratification tool in clinical practice. Furthermore, the predictive strength of CRF is maintained regardless of age, sex and race.47 Through regular CRF measurement, clinicians could better identify patients at greater risk of premature mortality, initiating the need for targeted exercise prescription. Improvements in CRF through regular physical activity results in a proportional reduction in mortality risk, regardless of the presence of other major risk factors such as higher body mass index, hypertension, type 2 diabetes, dyslipidaemia, or smoking.49 There is an important need for clinical and public health guidelines around the assessment, interpretation of results and MCID of CRF across age, sex and clinical populations.

Strengths and limitations

Our paper has several strengths, including a focus on pooled meta-analyses from cohort studies, assessment of the certainty of the evidence using a modified GRADE, and an evaluation of the systematic review quality using AMSTAR2. Our study identifies gaps where new evidence is needed across a broad range of health outcomes. However, this study is not without limitations. As in any overview, the quality of the data is restricted to the included papers. In our case, heterogeneity was high for many of the included meta-analyses and was often not explained by subgroup analyses. We also identified low-to-very low certainty of the evidence for most outcomes, suggesting the need for higher-quality studies in this research area including adequate adjustment for confounding and greater representation of females. The evidence was also limited to studies examining associations between a single measure of CRF and prospective health outcomes.

Conclusion

Our findings showed that high CRF is strongly associated with lower risk of premature mortality, incident chronic conditions (ie, hypertension, heart failure, stroke, atrial fibrillation, dementia and depression), and poor prognosis in those with existing chronic conditions. The consistency of the evidence across a variety of health outcomes demonstrates the importance of CRF and the need to incorporate this measure in routine clinical and public health practice. Future studies should focus on outcomes with limited evidence and where the certainty of the evidence was rated as very low by improving study quality.

Data availability statement

Data are available on reasonable request.

Ethics statements

Patient consent for publication

Not applicable.

Acknowledgments

We would like to acknowledge the support of Valentine Ly, MLIS, Research Librarian at the University of Ottawa for her help with translating and conducting the search strategy in CINAHL and SPORTDiscus. We would also like to acknowledge the Health Library at Health Canada and the Public Health Agency of Canada for their support in constructing and carrying out the search strategy for MEDLINE, Embase and Scopus. The PRESS peer-review of the search strategy was carried out by Shannon Hayes, MLIS, research librarian, from the Health Library at Health Canada and the Public Health Agency of Canada. We would also like to thank Joses Robinson and Iryna Demchenko for their help with the paper.

Supplementary materials

  • Supplementary Data

    This web only file has been produced by the BMJ Publishing Group from an electronic file supplied by the author(s) and has not been edited for content.

Read the full text or download the PDF:

Log in using your username and password

Read the whole story
emrox
2 days ago
reply
Hamburg, Germany
Share this story
Delete

Raspberry Pi 5 vs Intel N100 mini PC comparison - Features, Benchmarks, and Price

1 Share

The Raspberry Pi 5 Arm SBC is now powerful enough to challenge some Intel systems in terms of performance, while Intel has made the Intel Alder Lake-N family, notably the Intel Processor N100, inexpensive and efficient enough to challenge Arm systems when it comes to price, form factor, and power consumption.

So we’ll try to match the Raspberry Pi 5 to typical Intel processor N100 mini PCs with a comparison of features/specifications, performance (benchmarks), and pricing with different use cases. That’s something I’ve been wanting to look into for a while but I was busy with reviews and other obligations (Hello, Mr. Taxman!), and this weekend I had some spare time to carry on the comparison.

Raspberry Pi 5 vs Intel N100 Mini PC

Raspberry Pi 5 vs Intel N100 mini PC specifications

I’ll start by comparing the specifications of a Raspberry Pi 5 against the ones for typical Intel Processor N100-based mini PCs also mentioning optional features that come at extra cost.

Some remarks:

  1. Intel N100 systems with DDR4/DDR5 usually rely on one (replaceable/upgradeable) SO-DIMM module while LPDDR5 is soldered on the main board. Raspberry Pi 5 always comes with soldered-on memory.
  2. Not all USB-C ports found in Alder Lake-N mini PCs support Displayport Alt mode, it depends on the model.
  3. Some Intel N100 SBCs such as the AAEON UP 7000 provide a GPIO header, but I wanted to focus on the features in typical mini PCs in this post. It’s also possible to add GPIO headers through a USB adapter
  4. The Blackview MP80 mini PC is not powered by an Intel Processor N100, but by the similar Intel N95 or N97 Alder lake-N processor, and was used to show it’s possible to get a really small x86 mini PC. Most are larger than that, and the Raspberry Pi 5 should be a better option for space-constrained applications.

The Raspberry Pi 5 was tested with Raspberry Pi OS Desktop 64-bit, and I selected the benchmark results for the GEEKOM Mini Air12 mini PC on Ubuntu 22.04. I haven’t run Geekbench 6 on my Raspberry Pi 5, so I took one of the results from the Geekbench 6 database for a Raspberry Pi 5 at stock (2.4 GHz) frequency. The storage read speed for the Raspberry Pi 5 was measured with a 128GB MAKERDISK NVMe SSD and the PCIe interface configured as PCIe Gen3 x1.

The Raspberry Pi 5 can be overclocked to get more performance, and some people managed to achieve 1,033 points (single-core) and 2146 points (multi-core) at 3.10 GHz, but it is still lower than on Intel Processor N100 mini PC, and may not work on all Raspberry Pi 5 boards.

The Intel N100-powered GEEKOM Mini Air12 is faster for most tasks, and in some cases up to almost three times as fast (Speedometer 2.0 in Firefox), except for memset (similar results) and OpenSSL AES-256 where the higher sustained single-core CPU frequency helps the Arm SBC.

Raspberry Pi 5 vs Intel N100 mini PC price comparison

This one will be tough as everybody has different requirements, local or import taxes, and so on. But I’ll first calculate the price of a minimum working system and the Raspberry Pi 5 equivalent of the MINIX Z100-0dB mini PC with 8GB RAM, a 256GB NVMe SSD, 2.5GbE, WiFi 6, and a fanless enclosure.

For the minimum working configuration, we’ll assume the user wants a Linux or Windows system that boots to the OS, and connects to the network and a display without any other specific requirements. The Raspberry Pi 5 4GB is good enough for this along with the active cooler, a 5V/5A power adapter (although 5V/3A might do too), and a microSD card. I also searched for the cheapest N100 mini PC I could find with storage and memory: the CHUWI Larkbox X (12GB RAM, 512GB SATA SSD) sold for $125.93 with free shipping on Aliexpress at the time of writing.

I tried to select low-cost items for the Raspberry Pi 5 and considered adding an enclosure unnecessary for the minimum configuration (it would add $5 to $20). Taxes and handling fees are not considered for either device, and the shipping fee is not included for the Raspberry Pi 5 kit which ends up being about $33 cheaper. The Larkbox X mini PC delivers higher performance and offers more memory, dual Gigabit Ethernet, and WiFi 6. The Raspberry Pi 5 remains the ideal candidate for use cases requiring GPIO, low power consumption, and a small size.

Now let’s switch to another user who will wonder “What year is this?!” when hearing or reading the words “gigabit Ethernet”, “WiFi 5”,  “4GB RAM”, and/or “microSD card”. He won’t allow any noisy fan to pollute his room either, and he’d been fine with a fanless mini PC like the MINIX Z100-0dB with 8GB RAM that’s currently sold for $220.71 on Amazon excluding taxes with an 8% discount coupon selectable before order.

MINIX Z100-0dB Amazon Discount

Let’s see what happens if we try to reproduce this setup with a Raspberry Pi 5 8GB. We’ll still need the 5V/5A power adapter and a micro HDMI cable, but we’ll replace the active cooler with a fanless metal case that can still take HAT expansion boards and the microSD card with an NVMe SSD with an M.2 PCIe Hat. We’ll need a WiFi 6 USB 3.0 dongle and a 2.5GbE USB 3.0 dongle, although HAT expansion boards could be daisy-chained to achieve the same result, but that would start to get messy and be more expensive.

The Raspberry Pi 5 system is still cheaper (by $20) before taking into account the shipping fees which may add up when purchasing from multiple vendors. The EDATEC fanless case is also hard to get as it’s not for sale on Aliexpress anymore, and finding another complete Raspberry Pi 5 case that takes a HAT+ expansion board is challenging. We’ve also created a monster with a HAT and all four USB ports would be used in a typical system with a USB keyboard, a USB mouse, and our two USB 3.0 dongles for WiFi 6 and 2.5GbE. In that specific use case, I’d consider the Raspberry Pi 5 to be undesirable, and people would be better served by a mini PC. I reckon I’ve pushed the requirements a bit far with WiFi 6 and 2.5GbE, as I’d expect many people would be fine the the built-in gigabit Ethernet and WiFi 5 connectivity, in which case the Pi 5 could still be considered.

Final words

As one would expect, there’s no simple answer to the question “Which is the best? A Raspberry Pi 5 SBC or an Intel N100 mini PC?” since it will depend on the user’s specific requirements. The Raspberry Pi SBC was first introduced as cheap hardware for the education market, and I would recommend the Raspberry Pi 4 over the Raspberry Pi 5 for this purpose since it’s cheaper and does the job. The Raspberry Pi 5 is more suitable for projects that require extra performance while keeping the small form factor, GPIO header, and camera connectors. Intel Processor N100 mini PCs offer a better performance/price ratio as a general-purpose computer running Windows 11 or a Linux distribution such as Ubuntu, although you may potentially save a few dollars by using a Raspberry Pi 5.

Jean Luc Aufranc

Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.

Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress

Read the whole story
emrox
5 days ago
reply
Hamburg, Germany
Share this story
Delete

Proposal for Signals

1 Share

The JavaScript architectural pattern of “signals” has really had a moment in the last year. There are lots of frameworks that have adopted it as the predominant way to declare and respond to variables that change across componentry.

Web standards bodies, at their best, notice things like this and step in to help bring them to the web platform where everyone will benefit. For JavaScript, that’s TC39, and there is a brand new proposal for signals by Rob Eisenberg and Daniel Ehrenberg. Cool!

You never know where these “Stage 0” proposals are going to go though. There is massive evidence that people like types in JavaScript, but the proposal to standardize that is two years old now and hasn’t gone anywhere.

Read the whole story
emrox
5 days ago
reply
Hamburg, Germany
Share this story
Delete
Next Page of Stories