# hooks

Hooks are predefined points where registered callback code can interact with or modify other code.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Scheduling Claude Code for Nightly Repository Maintenance

DevFeed: [Scheduling Claude Code for Nightly Repository Maintenance](<https://devfeed.tech/articles/claude-code-can-maintain-your-repo-28977.md>)

Original publisher: [Read original article](<https://codingwithroby.substack.com/p/claude-code-can-maintain-your-repo>)

Author: Eric Roby

Published: 2026-07-28T12:03:08Z

Content type: tutorial

Language: en

Sources: [Eric Roby](<https://devfeed.tech/sources/eric-roby.md>)

Topics: [Claude Code](<https://devfeed.tech/topics/claude-code.md>), [Security](<https://devfeed.tech/topics/security.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [ci](<https://devfeed.tech/topics/ci.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [automated](<https://devfeed.tech/tags/automated.md>), [ci](<https://devfeed.tech/tags/ci.md>), [claude-code](<https://devfeed.tech/tags/claude-code.md>), [github-action](<https://devfeed.tech/tags/github-action.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [refactor](<https://devfeed.tech/tags/refactor.md>), [repo](<https://devfeed.tech/tags/repo.md>), [security](<https://devfeed.tech/tags/security.md>)

### AI overview

The article explains how to schedule Claude Code in headless mode for recurring repository maintenance. It recommends focused jobs for security sweeps, refactoring scans, and enhancement reviews, using structured JSON output and the --bare option for consistent scripted runs.

### Source excerpt

How to schedule headless runs for nightly security sweeps, refactor scans, and enhancement ideas

## Inside the Git Hooks: Tagging Every AI Agent Commit (Part 3)

DevFeed: [Inside the Git Hooks: Tagging Every AI Agent Commit (Part 3)](<https://devfeed.tech/articles/inside-the-git-hooks-tagging-every-ai-agent-commit-part-3-25424.md>)

Original publisher: [Read original article](<https://jonnyzzz.com/blog/2026/06/26/inside-the-git-hooks-for-ai-agents/>)

Author: Eugene Petrenko

Published: 2026-06-26T00:00:00Z

Content type: tutorial

Language: en

Sources: [Eugene Petrenko](<https://devfeed.tech/sources/eugene-petrenko.md>)

Topics: [Git](<https://devfeed.tech/topics/git.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [AI Agent](<https://devfeed.tech/topics/ai-agent.md>), [observability](<https://devfeed.tech/topics/observability.md>), [Security](<https://devfeed.tech/topics/security.md>)

Tags: [ai-agent](<https://devfeed.tech/tags/ai-agent.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [ai-coding](<https://devfeed.tech/tags/ai-coding.md>), [capture](<https://devfeed.tech/tags/capture.md>), [commit](<https://devfeed.tech/tags/commit.md>), [eugene-petrenko](<https://devfeed.tech/tags/eugene-petrenko.md>), [git](<https://devfeed.tech/tags/git.md>), [git-hooks](<https://devfeed.tech/tags/git-hooks.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [jonnyzzz](<https://devfeed.tech/tags/jonnyzzz.md>), [provenance](<https://devfeed.tech/tags/provenance.md>), [repo](<https://devfeed.tech/tags/repo.md>), [sandbox](<https://devfeed.tech/tags/sandbox.md>), [tag-41199d53f463](<https://devfeed.tech/tags/tag-41199d53f463.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

This third-part tutorial explains a best-effort Git hook layer for AI agents running inside a sandbox. The hooks stamp session IDs on commits, preserve the tags through amend, rebase, and squash, and capture restorable copies of pushed changes while continuing to run repository-local hooks.

### Source excerpt

Part 3 -- the build for the lighter solution. How a set of git hooks stamps a session id on every commit an AI Agent makes, survives squash and rebase, and captures each push -- all best-effort, all inside the sandbox.

## Introducing Kempt

DevFeed: [Introducing Kempt](<https://devfeed.tech/articles/introducing-kempt-39037.md>)

Original publisher: [Read original article](<https://www.zacsweers.dev/introducing-kempt/>)

Author: Zac Sweers

Published: 2026-06-23T00:00:23Z

Content type: release

Language: en

Sources: [Zac Sweers](<https://devfeed.tech/sources/zac-sweers.md>)

Topics: [formatting](<https://devfeed.tech/topics/formatting.md>), [pre-commit](<https://devfeed.tech/topics/pre-commit.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [ci](<https://devfeed.tech/topics/ci.md>), [repo](<https://devfeed.tech/topics/repo.md>), [Java](<https://devfeed.tech/topics/java.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Rust](<https://devfeed.tech/topics/rust.md>)

Tags: [ci](<https://devfeed.tech/tags/ci.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [pre-commit](<https://devfeed.tech/tags/pre-commit.md>), [repo](<https://devfeed.tech/tags/repo.md>), [rust](<https://devfeed.tech/tags/rust.md>)

### AI overview

The article introduces Kempt, a small project designed to replace heavy Gradle-based formatting setups with a repo-local pipeline for formatting and commit hooks. It supports Kotlin, Java, and Rust, and can run locally, in pre-commit hooks, and in CI.

### Source excerpt

Formatting should be boring, in the best possible way.

## What Did the Agent Just Push? Auditing Git for AI Agents

DevFeed: [What Did the Agent Just Push? Auditing Git for AI Agents](<https://devfeed.tech/articles/what-did-the-agent-just-push-auditing-git-for-ai-agents-25422.md>)

Original publisher: [Read original article](<https://jonnyzzz.com/blog/2026/06/20/auditing-git-for-ai-agents/>)

Author: Eugene Petrenko

Published: 2026-06-20T00:00:00Z

Content type: tutorial

Language: en

Sources: [Eugene Petrenko](<https://devfeed.tech/sources/eugene-petrenko.md>)

Topics: [Git](<https://devfeed.tech/topics/git.md>), [AI Agent](<https://devfeed.tech/topics/ai-agent.md>), [audit](<https://devfeed.tech/topics/audit.md>), [Clash](<https://devfeed.tech/topics/clash.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [repo](<https://devfeed.tech/topics/repo.md>)

Tags: [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [ai-coding](<https://devfeed.tech/tags/ai-coding.md>), [audit](<https://devfeed.tech/tags/audit.md>), [eugene-petrenko](<https://devfeed.tech/tags/eugene-petrenko.md>), [git](<https://devfeed.tech/tags/git.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [jonnyzzz](<https://devfeed.tech/tags/jonnyzzz.md>), [proxy](<https://devfeed.tech/tags/proxy.md>), [pull-request](<https://devfeed.tech/tags/pull-request.md>), [repo](<https://devfeed.tech/tags/repo.md>), [tag-41199d53f463](<https://devfeed.tech/tags/tag-41199d53f463.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

This article presents an approach for auditing autonomous AI agents that work with Git repositories. It recommends keeping real credentials away from agents, using a Git proxy as a hard boundary to limit which branches can change, and using Git hooks as a lighter, best-effort layer for provenance and telemetry.

### Source excerpt

When you hand a repo to an autonomous AI Agent, you need to bound what it can touch and capture what it did. Part 1 -- the approach -- keep the keys away from the agent, a git proxy as the hard boundary, and git hooks as the lighter alternative.

## Prompts Are Guidelines. Code Is the Config.

DevFeed: [Prompts Are Guidelines. Code Is the Config.](<https://devfeed.tech/articles/prompts-are-guidelines-code-is-the-config-30872.md>)

Original publisher: [Read original article](<https://brent.leekley.me/blog/prompt-vs-config/>)

Author: Brent Leekley

Published: 2026-06-08T00:00:00Z

Content type: tutorial

Language: en

Sources: [brent.leekley.me blog](<https://devfeed.tech/sources/brent-leekley-me-blog.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Prompt Engineering](<https://devfeed.tech/topics/prompt-engineering.md>), [Claude](<https://devfeed.tech/topics/claude.md>), [API](<https://devfeed.tech/topics/api.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [JSON](<https://devfeed.tech/topics/json.md>), [context](<https://devfeed.tech/topics/context.md>)

Tags: [agent-reliability](<https://devfeed.tech/tags/agent-reliability.md>), [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [api](<https://devfeed.tech/tags/api.md>), [claude](<https://devfeed.tech/tags/claude.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [schema](<https://devfeed.tech/tags/schema.md>), [stateless](<https://devfeed.tech/tags/stateless.md>), [stop-reason](<https://devfeed.tech/tags/stop-reason.md>), [structured-output](<https://devfeed.tech/tags/structured-output.md>), [til](<https://devfeed.tech/tags/til.md>), [tool-use](<https://devfeed.tech/tags/tool-use.md>)

### AI overview

A Today I Learned field note about building more reliable AI agents by assigning probabilistic judgment to the model and deterministic guarantees to application code. It discusses using code-enforced gates and hooks for requirements that must always hold, branching on stop_reason rather than model text, handling turns that contain both chat and tool calls, and avoiding the assumption that a valid schema guarantees a correct answer.

### Source excerpt

Where the model's judgment ends and your code has to take over -- a Today I Learned field note on building AI agents that hold up in production: stop_reason, forced tool use, hooks, stateless history, and why a valid schema isn't a true answer.

## Accelerating Delivery: How AI Agents Can Own the Initial Code Draft

DevFeed: [Accelerating Delivery: How AI Agents Can Own the Initial Code Draft](<https://devfeed.tech/articles/accelerating-delivery-how-ai-agents-can-own-the-initial-code-draft-33261.md>)

Original publisher: [Read original article](<https://8thlight.com/insights/accelerating-delivery-how-ai-agents-can-own-the-initial-code>)

Author: Stephen Walker

Published: 2026-05-05T21:58:00Z

Content type: article

Language: en

Sources: [8th Light](<https://devfeed.tech/sources/8th-light.md>), [8th Light Insights](<https://devfeed.tech/sources/8th-light-insights.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Loop Engineering](<https://devfeed.tech/topics/loop-engineering.md>), [Pull Request](<https://devfeed.tech/topics/pull-request.md>), [human review](<https://devfeed.tech/topics/human-review.md>), [jira](<https://devfeed.tech/topics/jira.md>), [coding](<https://devfeed.tech/topics/coding.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [Script](<https://devfeed.tech/topics/script.md>)

Tags: [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [ai-and-emerging-tech](<https://devfeed.tech/tags/ai-and-emerging-tech.md>), [code](<https://devfeed.tech/tags/code.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [human-review](<https://devfeed.tech/tags/human-review.md>), [jira](<https://devfeed.tech/tags/jira.md>), [pull-request](<https://devfeed.tech/tags/pull-request.md>), [review](<https://devfeed.tech/tags/review.md>), [sandbox](<https://devfeed.tech/tags/sandbox.md>)

### AI overview

The article describes a pragmatic workflow in which coordinated AI agents turn a Jira ticket into a code draft and pull request for human review. It emphasizes safety through branch permissions, scoped access, scripts and hooks, plus deterministic structures around probabilistic language models. The supplied text is truncated before the full reliability hierarchy and later conclusions.

### Source excerpt

Why This Matters in the Era of Agentic Everything The gap between a Jira ticket and the first pull request (PR) is often a graveyard of productivity. Context switching, boilerplate setup, and requirement analysis can eat up hours of a senior engineer's day before they write a single line of business logic. Recently, industry leaders have showcased "Harness Engineering" [1][2] -- the practice of building autonomous agent workflows that handle end-to-end coding tasks. While their results are inspiring, the barrier to entry can feel insurmountable. The challenge for most teams is finding a starting point that balances long-term vision with immediate ROI. We recently helped a large-scale, high-traffic consumer services platform bridge this gap. Instead of an all-or-nothing architectural overhaul, we took a pragmatic first step: automating the journey from Jira ticket to PR. The Vision: "Let's work on FEAT-123" Our goal was simple. We wanted to enable a developer to provide a single prompt -- "Let's work on FEAT-123" -- and have a coordinated team of AI agents handle the planning, coding, and verification. This culminates in a PR ready for human review. To make this a reality, we focused on three strategic pillars: safety, determinism, and quality. Safety Through Pragmatic Guardrails One of the primary concerns for any engineering leader is "agent drift" -- an AI making unauthorized or hallucinated changes. While an isolated digital sandbox is an ideal long-term goal, we proved that teams can achieve significant safety and progress using existing infrastructure: Branch Permissions: Restrict agent access to specific feature branches. Scoped Access: Use scripts and hooks to define exactly what an agent can and cannot touch. Human-in-the-Loop: Ensure that while the agent proposes the change, a human must always review, approve, and merge the code. By defining the agent's scope as a specialized contributor rather than a system administrator, we mitigated risk while maximizing ou

## Harness engineering: Building reliable environments for AI coding agents

DevFeed: [Harness engineering: Building reliable environments for AI coding agents](<https://devfeed.tech/articles/we-are-becoming-harness-engineers-25257.md>)

Original publisher: [Read original article](<https://kau.sh/blog/harness-engineers/>)

Author: Kaushik Gopal

Published: 2026-04-03T00:00:00Z

Content type: opinion

Language: en

Sources: [Kaushik Gopal's Site](<https://devfeed.tech/sources/kaushik-gopal-s-site.md>)

Topics: [Claude Code](<https://devfeed.tech/topics/claude-code.md>), [codex](<https://devfeed.tech/topics/codex.md>), [Model Context Protocol](<https://devfeed.tech/topics/model-context-protocol.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [claude](<https://devfeed.tech/tags/claude.md>), [claude-code](<https://devfeed.tech/tags/claude-code.md>), [codex](<https://devfeed.tech/tags/codex.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [memory](<https://devfeed.tech/tags/memory.md>), [skills](<https://devfeed.tech/tags/skills.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

This commentary argues that software engineering is increasingly focused on building reliable environments around AI coding agents. It describes harness engineering as configuring files, tools, skills, hooks, feedback loops, memory, guardrails, and blast-radius controls so agents can make changes safely and teams can trust them.

### Source excerpt

The role of a software engineer is shifting. Not toward writing more code but toward building the environment that makes agents reliable. Think about what you actually do with Claude Code or Codex today: you configure AGENTS.md files, set up MCP servers, write skills and hooks, build feedback loops and tune sub-agents. You're not writing as much of the software anymore. You're engineering the harness around the thing that writes the software. Mitchell Hashimoto first coined the term harness engineering -- the work of shaping the environment around an agent so it can act reliably. What the model sees, what tools it has, how it gets feedback, when humans step in. We keep hearing that agents will replace engineers. That shouldn't be the focus of the change we're seeing. What's actually happening is product people shipping features directly. A well-harnessed agent lets someone with product instinct but little engineering background make meaningful changes -- safely. The harness engineer makes that possible. Guardrails, design choices, blast radius controls, feedback loops. The scaffolding that turns "just prompt it" into something a team can trust. I say this from first-hand experience. If you want to go deeper, listen to the episode where my cohost and I dug into it. We landed on five pillars: agent legibility closed feedback loops persistent memory entropy control blast radius controls Honestly one of the most important episodes we've recorded.

## The Engineer's Guide to AI-Assisted Productivity

DevFeed: [The Engineer's Guide to AI-Assisted Productivity](<https://devfeed.tech/articles/the-engineer-s-guide-to-ai-assisted-productivity-35022.md>)

Original publisher: [Read original article](<https://read.theaimerge.com/p/the-engineers-guide-to-ai-assisted>)

Author: Alex Razvant

Published: 2026-02-12T12:01:56Z

Content type: article

Language: en

Sources: [Neural Bits](<https://devfeed.tech/sources/neural-bits.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [code productivity](<https://devfeed.tech/topics/code-productivity.md>), [coding](<https://devfeed.tech/topics/coding.md>), [Pull Request](<https://devfeed.tech/topics/pull-request.md>), [Claude Code](<https://devfeed.tech/topics/claude-code.md>), [cursor](<https://devfeed.tech/topics/cursor.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [Obsidian](<https://devfeed.tech/topics/obsidian-md.md>)

Tags: [agent](<https://devfeed.tech/tags/agent.md>), [ai](<https://devfeed.tech/tags/ai.md>), [also](<https://devfeed.tech/tags/also.md>), [article](<https://devfeed.tech/tags/article.md>), [claude](<https://devfeed.tech/tags/claude.md>), [claude-code](<https://devfeed.tech/tags/claude-code.md>), [code](<https://devfeed.tech/tags/code.md>), [cursor](<https://devfeed.tech/tags/cursor.md>), [developer-productivity](<https://devfeed.tech/tags/developer-productivity.md>), [guide](<https://devfeed.tech/tags/guide.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [obsidian](<https://devfeed.tech/tags/obsidian.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [productivity](<https://devfeed.tech/tags/productivity.md>), [pull-request](<https://devfeed.tech/tags/pull-request.md>)

### AI overview

This article argues that AI-assisted software development should prioritize design, planning, maintainability, and effective safeguards over raw lines of code. It presents habits involving Cursor Rules, Claude Code Skills, agent plugins, pull-request rules, reviews, hooks, and an Obsidian-based daily memory dump.

### Source excerpt

Six habits that keep you fast and maintainable. Cursor Rules, Claude Code Skills, Agent Plugins, PR rules, non-nitpicky reviews, hooks, and Daily memory dump with Obsidian.

## Announcing Lix 2.94 "Açaí na tigela"

DevFeed: [Announcing Lix 2.94 "Açaí na tigela"](<https://devfeed.tech/articles/announcing-lix-2-94-acai-na-tigela-31378.md>)

Original publisher: [Read original article](<https://lix.systems/blog/2025-11-18-lix-2.94-release/>)

Published: 2025-11-18T00:00:00Z

Content type: release

Language: en

Sources: [News on Lix](<https://devfeed.tech/sources/news-on-lix.md>)

Topics: [Remote Procedure Call (RPC)](<https://devfeed.tech/topics/rpc.md>), [Cap'n Proto](<https://devfeed.tech/topics/capnproto.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [Logging](<https://devfeed.tech/topics/logging.md>)

Tags: [announce](<https://devfeed.tech/tags/announce.md>), [bugfixes](<https://devfeed.tech/tags/bugfixes.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [improvements](<https://devfeed.tech/tags/improvements.md>), [logging](<https://devfeed.tech/tags/logging.md>), [performance](<https://devfeed.tech/tags/performance.md>), [release](<https://devfeed.tech/tags/release.md>), [rpc](<https://devfeed.tech/tags/rpc.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

Lix 2.94 is a major release focused on bug fixes, quality-of-life and performance improvements, with initial integration of the Cap'n Proto RPC runtime to replace a bespoke implementation. It includes Cap'n Proto protocol definitions for build hooks and logging, enabling multiple build hook processes to wait concurrently.

### Source excerpt

We at the Lix team are proud to announce our fifth major release, version 2.94 "Açaí na tigela". This release focuses on bugfixes, quality-of-life improvements, performance improvements and started integrating Lix with the Cap'n'Proto remote procedure call runtime, in order to replace the previous bespoke implementation.

## My pre-commit config for Hugo blog

DevFeed: [My pre-commit config for Hugo blog](<https://devfeed.tech/articles/my-pre-commit-config-for-hugo-blog-27692.md>)

Original publisher: [Read original article](<https://gagor.pro/2024/01/my-pre-commit-config-for-hugo-blog/>)

Author: Tom

Published: 2024-01-29T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [hooks](<https://devfeed.tech/topics/hooks.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [Git](<https://devfeed.tech/topics/git.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [make](<https://devfeed.tech/topics/make.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [config](<https://devfeed.tech/tags/config.md>), [devops](<https://devfeed.tech/tags/devops.md>), [git](<https://devfeed.tech/tags/git.md>), [git-pre-commit-configuration](<https://devfeed.tech/tags/git-pre-commit-configuration.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [hugo-blog-automation](<https://devfeed.tech/tags/hugo-blog-automation.md>), [hugo-development-tips](<https://devfeed.tech/tags/hugo-development-tips.md>), [linux](<https://devfeed.tech/tags/linux.md>), [macos](<https://devfeed.tech/tags/macos.md>), [make](<https://devfeed.tech/tags/make.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [pre-commit](<https://devfeed.tech/tags/pre-commit.md>), [pre-commit-hooks](<https://devfeed.tech/tags/pre-commit-hooks.md>), [pre-commit-setup](<https://devfeed.tech/tags/pre-commit-setup.md>), [static-site-optimization](<https://devfeed.tech/tags/static-site-optimization.md>)

### AI overview

A tutorial showing how to configure pre-commit hooks for a Hugo blog. The configuration automates linting, syntax checks, file optimization, and related cleanup tasks when files are committed.

### Source excerpt

Learn how to set up and use pre-commit hooks to automate tasks like linting, syntax checks, and optimizations for your Hugo blog.

## Build and Deploy a Simple ReactJS Website: Part 1

DevFeed: [Build and Deploy a Simple ReactJS Website: Part 1](<https://devfeed.tech/articles/build-and-deploy-a-simple-reactjs-website-part-1-37514.md>)

Original publisher: [Read original article](<https://blog.apartment304.com/build-simple-react-app/>)

Author: Claire Rhoda

Published: 2023-06-30T19:08:00Z

Content type: tutorial

Language: en

Sources: [Apartment 304](<https://devfeed.tech/sources/apartment-304.md>)

Topics: [React](<https://devfeed.tech/topics/react.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [CSS](<https://devfeed.tech/topics/css.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Code](<https://devfeed.tech/topics/code.md>), [hooks](<https://devfeed.tech/topics/hooks.md>)

Tags: [apartment-304](<https://devfeed.tech/tags/apartment-304.md>), [aws](<https://devfeed.tech/tags/aws.md>), [bash](<https://devfeed.tech/tags/bash.md>), [beginners](<https://devfeed.tech/tags/beginners.md>), [css](<https://devfeed.tech/tags/css.md>), [custom-software-solutions](<https://devfeed.tech/tags/custom-software-solutions.md>), [devops](<https://devfeed.tech/tags/devops.md>), [devops-engineer](<https://devfeed.tech/tags/devops-engineer.md>), [editor](<https://devfeed.tech/tags/editor.md>), [github](<https://devfeed.tech/tags/github.md>), [guide](<https://devfeed.tech/tags/guide.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [reactjs](<https://devfeed.tech/tags/reactjs.md>), [software-architecture](<https://devfeed.tech/tags/software-architecture.md>), [software-development](<https://devfeed.tech/tags/software-development.md>), [software-engineer](<https://devfeed.tech/tags/software-engineer.md>)

### AI overview

This tutorial is the first part of a series on building and uploading a personal website. It introduces creating a ReactJS project, styling it with CSS, and using common ReactJS techniques, tools, and hooks.

### Source excerpt

The first part of this series focuses on how to code a personal portfolio using the ReactJS JavaScript framework. This project will go over techniques, tools, and hooks commonly used in ReactJS along with some basic CSS to make our website look presentable.

## Sunsetting Deploy Hooks, Migrate to App Webhooks

DevFeed: [Sunsetting Deploy Hooks, Migrate to App Webhooks](<https://devfeed.tech/articles/sunsetting-deploy-hooks-migrate-to-app-webhooks-26394.md>)

Original publisher: [Read original article](<https://www.heroku.com/blog/deployhooks-sunset/>)

Author: Nicolás Risaro

Published: 2022-08-17T22:36:00Z

Content type: release

Language: en

Sources: [Heroku](<https://devfeed.tech/sources/heroku.md>)

Topics: [Heroku](<https://devfeed.tech/topics/heroku.md>), [migration](<https://devfeed.tech/topics/migration.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [releases](<https://devfeed.tech/topics/releases.md>)

Tags: [cloud-infrastructure](<https://devfeed.tech/tags/cloud-infrastructure.md>), [email](<https://devfeed.tech/tags/email.md>), [heroku](<https://devfeed.tech/tags/heroku.md>), [http](<https://devfeed.tech/tags/http.md>), [irc](<https://devfeed.tech/tags/irc.md>), [migration](<https://devfeed.tech/tags/migration.md>), [news](<https://devfeed.tech/tags/news.md>), [notifications](<https://devfeed.tech/tags/notifications.md>), [payload](<https://devfeed.tech/tags/payload.md>), [platform-updates](<https://devfeed.tech/tags/platform-updates.md>), [release](<https://devfeed.tech/tags/release.md>), [releases](<https://devfeed.tech/tags/releases.md>), [webhooks](<https://devfeed.tech/tags/webhooks.md>)

### AI overview

Heroku is deprecating Deploy Hooks and recommends migrating to app webhooks. New deploy hooks will no longer be accepted from October 17, 2022, while existing hooks will continue working until February 17, 2023. The article explains webhook benefits and migration differences, including limitations for email, IRC, and dynamic URL parameters.

### Source excerpt

Webhooks are a more secure, reliable, and powerful alternative to Deploy Hooks, and five years ago, we made app webhooks Generally Available. Today, we are deprecating Deploy Hooks and encouraging customers to migrate to app webhooks. Starting October 17, 2022, we will stop accepting new deploy hooks. Existing hooks will continue working until the product [...] The post Sunsetting Deploy Hooks, Migrate to App Webhooks appeared first on Heroku.

## My tmux workflow

DevFeed: [My tmux workflow](<https://devfeed.tech/articles/my-tmux-workflow-37861.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/tmux-sessionizer/>)

Author: Carlos Alexandro Becker

Published: 2022-06-06T00:00:00Z

Content type: tutorial

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [Shell](<https://devfeed.tech/topics/shell.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [POSIX](<https://devfeed.tech/topics/posix.md>), [ssh](<https://devfeed.tech/topics/ssh.md>), [dotfiles](<https://devfeed.tech/topics/dotfiles.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [hooks](<https://devfeed.tech/tags/hooks.md>), [posix](<https://devfeed.tech/tags/posix.md>), [shell](<https://devfeed.tech/tags/shell.md>), [ssh](<https://devfeed.tech/tags/ssh.md>), [terminal](<https://devfeed.tech/tags/terminal.md>)

### AI overview

A developer describes a tmux workflow for local and SSH-based remote work, including a project session selector that sorts projects by usage. The article then explains using a shell trap to avoid losing an SSH connection when exiting the last pane of a session.

### Source excerpt

I wanted to share a quick thing that made my life easier on tmux lately, but before we dig into that, I feel like I need to explain how I usually work.

## How and When to Use Context in React with Hooks

DevFeed: [How and When to Use Context in React with Hooks](<https://devfeed.tech/articles/how-and-when-to-use-context-in-react-with-hooks-37603.md>)

Original publisher: [Read original article](<https://www.taniarascia.com/react-context-api-hooks/>)

Author: hello@taniarascia.com

Published: 2021-06-15T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tania Rascia](<https://devfeed.tech/sources/tania-rascia.md>)

Topics: [React](<https://devfeed.tech/topics/react.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [context](<https://devfeed.tech/topics/context.md>), [Redux](<https://devfeed.tech/topics/redux.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [code](<https://devfeed.tech/tags/code.md>), [dashboard](<https://devfeed.tech/tags/dashboard.md>), [graph](<https://devfeed.tech/tags/graph.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [react](<https://devfeed.tech/tags/react.md>), [redux](<https://devfeed.tech/tags/redux.md>), [state](<https://devfeed.tech/tags/state.md>), [state-management](<https://devfeed.tech/tags/state-management.md>), [table](<https://devfeed.tech/tags/table.md>)

### AI overview

A tutorial on using React Context with modern functional components and hooks. It explains that Context can pass data across components and is useful for localized, reusable state, while Redux remains more suitable for large-scale global state management.

### Source excerpt

A while ago, I wrote an article about Using Context API in React. However, most of my examples on that page used Class components, , and...

## Announcing GoReleaser Pro

DevFeed: [Announcing GoReleaser Pro](<https://devfeed.tech/articles/announcing-goreleaser-pro-37760.md>)

Original publisher: [Read original article](<https://carlosbecker.com/posts/goreleaser-pro/>)

Author: Carlos Alexandro Becker

Published: 2021-05-30T00:00:00Z

Content type: release

Language: en

Sources: [Carlos Becker](<https://devfeed.tech/sources/carlos-becker.md>)

Topics: [version](<https://devfeed.tech/topics/version.md>), [monorepo](<https://devfeed.tech/topics/monorepo.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [Template](<https://devfeed.tech/topics/template.md>)

Tags: [announcements](<https://devfeed.tech/tags/announcements.md>), [bugfixes](<https://devfeed.tech/tags/bugfixes.md>), [features](<https://devfeed.tech/tags/features.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [monorepo](<https://devfeed.tech/tags/monorepo.md>), [oss](<https://devfeed.tech/tags/oss.md>), [release](<https://devfeed.tech/tags/release.md>), [template](<https://devfeed.tech/tags/template.md>)

### AI overview

The author announces GoReleaser Pro after years of maintaining GoReleaser largely for free. GoReleaser is being split into OSS and Pro, with initial Pro features including configuration file includes, improved global hooks, monorepo support, and custom template variables.

### Source excerpt

After more than 4 years working on GoReleaser, I'm launching a Pro version!

## Simple video buffering loader in React

DevFeed: [Simple video buffering loader in React](<https://devfeed.tech/articles/simple-video-buffering-loader-in-react-37341.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/react-simple-video-buffering-loader/>)

Author: Stanko

Published: 2020-10-16T00:00:00Z

Content type: tutorial

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [React](<https://devfeed.tech/topics/react.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [Code](<https://devfeed.tech/topics/code.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Accessibility](<https://devfeed.tech/topics/accessibility.md>), [User experience (UX)](<https://devfeed.tech/topics/ux.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [code](<https://devfeed.tech/tags/code.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [react](<https://devfeed.tech/tags/react.md>), [ux](<https://devfeed.tech/tags/ux.md>)

### AI overview

A tutorial for building a React video component with accessible basic controls and a buffering loader. It explains how to track buffering with video events and use debounce timings to prevent rapid state changes that cause poor user experience.

### Source excerpt

For multiple projects, I had to add a simple video component with play/pause buttonAlways include at least basic video controls for accessibility and a buffering loader. It is not hard to detect the buffering state, but it can be tricky to get everything right. Therefore, I created a simple component which I now copy from project to project with slight style adjustments. Jump to the code if you are not interested in how it's made. Demo # Here you can see the final version (it might be easier to see the functionality if you open it in a separate tab). How it works # The solution is simple and relies on four video events: waiting - playback has stopped because of a temporary lack of data pause - playback has been paused play - playback has begun playing - playback is ready to start after having been paused or delayed due to lack of data We are going to use waiting event to set our loading flag to true and all other events to set it to false. If the video is already playing, and buffering happens, we'll get events fired in this order: "waiting" "playing" This is all fine and dandy, but if the video is paused, and we play it things get a little messy. Now, if buffering happens, we'll get these events fired: "play" "playing" "waiting" "playing" All of these events are fired in a very quick succession and alter the state too fast leading to some bad UX. The secret is to add a short debounce time to avoid it. What I found to work best is 200ms for waiting event and 50ms for all others. Code # I'm using React with hooks, but the same thing can be easily ported to React class or vanilla JavaScript. import React, { useEffect, useState, useRef } from 'react'; const PLAYING_DEBOUNCE_TIME = 50; const WAITING_DEBOUNCE_TIME = 200; const Video = ({ src, ...props }) => { const [isPlaying, setIsPlaying] = useState(false); const [isWaiting, setIsWaiting] = useState(false); const isWaitingTimeout = useRef(null); const isPlayingTimeout = useRef(null); const videoElementRef = useRef(); u

## React Patterns for Fetching, Storing, and Retrieving Data

DevFeed: [React Patterns for Fetching, Storing, and Retrieving Data](<https://devfeed.tech/articles/react-data-survival-kit-21879.md>)

Original publisher: [Read original article](<https://ponyfoo.com/articles/react-data-survival-kit>)

Author: ryan.glover@cleverbeagle.com (Ryan Glover)

Published: 2019-06-03T12:20:42Z

Content type: tutorial

Language: en

Sources: [Pony Foo](<https://devfeed.tech/sources/pony-foo.md>)

Topics: [React](<https://devfeed.tech/topics/react.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [REST API](<https://devfeed.tech/topics/rest-api.md>), [Remote Procedure Call (RPC)](<https://devfeed.tech/topics/rpc.md>), [GraphQL](<https://devfeed.tech/topics/graphql.md>)

Tags: [autosave](<https://devfeed.tech/tags/autosave.md>), [code](<https://devfeed.tech/tags/code.md>), [data](<https://devfeed.tech/tags/data.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [react](<https://devfeed.tech/tags/react.md>), [refs](<https://devfeed.tech/tags/refs.md>), [rest-api](<https://devfeed.tech/tags/rest-api.md>), [rpc](<https://devfeed.tech/tags/rpc.md>), [state](<https://devfeed.tech/tags/state.md>)

### AI overview

A tutorial on common React patterns for fetching, storing, and retrieving data. It emphasizes using simple approaches such as hooks, lifecycle methods, and local state, while noting that Redux or other architectures may be appropriate in some cases.

### Source excerpt

Handling data in React can be treacherous if you don't know your way around. Learn some common patterns for fetching, storing, and retrieving data in this guide to help you avoid messy code traps. React's flexibility means you can handle data in a lot of different ways. This guide will teach you patterns for fetching, storing, and retrieving data in React without the stress of maintaining a complex system. As part of my mentorship business, I have the unique opportunity to work with React daily across a wide range of projects. Teaching others how to build their own software products, I've come to find that most problems in React can be solved with some very simple techniques. While some cases may call for a full-blown architecture using something like Redux (or other fanciness), a lot of the time React's built-in lifecycle methods and local state do the trick. In my opinion, the mark of a really great developer is one who can solve a problem with as few moving parts as possible. While it can feel great to build a monument to engineering in the form of a complex system, often it's just overkill. In this tutorial, I'm going to share what I call my "data survival kit:" the most common patterns and hacks I use in my day-to-day work for managing data. By the time you finish, you'll have everything you need to build data-driven UIs that offer a polished user experience. Loading Data via Hooks As most folks are building "database apps," loading data is arguably one of the most common tasks to perform. Ultimately, where your data is coming from dictates your need for this. This pattern is best utilized in apps using a REST API or an RPC (remote procedure call) to fetch data. For example, if you're loading data via GraphQL, it's likely that you'll use this technique sparingly (e.g., when you need to fetch data programmatically as opposed to on page load), relying on tools like Apollo to load your data for you. import React, { useEffect, useState } from 'react'; function Post

## Discovering patterns with React hooks

DevFeed: [Discovering patterns with React hooks](<https://devfeed.tech/articles/discovering-patterns-with-react-hooks-21874.md>)

Original publisher: [Read original article](<https://ponyfoo.com/articles/discovering-patterns-with-react-hooks>)

Author: m@peka.la (Maciek Pekala)

Published: 2019-05-13T12:15:55Z

Content type: article

Language: en

Sources: [Pony Foo](<https://devfeed.tech/sources/pony-foo.md>)

Topics: [React Hooks](<https://devfeed.tech/topics/react-hooks.md>), [React](<https://devfeed.tech/topics/react.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [best-practices](<https://devfeed.tech/tags/best-practices.md>), [coding](<https://devfeed.tech/tags/coding.md>), [components](<https://devfeed.tech/tags/components.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [react](<https://devfeed.tech/tags/react.md>), [react-hooks](<https://devfeed.tech/tags/react-hooks.md>)

### AI overview

An exploration of patterns that emerge when building stateful React components with hooks. The article introduces the author's Choco pattern, which combines Context, a Hook, and a Component for top-level, centralized, unique UI widgets that expose functionality to other application components.

### Source excerpt

One of the things I enjoy the most about coding is discovering patterns. Being aware and mindful of the patterns emerging in your codebase can make it easier to keep that codebase consistent, readable and easy to navigate. Most patterns will remain unspoken, and some, that prove notably elegant, are named and promoted as best practices. Others might even be candidates for a basis of a new abstraction, although I recommend restraint as it's worth remembering that abstractions are expensive. If you're not familiar with the topic or React hooks, there is plenty of introductory as well as in-depth materials out there. I can also shamelessly recommend my talk on hooks from a recent React Copenhagen meetup. What follows assume at least some understanding of what hooks are and how to use them. Pattern extinction level event Discovering new patterns is relatively rare when working with established technologies, but every now and then a new idea comes up that stirs things up within some ecosystem. Enter React hooks. Hooks enable a drastically different way to build stateful components in React, which means that they also invalidate 1 a lot of the established patterns. However, being an exceptionally well thought-through and composition-friendly abstraction, hooks enabled new, elegant patterns to emerge. Over the last few months, I've been building apps with hooks and I've been having a lot of fun discovering these patterns. I'd like to share one, that I've grown especially fond of. For the lack of a better name, and for sole the purpose of this blog post, let's call it the Choco pattern (from Context, HOok, COpomonent). The pattern comes useful when you need a UI widget which is top-level, centralised and unique across the application and needs to expose some functionality to the rest of the components in the app. It might sound vague at the moment, so let's try to go through solving a concrete problem where I noticed the Choco pattern manifest itself. Exhibit A: Feature tog

## A Complete Guide to useEffect

DevFeed: [A Complete Guide to useEffect](<https://devfeed.tech/articles/a-complete-guide-to-useeffect-36157.md>)

Original publisher: [Read original article](<https://overreacted.io/a-complete-guide-to-useeffect/>)

Published: 2019-03-09T00:00:00Z

Content type: tutorial

Language: en

Sources: [Dan Abramov](<https://devfeed.tech/sources/dan-abramov.md>)

Topics: [hooks](<https://devfeed.tech/topics/hooks.md>), [React](<https://devfeed.tech/topics/react.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [complete](<https://devfeed.tech/tags/complete.md>), [deep-dive](<https://devfeed.tech/tags/deep-dive.md>), [guide](<https://devfeed.tech/tags/guide.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [react](<https://devfeed.tech/tags/react.md>)

### AI overview

A deep guide to understanding React's useEffect Hook, including its relationship to component lifecycles, data fetching, dependencies, refetching loops, and stale props or state.

### Source excerpt

Effects are a part of your data flow.

## Making setInterval Declarative with React Hooks

DevFeed: [Making setInterval Declarative with React Hooks](<https://devfeed.tech/articles/making-setinterval-declarative-with-react-hooks-36178.md>)

Original publisher: [Read original article](<https://overreacted.io/making-setinterval-declarative-with-react-hooks/>)

Published: 2019-02-04T00:00:00Z

Content type: tutorial

Language: en

Sources: [Dan Abramov](<https://devfeed.tech/sources/dan-abramov.md>)

Topics: [React Hooks](<https://devfeed.tech/topics/react-hooks.md>), [React](<https://devfeed.tech/topics/react.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [declarative](<https://devfeed.tech/tags/declarative.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [react](<https://devfeed.tech/tags/react.md>), [react-hooks](<https://devfeed.tech/tags/react-hooks.md>), [refs](<https://devfeed.tech/tags/refs.md>)

### AI overview

This tutorial explains how to use a custom React Hook to make setInterval work with React's programming model. It covers interval setup and cleanup, the relationship between intervals and component lifecycle, and how dynamic arguments enable adjustable delays.

### Source excerpt

How I learned to stop worrying and love refs.

## Why Do React Hooks Rely on Call Order?

DevFeed: [Why Do React Hooks Rely on Call Order?](<https://devfeed.tech/articles/why-do-react-hooks-rely-on-call-order-36208.md>)

Original publisher: [Read original article](<https://overreacted.io/why-do-hooks-rely-on-call-order/>)

Published: 2018-12-13T00:00:00Z

Content type: opinion

Language: en

Sources: [Dan Abramov](<https://devfeed.tech/sources/dan-abramov.md>)

Topics: [hooks](<https://devfeed.tech/topics/hooks.md>), [React Hooks](<https://devfeed.tech/topics/react-hooks.md>), [React](<https://devfeed.tech/topics/react.md>)

Tags: [classes](<https://devfeed.tech/tags/classes.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [mixins](<https://devfeed.tech/tags/mixins.md>), [react](<https://devfeed.tech/tags/react.md>), [react-hooks](<https://devfeed.tech/tags/react-hooks.md>)

### AI overview

This personal article explains why React Hooks rely on a persistent call index between component re-renders. It discusses the design rationale, the ability to use Hooks repeatedly in a component, and the implications of that controversial choice.

### Source excerpt

Lessons learned from mixins, render props, HOCs, and classes.

## Why use Observable.create() and not just inherit from Observable?

DevFeed: [Why use Observable.create() and not just inherit from Observable?](<https://devfeed.tech/articles/why-use-observable-create-and-not-just-inherit-from-observable-29128.md>)

Original publisher: [Read original article](<https://www.grokkingandroid.com/why-use-observable-create-and-not-just-inherit-from-observable/>)

Author: Wolfram Rittmeyer

Published: 2015-10-09T05:00:40Z

Content type: tutorial

Language: en

Sources: [Grokking Android](<https://devfeed.tech/sources/grokking-android.md>)

Topics: [RxJava](<https://devfeed.tech/topics/rxjava.md>), [Inheritance](<https://devfeed.tech/topics/inheritance.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [debug](<https://devfeed.tech/topics/debug.md>), [Monitoring](<https://devfeed.tech/topics/monitoring.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [create](<https://devfeed.tech/tags/create.md>), [debug](<https://devfeed.tech/tags/debug.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [observable](<https://devfeed.tech/tags/observable.md>), [rxjava](<https://devfeed.tech/tags/rxjava.md>)

### AI overview

This tutorial explains why RxJava developers should generally create Observables with Observable.create() instead of inheriting from Observable. It discusses final methods, the fluent API, and hooks that support debugging and monitoring, while noting that inheritance can still be appropriate in cases such as Subject.

### Source excerpt

When starting to use RxJava you have to create Observables. They are at the very core of RxJava. But how to do so? A look at the Observable class might make you dizzy. Looking at the source even more so. Not only does this beast consist of nearly 10.000 lines (though, 7600 lines of that [...] Continue Reading "Why use Observable.create() and not just inherit from Observable?" The post Why use Observable.create() and not just inherit from Observable? appeared first on Grokking Android.