# export

Published articles for export.

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

## Kubo 0.42.0 release: on-demand CID announcements, partial CAR import and export, and reprovide changes

DevFeed: [Kubo 0.42.0 release: on-demand CID announcements, partial CAR import and export, and reprovide changes](<https://devfeed.tech/articles/just-released-kubo-0-42-0-35642.md>)

Original publisher: [Read original article](<https://github.com/ipfs/kubo/releases/tag/v0.42.0>)

Author: Ipfs

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

Content type: release

Language: en

Sources: [IPFS](<https://devfeed.tech/sources/ipfs.md>)

Topics: [releases](<https://devfeed.tech/topics/releases.md>), [version](<https://devfeed.tech/topics/version.md>), [export](<https://devfeed.tech/topics/export.md>), [import](<https://devfeed.tech/topics/import.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Routing (disambiguation)](<https://devfeed.tech/topics/routing.md>)

Tags: [block](<https://devfeed.tech/tags/block.md>), [export](<https://devfeed.tech/tags/export.md>), [gateway](<https://devfeed.tech/tags/gateway.md>), [import](<https://devfeed.tech/tags/import.md>), [kubo](<https://devfeed.tech/tags/kubo.md>), [migration](<https://devfeed.tech/tags/migration.md>), [other](<https://devfeed.tech/tags/other.md>), [release-notes](<https://devfeed.tech/tags/release-notes.md>), [releases](<https://devfeed.tech/tags/releases.md>), [retries](<https://devfeed.tech/tags/retries.md>), [routing](<https://devfeed.tech/tags/routing.md>), [store](<https://devfeed.tech/tags/store.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

Kubo 0.42.0 adds on-demand CID announcements, supports streaming CIDs from standard input, and introduces partial CAR export and import. It also changes providing semantics, fixes pin operations blocked by reprovide cycles, and improves migration retries for older repositories.

### Source excerpt

Just released: Kubo 0.42.0!

## Waiting for PostgreSQL 19 - json format for COPY TO

DevFeed: [Waiting for PostgreSQL 19 - json format for COPY TO](<https://devfeed.tech/articles/waiting-for-postgresql-19-json-format-for-copy-to-33684.md>)

Original publisher: [Read original article](<https://www.depesz.com/2026/03/29/waiting-for-postgresql-19-json-format-for-copy-to/>)

Author: depesz

Published: 2026-03-29T12:34:22Z

Content type: article

Language: en

Sources: [select \* from depesz;](<https://devfeed.tech/sources/select-from-depesz.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [JSON](<https://devfeed.tech/topics/json.md>), [export](<https://devfeed.tech/topics/export.md>), [data](<https://devfeed.tech/topics/data.md>), [Query (disambiguation)](<https://devfeed.tech/topics/query.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>)

Tags: [command](<https://devfeed.tech/tags/command.md>), [copy](<https://devfeed.tech/tags/copy.md>), [data](<https://devfeed.tech/tags/data.md>), [developers](<https://devfeed.tech/tags/developers.md>), [export](<https://devfeed.tech/tags/export.md>), [json](<https://devfeed.tech/tags/json.md>), [pg19](<https://devfeed.tech/tags/pg19.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [query](<https://devfeed.tech/tags/query.md>), [stream](<https://devfeed.tech/tags/stream.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [waiting](<https://devfeed.tech/tags/waiting.md>)

### AI overview

The article discusses a PostgreSQL 19 patch adding a JSON format option to COPY TO. It allows table data or query results to be exported as a stream of JSON objects, one object per line, with an option to wrap the output in an array.

### Source excerpt

On 20th of March 2026, Andrew Dunstan committed patch: json format for COPY TO This introduces the JSON format option for the COPY TO command, allowing users to export query results or table data directly as a stream of JSON objects (one per line, NDJSON style). The JSON format is currently supported only ... Continue reading "Waiting for PostgreSQL 19 - json format for COPY TO"

## 5 Key Predictions for the Data Industry in 2026

DevFeed: [5 Key Predictions for the Data Industry in 2026](<https://devfeed.tech/articles/5-key-predictions-for-the-data-industry-in-2026-37137.md>)

Original publisher: [Read original article](<https://seattledataguy.substack.com/p/5-key-predictions-for-the-data-industry-b7c>)

Author: SeattleDataGuy

Published: 2026-01-31T19:29:24Z

Content type: opinion

Language: en

Sources: [SeattleDataGuy's Newsletter](<https://devfeed.tech/sources/seattledataguy-s-newsletter.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>), [Microsoft](<https://devfeed.tech/topics/microsoft.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [export](<https://devfeed.tech/topics/export.md>), [Azure](<https://devfeed.tech/topics/azure.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [ai](<https://devfeed.tech/tags/ai.md>), [azure](<https://devfeed.tech/tags/azure.md>), [data](<https://devfeed.tech/tags/data.md>), [export](<https://devfeed.tech/tags/export.md>), [microsoft](<https://devfeed.tech/tags/microsoft.md>), [predictions](<https://devfeed.tech/tags/predictions.md>)

### AI overview

A commentary piece offers predictions about the data industry over the next year or two, including a possible Microsoft Fabric rebrand and the continued gap between demand for AI and companies' reliance on traditional data workflows such as ERP exports to Excel, SFTP, and APIs.

### Source excerpt

Hype Cycles, Rebrands, and the Messy Reality of Data

## Backup Buddy: A Simple Tool to Backup Your Website Content

DevFeed: [Backup Buddy: A Simple Tool to Backup Your Website Content](<https://devfeed.tech/articles/backup-buddy-a-simple-tool-to-backup-your-website-content-37538.md>)

Original publisher: [Read original article](<https://deanhume.com/backup-buddy-a-simple-tool-to-backup-your-website-content/>)

Author: Dean Hume

Published: 2025-12-01T12:33:06Z

Content type: tutorial

Language: en

Sources: [Dean Hume](<https://devfeed.tech/sources/dean-hume.md>)

Topics: [Tool](<https://devfeed.tech/topics/tool.md>), [Website](<https://devfeed.tech/topics/website.md>), [Markdown](<https://devfeed.tech/topics/markdown.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [HTML](<https://devfeed.tech/topics/html.md>), [static-site-generator](<https://devfeed.tech/topics/static-site-generator.md>), [Git](<https://devfeed.tech/topics/git.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [Jekyll](<https://devfeed.tech/topics/jekyll.md>)

Tags: [backup](<https://devfeed.tech/tags/backup.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [export](<https://devfeed.tech/tags/export.md>), [git](<https://devfeed.tech/tags/git.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [jekyll](<https://devfeed.tech/tags/jekyll.md>), [offline](<https://devfeed.tech/tags/offline.md>), [portable](<https://devfeed.tech/tags/portable.md>), [release](<https://devfeed.tech/tags/release.md>), [static-site-generator](<https://devfeed.tech/tags/static-site-generator.md>), [tool](<https://devfeed.tech/tags/tool.md>), [website](<https://devfeed.tech/tags/website.md>)

### AI overview

Backup Buddy is a command-line tool that backs up website content by using a sitemap to download pages, convert HTML to Markdown, and save images and videos locally. The article explains its use for offline reading, migration, search, sharing, and Git version control.

### Source excerpt

Have you ever wanted to create a backup of your website or blog? Maybe you're migrating to a new platform, or perhaps you just want a portable archive of your content that you can read offline. I've previously experienced issues with this site going down and

## IPTC export changed in Photos for macOS 26 Tahoe

DevFeed: [IPTC export changed in Photos for macOS 26 Tahoe](<https://devfeed.tech/articles/iptc-export-changed-in-photos-for-macos-26-tahoe-39469.md>)

Original publisher: [Read original article](<https://akrabat.com/iptc-export-changed-in-photos-for-macos-26-tahoe/>)

Author: Rob

Published: 2025-11-11T11:00:00Z

Content type: article

Language: en

Sources: [Rob Allen](<https://devfeed.tech/sources/rob-allen.md>)

Topics: [macOS](<https://devfeed.tech/topics/macos.md>), [data](<https://devfeed.tech/topics/data.md>), [properties](<https://devfeed.tech/topics/properties.md>)

Tags: [data](<https://devfeed.tech/tags/data.md>), [exiftool](<https://devfeed.tech/tags/exiftool.md>), [export](<https://devfeed.tech/tags/export.md>), [mac](<https://devfeed.tech/tags/mac.md>), [macos](<https://devfeed.tech/tags/macos.md>), [photography](<https://devfeed.tech/tags/photography.md>), [rodeo-flickr-uploader](<https://devfeed.tech/tags/rodeo-flickr-uploader.md>)

### AI overview

Photos for macOS 26 Tahoe changed JPEG IPTC export behavior: Object Name, Caption-Abstract, and Keywords properties are no longer populated as they were in macOS 15 Sequoia. The export still provides the data through Title, Description, and Subject, and Rodeo version 0.5 was updated to resolve the issue.

### Source excerpt

I've recently upgraded my MacBook Air to macOS 26 Tahoe and one thing I noticed was that Rodeo's rules were no longer working. With the help of exiftool, I worked out that when exporting to JPEG from Photos for macOS 26 Tahoe, the Object Name, Caption-Abstract and Keywords IPRC properties were no longer being populated. This is a regression from macOS 15 Sequoia. This is the data from exiftool. Output from macOS 15 Sequoia: $... continue reading.

## ScreenshotWhale Generates App Store Screenshots with a Layer-Based Editor and Automatic Localization

DevFeed: [ScreenshotWhale Generates App Store Screenshots with a Layer-Based Editor and Automatic Localization](<https://devfeed.tech/articles/coded-a-little-sass-to-help-me-generate-store-app-screenshots-quick-37911.md>)

Original publisher: [Read original article](<https://newsletter.jorgecastillo.dev/p/coded-a-little-sass-to-help-me-generate>)

Author: Jorge Castillo

Published: 2025-09-16T16:36:22Z

Content type: article

Language: en

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

Topics: [App](<https://devfeed.tech/topics/app.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Vibe coding](<https://devfeed.tech/topics/vibe-coding.md>), [Figma](<https://devfeed.tech/topics/figma.md>), [Internationalization (i18n)](<https://devfeed.tech/topics/i18n.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [User Experience](<https://devfeed.tech/topics/user-experience.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [app-store](<https://devfeed.tech/tags/app-store.md>), [building](<https://devfeed.tech/tags/building.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [code](<https://devfeed.tech/tags/code.md>), [coding](<https://devfeed.tech/tags/coding.md>), [editor](<https://devfeed.tech/tags/editor.md>), [export](<https://devfeed.tech/tags/export.md>), [figma](<https://devfeed.tech/tags/figma.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [ios](<https://devfeed.tech/tags/ios.md>), [languages](<https://devfeed.tech/tags/languages.md>), [phones](<https://devfeed.tech/tags/phones.md>), [templates](<https://devfeed.tech/tags/templates.md>)

### AI overview

The article introduces ScreenshotWhale, a cloud-based service for creating app store screenshots. It offers a Figma-style layer-based editor, templates, support for Android and iOS device formats, and automatic internationalization during export. The product is in its initial stages and is presented as seeking user feedback.

### Source excerpt

Some words for the people who joined the newsletter these days.

## Launching ScreenshotWhale.com 🐋

DevFeed: [Launching ScreenshotWhale.com 🐋](<https://devfeed.tech/articles/launching-screenshotwhale-com-37919.md>)

Original publisher: [Read original article](<https://newsletter.jorgecastillo.dev/p/launching-screenshotwhalecom>)

Author: Jorge Castillo

Published: 2025-09-13T15:03:52Z

Content type: release

Language: en

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

Topics: [App](<https://devfeed.tech/topics/app.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Internationalization (i18n)](<https://devfeed.tech/topics/i18n.md>), [export](<https://devfeed.tech/topics/export.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [editor](<https://devfeed.tech/tags/editor.md>), [export](<https://devfeed.tech/tags/export.md>), [i18n](<https://devfeed.tech/tags/i18n.md>), [image](<https://devfeed.tech/tags/image.md>), [ios](<https://devfeed.tech/tags/ios.md>), [layer](<https://devfeed.tech/tags/layer.md>), [screenshots](<https://devfeed.tech/tags/screenshots.md>), [templates](<https://devfeed.tech/tags/templates.md>)

### AI overview

ScreenshotWhale has launched as a cloud-based tool for creating app screenshots. It includes an online editor, templates, multilingual export, support for iOS and Android form factors, a mirror feature, app store layout settings, and layered editing.

### Source excerpt

The wait is over, screenshotwhale is live today 🎉

## From ePA 2.6 to 3.0 : Healthcare Data Integration for Electronic Patient Records at HelloBetter

DevFeed: [From ePA 2.6 to 3.0 : Healthcare Data Integration for Electronic Patient Records at HelloBetter](<https://devfeed.tech/articles/from-epa-2-6-to-3-0-healthcare-data-integration-for-electronic-patient-records-at-hellobetter-26533.md>)

Original publisher: [Read original article](<https://annajmcdougall.medium.com/from-epa-2-6-to-3-0-healthcare-data-integration-for-electronic-patient-records-at-hellobetter-f60a7e63c0f5?source=rss-51f15275ef3a------2>)

Author: Anna J McDougall

Published: 2025-05-20T09:27:30Z

Content type: tutorial

Language: en

Sources: [Anna J McDougall](<https://devfeed.tech/sources/anna-j-mcdougall.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [XML](<https://devfeed.tech/topics/xml.md>), [pdf](<https://devfeed.tech/topics/pdf.md>)

Tags: [authentication](<https://devfeed.tech/tags/authentication.md>), [backend](<https://devfeed.tech/tags/backend.md>), [data](<https://devfeed.tech/tags/data.md>), [electronic-patient-record](<https://devfeed.tech/tags/electronic-patient-record.md>), [engineering-management](<https://devfeed.tech/tags/engineering-management.md>), [export](<https://devfeed.tech/tags/export.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [germany](<https://devfeed.tech/tags/germany.md>), [healthcare](<https://devfeed.tech/tags/healthcare.md>), [healthtech](<https://devfeed.tech/tags/healthtech.md>), [integration](<https://devfeed.tech/tags/integration.md>), [pdf](<https://devfeed.tech/tags/pdf.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [platform](<https://devfeed.tech/tags/platform.md>), [product](<https://devfeed.tech/tags/product.md>), [project](<https://devfeed.tech/tags/project.md>), [software-architecture](<https://devfeed.tech/tags/software-architecture.md>), [technical](<https://devfeed.tech/tags/technical.md>), [terminal](<https://devfeed.tech/tags/terminal.md>)

### AI overview

This technical post describes HelloBetter's implementation journey from Germany's ePA 2.6 to ePA 3.0. It covers HealthID login, ePA data export, PDF and XML document writing, and the frontend and backend integrations used to connect therapeutic data across systems. The implementation was completed pending BfArm approval.

### Source excerpt

From ePA 2.6 to 3.0: A Technical Journey in Healthcare Data Integration for Electronic Patient Records...so far Germany has a bad reputation for digitalisation, so the government's push to implement an electronic patient record ("elektronische Patientenakte" or ePA) for its citizens and residents is a step in the right direction. As an official digital health application ("digitale Gesundheitsapplikation" or "DiGA"), we are obligated to shift to the ePA 3.0 implementation. The government rollout has been plagued with technical difficulties and delays, but we're now at a point where we have completed our implementation successfully, pending BfArm approval. In this post, I want to cover the exact steps we and had to take to achieve this. I want to thank Senior Product Manager Tanja Lembcke and Senior Backend Engineer Chaythanya Sivakumar for their contributions to this piece. The Challenge: Connecting Patient Data Across Systems The electronic patient record (ePA) and HealthID integration project had a clear mission: we wanted to give our patients the ability to log into the HelloBetter platform using their HealthID (which they access through their insurance company) and export their HelloBetter data into their ePA. A successful implementation would mean that both doctors and patients can electronically access therapeutic data whenever they need it. To make this happen for the patient data at HelloBetter, we partnered with two key players: RISE for ePA system access and Azuma for HealthID system access. Our journey began in 2024 when our backend team laid the groundwork for ePA 2.6, setting up the pipeline and data export in our staging environment. We successfully implemented both PDF and XML document writing capabilities, along with the frontend and backend integrations for HealthID login. How It All Works: The Architectural SideHealthID Authentication The first piece of the puzzle is connecting to and authorising the user's HealthID. This part of the system has remai

## USA Could Win By Rolling Back AI Export Controls

DevFeed: [USA Could Win By Rolling Back AI Export Controls](<https://devfeed.tech/articles/usa-could-win-by-rolling-back-ai-export-controls-33453.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2025/01/28/deepseek>)

Published: 2025-01-28T00:00:00Z

Content type: opinion

Language: en

Sources: [Tim Kellogg](<https://devfeed.tech/sources/tim-kellogg.md>)

Topics: [AI Development](<https://devfeed.tech/topics/ai-development.md>), [deepseek](<https://devfeed.tech/topics/deepseek.md>), [CUDA](<https://devfeed.tech/topics/cuda.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Nvidia](<https://devfeed.tech/topics/nvidia.md>), [Machine learning](<https://devfeed.tech/topics/machine-learning.md>), [networking](<https://devfeed.tech/topics/networking.md>), [huawei](<https://devfeed.tech/topics/huawei.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [cuda](<https://devfeed.tech/tags/cuda.md>), [deepseek](<https://devfeed.tech/tags/deepseek.md>), [export](<https://devfeed.tech/tags/export.md>), [machine-learning](<https://devfeed.tech/tags/machine-learning.md>), [networking](<https://devfeed.tech/tags/networking.md>), [nvidia](<https://devfeed.tech/tags/nvidia.md>)

### AI overview

This opinion argues that the United States could preserve its AI lead by rolling back export controls on advanced AI chips. It describes how DeepSeek reportedly trained R1 on H800 GPUs and allegedly worked around bandwidth restrictions by writing low-level code directly, while using Huawei 910C NPUs for serving.

### Source excerpt

This might sound crazy to just about everyone, but I think Trump could maintain an AI lead for the United States by immediately rolling back Biden-era export controls on AI chips, like the NVIDIA H100. Hear me out!

## The Making of a Logo

DevFeed: [The Making of a Logo](<https://devfeed.tech/articles/the-making-of-a-logo-39442.md>)

Original publisher: [Read original article](<https://aerotwist.com/blog/the-making-of-a-logo/>)

Author: Paul Lewis

Published: 2025-01-15T00:00:00Z

Content type: opinion

Language: en

Sources: [Paul Lewis](<https://devfeed.tech/sources/paul-lewis.md>)

Topics: [Website](<https://devfeed.tech/topics/website.md>), [blender](<https://devfeed.tech/topics/blender.md>), [3D](<https://devfeed.tech/topics/3d.md>), [stl](<https://devfeed.tech/topics/stl.md>), [SVG](<https://devfeed.tech/topics/svg.md>), [export](<https://devfeed.tech/topics/export.md>), [render](<https://devfeed.tech/topics/render.md>), [Sketch](<https://devfeed.tech/topics/sketch.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [3d-printed](<https://devfeed.tech/tags/3d-printed.md>), [blender](<https://devfeed.tech/tags/blender.md>), [cameras](<https://devfeed.tech/tags/cameras.md>), [export](<https://devfeed.tech/tags/export.md>), [file](<https://devfeed.tech/tags/file.md>), [logo](<https://devfeed.tech/tags/logo.md>), [making](<https://devfeed.tech/tags/making.md>), [render](<https://devfeed.tech/tags/render.md>), [stl](<https://devfeed.tech/tags/stl.md>), [svg](<https://devfeed.tech/tags/svg.md>), [update](<https://devfeed.tech/tags/update.md>), [website](<https://devfeed.tech/tags/website.md>)

### AI overview

The author describes creating a new Aerotwist logo, starting with sketches on a reMarkable 2 tablet, refining it as a vector and SVG, and preparing it for 3D printing by exporting an STL from Blender.

### Source excerpt

A new website, and a 3D printed logo!

## Insights from Workflow History Export on Temporal Cloud

DevFeed: [Insights from Workflow History Export on Temporal Cloud](<https://devfeed.tech/articles/insights-from-workflow-history-export-on-temporal-cloud-35839.md>)

Original publisher: [Read original article](<https://temporal.io/blog/get-insights-from-workflow-histories-export-on-temporal-cloud>)

Author: Alice Yin

Published: 2024-04-24T06:00:00Z

Content type: tutorial

Language: en

Sources: [Temporal Blog](<https://devfeed.tech/sources/temporal-blog.md>)

Topics: [export](<https://devfeed.tech/topics/export.md>), [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>), [Data pipelines](<https://devfeed.tech/topics/data-pipelines.md>), [Data analysis](<https://devfeed.tech/topics/data-analysis.md>), [parquet](<https://devfeed.tech/topics/parquet.md>), [airflow](<https://devfeed.tech/topics/airflow.md>), [AWS Glue](<https://devfeed.tech/topics/aws-glue.md>)

Tags: [airflow](<https://devfeed.tech/tags/airflow.md>), [amazon-s3](<https://devfeed.tech/tags/amazon-s3.md>), [api](<https://devfeed.tech/tags/api.md>), [aws-glue](<https://devfeed.tech/tags/aws-glue.md>), [case-study](<https://devfeed.tech/tags/case-study.md>), [data](<https://devfeed.tech/tags/data.md>), [data-analysis](<https://devfeed.tech/tags/data-analysis.md>), [data-pipelines](<https://devfeed.tech/tags/data-pipelines.md>), [export](<https://devfeed.tech/tags/export.md>), [parquet](<https://devfeed.tech/tags/parquet.md>), [product-news](<https://devfeed.tech/tags/product-news.md>)

### AI overview

This tutorial explains how to export closed workflow histories from Temporal Cloud to Amazon S3, convert Protocol Buffer files to Parquet, and build data pipelines for analyzing execution metadata, operational efficiency, and bottlenecks.

### Source excerpt

Explore how exporting workflow histories in Temporal Cloud gives you deep insights into execution metadata, events, and performance over time.

## Introducing Workflow History Export

DevFeed: [Introducing Workflow History Export](<https://devfeed.tech/articles/introducing-workflow-history-export-35896.md>)

Original publisher: [Read original article](<https://temporal.io/blog/introducing-workflow-history-export>)

Author: Nikitha Suryadevara

Published: 2024-03-01T07:00:00Z

Content type: release

Language: en

Sources: [Temporal Blog](<https://devfeed.tech/sources/temporal-blog.md>)

Topics: [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>), [AWS CloudFormation](<https://devfeed.tech/topics/aws-cloudformation.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [audit](<https://devfeed.tech/topics/audit.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [audit](<https://devfeed.tech/tags/audit.md>), [aws](<https://devfeed.tech/tags/aws.md>), [aws-cloudformation](<https://devfeed.tech/tags/aws-cloudformation.md>), [aws-s3](<https://devfeed.tech/tags/aws-s3.md>), [cli](<https://devfeed.tech/tags/cli.md>), [cloud-storage](<https://devfeed.tech/tags/cloud-storage.md>), [export](<https://devfeed.tech/tags/export.md>), [preview](<https://devfeed.tech/tags/preview.md>), [product-news](<https://devfeed.tech/tags/product-news.md>), [production](<https://devfeed.tech/tags/production.md>), [release](<https://devfeed.tech/tags/release.md>), [s3](<https://devfeed.tech/tags/s3.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

Temporal Cloud has introduced Workflow History Export, allowing users to export closed workflow histories by namespace to an AWS S3 bucket. The feature supports longer-term retention for compliance, auditing, and analysis and is available to all users in Public Preview for production use.

### Source excerpt

Workflow History Export in Temporal Cloud allows users to export closed workflow histories on a per-namespace basis to an AWS S3 cloud storage bucket.

## Why You Should Execute jOOQ Queries With jOOQ

DevFeed: [Why You Should Execute jOOQ Queries With jOOQ](<https://devfeed.tech/articles/why-you-should-execute-jooq-queries-with-jooq-28974.md>)

Original publisher: [Read original article](<https://blog.jooq.org/why-you-should-execute-jooq-queries-with-jooq/>)

Author: lukaseder

Published: 2023-01-18T11:46:25Z

Content type: opinion

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [Java](<https://devfeed.tech/topics/java.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [code-generation](<https://devfeed.tech/tags/code-generation.md>), [crud](<https://devfeed.tech/tags/crud.md>), [csv](<https://devfeed.tech/tags/csv.md>), [execution](<https://devfeed.tech/tags/execution.md>), [export](<https://devfeed.tech/tags/export.md>), [identity](<https://devfeed.tech/tags/identity.md>), [import](<https://devfeed.tech/tags/import.md>), [java](<https://devfeed.tech/tags/java.md>), [jdbc](<https://devfeed.tech/tags/jdbc.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [jpa](<https://devfeed.tech/tags/jpa.md>), [json](<https://devfeed.tech/tags/json.md>), [mapping](<https://devfeed.tech/tags/mapping.md>), [multiset](<https://devfeed.tech/tags/multiset.md>), [nested-collections](<https://devfeed.tech/tags/nested-collections.md>), [nested-records](<https://devfeed.tech/tags/nested-records.md>), [orm](<https://devfeed.tech/tags/orm.md>), [r2dbc](<https://devfeed.tech/tags/r2dbc.md>), [sql](<https://devfeed.tech/tags/sql.md>), [stored-procedures](<https://devfeed.tech/tags/stored-procedures.md>), [type-safety](<https://devfeed.tech/tags/type-safety.md>), [udt](<https://devfeed.tech/tags/udt.md>), [updatablerecord](<https://devfeed.tech/tags/updatablerecord.md>), [user-defined-types](<https://devfeed.tech/tags/user-defined-types.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

The article argues that queries built with jOOQ should generally also be executed with jOOQ. It explains that jOOQ preserves type safety and structured result mapping during execution, whereas extracting SQL and bind values for JDBC-level execution loses compiler knowledge of the result set. It acknowledges limited use cases for executing jOOQ-generated SQL elsewhere, such as a small number of dynamic queries in an otherwise JPA-based application.

### Source excerpt

Previously on this blog, I've written a post explaining why you should use jOOQ's code generator, despite the possibility of using jOOQ without it. In a similar fashion, as I've answered numerous jOOQ questions on Stack Overflow, where someone used jOOQ to build a query, but then executed it elsewhere, including on: jOOQ itself isn't ... Continue reading Why You Should Execute jOOQ Queries With jOOQ ->

## Under the hood of Relay, Android Studio plugin for exporting Figma components to compose - Kevin Schildhorn

DevFeed: [Under the hood of Relay, Android Studio plugin for exporting Figma components to compose - Kevin Schildhorn](<https://devfeed.tech/articles/under-the-hood-of-relay-android-studio-plugin-for-exporting-figma-components-to-compose-kevin-schildhorn-38341.md>)

Original publisher: [Read original article](<https://touchlab.co/under-the-hood-of-relay>)

Published: 2022-11-15T19:45:27Z

Content type: article

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Figma](<https://devfeed.tech/topics/figma.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [code](<https://devfeed.tech/tags/code.md>), [components](<https://devfeed.tech/tags/components.md>), [compose](<https://devfeed.tech/tags/compose.md>), [design](<https://devfeed.tech/tags/design.md>), [export](<https://devfeed.tech/tags/export.md>), [figma](<https://devfeed.tech/tags/figma.md>), [plugin](<https://devfeed.tech/tags/plugin.md>)

### AI overview

This article examines how Relay converts Figma components into Compose UI code through its Android Studio plugin. It follows a simple button from Figma export to an imported UI package and discusses the generated files, styles, properties, and fonts. The article notes that Relay is an open-alpha, evolving library and that the observations use version 0.3.00.

### Source excerpt

What's going on under the hood with Relay? Let's go over the process in detail, from Figma to Compose code.

## Securely Managing Your Audit Logs with Teleport and Snowflake

DevFeed: [Securely Managing Your Audit Logs with Teleport and Snowflake](<https://devfeed.tech/articles/securely-managing-your-audit-logs-with-teleport-and-snowflake-29853.md>)

Original publisher: [Read original article](<https://goteleport.com/blog/snowflake-log-forwarding/>)

Author: kenneth.dumez@goteleport.com (Kenneth DuMez)

Published: 2022-10-11T00:00:00Z

Content type: tutorial

Language: en

Sources: [Teleport](<https://devfeed.tech/sources/teleport.md>)

Topics: [audit](<https://devfeed.tech/topics/audit.md>), [Logging](<https://devfeed.tech/topics/logging.md>), [Security](<https://devfeed.tech/topics/security.md>), [SIEM, Security, Observability](<https://devfeed.tech/topics/siem-security-observability.md>), [event driven](<https://devfeed.tech/topics/event-driven.md>), [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [audit](<https://devfeed.tech/tags/audit.md>), [aws](<https://devfeed.tech/tags/aws.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [cybersecurity](<https://devfeed.tech/tags/cybersecurity.md>), [data](<https://devfeed.tech/tags/data.md>), [data-lake](<https://devfeed.tech/tags/data-lake.md>), [data-storage](<https://devfeed.tech/tags/data-storage.md>), [database](<https://devfeed.tech/tags/database.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [event](<https://devfeed.tech/tags/event.md>), [event-driven](<https://devfeed.tech/tags/event-driven.md>), [export](<https://devfeed.tech/tags/export.md>), [filter](<https://devfeed.tech/tags/filter.md>), [format](<https://devfeed.tech/tags/format.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [latency](<https://devfeed.tech/tags/latency.md>), [logging](<https://devfeed.tech/tags/logging.md>), [logs](<https://devfeed.tech/tags/logs.md>), [snowflake](<https://devfeed.tech/tags/snowflake.md>)

### AI overview

A tutorial explains how to forward Teleport audit logs to Snowflake using Fluentd as a collector, Amazon S3 as an intermediary, and Snowpipe for ingestion. It covers the security, organization, searchability, and low-latency benefits of this workflow for SIEM-related log management.

### Source excerpt

How to securely manage all of your event-driven audit logs with Snowflake and Teleport.

## Wearing Many Hats

DevFeed: [Wearing Many Hats](<https://devfeed.tech/articles/wearing-many-hats-37113.md>)

Original publisher: [Read original article](<https://shostack.org/blog/wearing-many-hats/>)

Author: Adam

Published: 2022-01-24T00:00:00Z

Content type: opinion

Language: en

Sources: [Shostack & Friends Blog](<https://devfeed.tech/sources/shostack-friends-blog.md>)

Topics: [Security](<https://devfeed.tech/topics/security.md>), [networking](<https://devfeed.tech/topics/networking.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [cryptographic](<https://devfeed.tech/tags/cryptographic.md>), [export](<https://devfeed.tech/tags/export.md>), [government](<https://devfeed.tech/tags/government.md>), [history](<https://devfeed.tech/tags/history.md>), [networking](<https://devfeed.tech/tags/networking.md>), [report](<https://devfeed.tech/tags/report.md>), [security](<https://devfeed.tech/tags/security.md>), [software](<https://devfeed.tech/tags/software.md>), [surveillance](<https://devfeed.tech/tags/surveillance.md>), [transformation](<https://devfeed.tech/tags/transformation.md>)

### AI overview

The article reviews Wearing Many Hats: The Rise of the Professional Security Hacker, a history of how 1990s hackers established legitimacy as employable and trustworthy security experts. It praises the report while noting that early cypherpunks also addressed surveillance, activist targeting, and cryptographic export controls, with overlap between hacker and cypherpunk communities.

### Source excerpt

Fascinating history of a transformation in how hackers were seen.

## Introducing Material Theme Builder

DevFeed: [Introducing Material Theme Builder](<https://devfeed.tech/articles/introducing-material-theme-builder-29299.md>)

Original publisher: [Read original article](<https://material.io/blog/material-theme-builder>)

Published: 2021-10-27T09:15:00Z

Content type: release

Language: en

Sources: [Material.io - Material Design](<https://devfeed.tech/sources/material-io-material-design.md>)

Topics: [color](<https://devfeed.tech/topics/color.md>), [Code](<https://devfeed.tech/topics/code.md>), [export](<https://devfeed.tech/topics/export.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [color](<https://devfeed.tech/tags/color.md>), [export](<https://devfeed.tech/tags/export.md>)

### AI overview

Material introduces Material Theme Builder, a tool for visualizing dynamic color, building custom themes, and exporting them to code.

### Source excerpt

Visualize dynamic color, build a custom theme, and export to code

## Blender SVG Export Experiment

DevFeed: [Blender SVG Export Experiment](<https://devfeed.tech/articles/untitled-art-37192.md>)

Original publisher: [Read original article](<https://muffinman.io/art/3d-cubes-untitled/>)

Author: Stanko

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

Content type: article

Language: en

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

Topics: [blender](<https://devfeed.tech/topics/blender.md>), [export](<https://devfeed.tech/topics/export.md>), [SVG](<https://devfeed.tech/topics/svg.md>)

Tags: [art](<https://devfeed.tech/tags/art.md>), [blender](<https://devfeed.tech/tags/blender.md>), [export](<https://devfeed.tech/tags/export.md>), [svg](<https://devfeed.tech/tags/svg.md>)

### AI overview

An art experiment using Blender's SVG export, resulting in two plots with slightly different sizes because one was cut incorrectly.

### Source excerpt

One plot ended up being smaller because I screwed up cutting it. Created: October 2020Size: 15x15cm and 13x13cmPaper: Fabriano Bristol 250gsmPens: Molotow Blackliner, Koi Coloring Brush, Mechanical pencil

## Three.js extrude SVG path

DevFeed: [Three.js extrude SVG path](<https://devfeed.tech/articles/three-js-extrude-svg-path-37363.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/three-js-extrude-svg-path/>)

Author: Stanko

Published: 2019-12-18T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Three.js](<https://devfeed.tech/topics/threejs.md>), [SVG](<https://devfeed.tech/topics/svg.md>), [3D](<https://devfeed.tech/topics/3d.md>), [Graphics](<https://devfeed.tech/topics/graphics.md>)

Tags: [3d](<https://devfeed.tech/tags/3d.md>), [demo](<https://devfeed.tech/tags/demo.md>), [export](<https://devfeed.tech/tags/export.md>), [getting-started](<https://devfeed.tech/tags/getting-started.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [svg](<https://devfeed.tech/tags/svg.md>), [three-js](<https://devfeed.tech/tags/three-js.md>)

### AI overview

A tutorial on importing SVG data into Three.js with SVGLoader and extruding SVG paths into 3D geometry with ExtrudeGeometry. It explains setup details and common issues, including the inverted Y axis when mapping SVG coordinates into Three.js.

### Source excerpt

Update, September 2025 # Replaced path.toShapes(true) with SVGLoader.createShapes(path) because toShapes misses some of the SVG-specific logic implemented in the loader. Thanks to forresto who pointed it out. Also updated the demo to use a fresh version of ThreeJS. These days I'm playing with three.js again. I'm not an expert but I enjoy playing with graphics. Conveniently, a friend of mine sent me this Dribble, and I thought it would be a perfect exercise to try making it. I still haven't done it, but I did some exploration on how to built it. My plan was to draw the parallaxing layers as vectors, import it in three.js and use ExtrudeGeometry to give them a third dimension. To three.js ninjas this might be funny, but it took me some time. I haven't found well documented way, plus there are a couple of gotchas. And that is the reason I want to share this process with you. Before we start # I'll assume you have a basic understanding of three.js, and how to setup a scene. If you are just starting with it, I recommend going through their excellent Getting Started guide first. If you just want to see the end result, feel free to jump to the code or the live demo. SVGLoader # Three.js provides us with SVGLoader, but it is not the part of the main export. It is an addon, and can import it like this: import { SVGLoader } from "three/addons/loaders/SVGLoader.js"; Like it's name suggest this class loads SVG from an URL and parses it into three.js entries. If you already have SVG markup as a string, it is easy to parse it, but it is also easy to miss how to do it in the documentation. SVGLoader extends base Loader class, which contains .parse() method. That means we can do this: // Get SVG's markup const svgMarkup = document.querySelector('svg').outerHTML; const loader = new SVGLoader(); const svgData = loader.parse(svgMarkup); Now when we know how to get SVG data to three.js, let's try to extrude it. Extrude # You'll need a SVG, I used my logo: To get to the shapes we can ex

## Remove MacOS Catalina zsh nagging

DevFeed: [Remove MacOS Catalina zsh nagging](<https://devfeed.tech/articles/remove-macos-catalina-zsh-nagging-37343.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/remove-macos-catalina-zsh-nagging/>)

Author: Stanko

Published: 2019-12-10T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [macOS](<https://devfeed.tech/topics/macos.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [Bash](<https://devfeed.tech/topics/bash.md>), [Shell](<https://devfeed.tech/topics/shell.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [bash](<https://devfeed.tech/tags/bash.md>), [catalina](<https://devfeed.tech/tags/catalina.md>), [export](<https://devfeed.tech/tags/export.md>), [macos](<https://devfeed.tech/tags/macos.md>), [make](<https://devfeed.tech/tags/make.md>), [oh-my-zsh](<https://devfeed.tech/tags/oh-my-zsh.md>), [shell](<https://devfeed.tech/tags/shell.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

A guide for silencing the macOS Catalina warning about the default shell changing from Bash to zsh by setting BASH_SILENCE_DEPRECATION_WARNING=1 in .bash_profile or .bashrc.

### Source excerpt

Yesterday I updated my work laptop to MacOS Catalina.To be able to use AirPods Pro with it :/ Apple made a change and switched the default shell to zsh (instead of bash). From what I have read, the reason is a licensing issue. Bash is not gone and everything will work like it used to. But every time you open a terminal, you will be greeted by this message: If you are like me, and not ready to make the switch to zsh, you can silence this warning by putting this into your .bash_profile (or .bashrc). export BASH_SILENCE_DEPRECATION_WARNING=1 Why I don't want to switch? # Everything in my workflow is heavily customized and I'm really used to it. For example, I'm using bash-it with a custom theme for years now. It is heavily inspired by Oh My Zsh, similar zsh framework. Still, it will take me some time to migrate everything. I will eventually switch to zsh, but at the moment it is not high on my list of priorities.

## Toolbox: After a Conference

DevFeed: [Toolbox: After a Conference](<https://devfeed.tech/articles/toolbox-after-a-conference-37089.md>)

Original publisher: [Read original article](<https://shostack.org/blog/toolbox-after-a-conference/>)

Author: Adam

Published: 2018-08-21T00:00:00Z

Content type: opinion

Language: en

Sources: [Shostack & Friends Blog](<https://devfeed.tech/sources/shostack-friends-blog.md>)

Topics: [Tool](<https://devfeed.tech/topics/tool.md>), [To-Do](<https://devfeed.tech/topics/todo.md>), [email](<https://devfeed.tech/topics/email.md>), [Slack](<https://devfeed.tech/topics/slack.md>), [export](<https://devfeed.tech/topics/export.md>)

Tags: [advice](<https://devfeed.tech/tags/advice.md>), [email](<https://devfeed.tech/tags/email.md>), [export](<https://devfeed.tech/tags/export.md>), [great](<https://devfeed.tech/tags/great.md>), [organization](<https://devfeed.tech/tags/organization.md>), [process](<https://devfeed.tech/tags/process.md>), [slack](<https://devfeed.tech/tags/slack.md>), [toolbox](<https://devfeed.tech/tags/toolbox.md>)

### AI overview

A personal account of a post-conference follow-up workflow using email, messaging apps, LinkedIn, Workflowy, business cards, Slack, calendars, photos, and social media. The author describes organizing these queues and asks readers to share more effective methods.

### Source excerpt

[no description provided]

## Exporting a Hierarchy in JSON: with recursive queries

DevFeed: [Exporting a Hierarchy in JSON: with recursive queries](<https://devfeed.tech/articles/exporting-a-hierarchy-in-json-with-recursive-queries-34579.md>)

Original publisher: [Read original article](<https://tapoueh.org/blog/2018/01/exporting-a-hierarchy-in-json-with-recursive-queries/>)

Author: Dimitri Fontaine PostgreSQL Major Contributor; Author

Published: 2018-01-31T17:00:01Z

Content type: tutorial

Language: en

Sources: [Dimitri Fontaine](<https://devfeed.tech/sources/dimitri-fontaine.md>)

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [export](<https://devfeed.tech/topics/export.md>), [JSON](<https://devfeed.tech/topics/json.md>), [data](<https://devfeed.tech/topics/data.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>)

Tags: [data](<https://devfeed.tech/tags/data.md>), [export](<https://devfeed.tech/tags/export.md>), [file](<https://devfeed.tech/tags/file.md>), [json](<https://devfeed.tech/tags/json.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

This tutorial explains how to use PostgreSQL and recursive SQL queries to export hierarchical relational data as a single JSON document. It models parent-child Dungeons & Dragons character classes and prepares the resulting JSON for client-side visualization with d3js.

### Source excerpt

In another article here, entitled on JSON and SQL, we saw in great details how to import a data set only available as a giant JSON file. Then we normalized the data set, so as to be able to write SQL and process our data. This approach is sometimes very useful and was a good way to learn some of the JSON functions provided by PostgreSQL. In this article, we're going to use SQL to export the data from our relational model into a JSON document. The trick that makes it complex in this example is that we have a recursive data model, with a notion of a parent row that exists in the same table as the current one. That's a nice excuse to learn more about the SQL construct WITH RECURSIVE.

## React Router v4 redirect decorator

DevFeed: [React Router v4 redirect decorator](<https://devfeed.tech/articles/react-router-v4-redirect-decorator-37339.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/react-router-v4-redirect-decorator/>)

Author: Stanko

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

Content type: tutorial

Language: en

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

Topics: [React Router](<https://devfeed.tech/topics/react-router.md>), [React Component](<https://devfeed.tech/topics/react-component.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [component](<https://devfeed.tech/tags/component.md>), [export](<https://devfeed.tech/tags/export.md>), [import](<https://devfeed.tech/tags/import.md>), [react](<https://devfeed.tech/tags/react.md>), [react-component](<https://devfeed.tech/tags/react-component.md>), [react-router](<https://devfeed.tech/tags/react-router.md>), [return](<https://devfeed.tech/tags/return.md>), [router](<https://devfeed.tech/tags/router.md>), [routing](<https://devfeed.tech/tags/routing.md>)

### AI overview

This tutorial explains how React Router v4 handles redirects through rendered components and presents a higher-order decorator that exposes a redirectTo method. The decorator can either replace the current URL or push a new history entry.

### Source excerpt

React Router switched to component based routing starting with the version 4. Redirects are now done by rendering a Redirect component, like this:Please note that you can use included withRouter decorator but it can cause update blocking and introduce side effects. This is small subset of it. <Redirect to='/redirect-url-here' /> What I usually do is to keep redirectTo property in component's state. To redirect, I set it to the URL I want to redirect to, and render Redirect at the start of the render method: render() { const { redirectTo } = this.state; if (redirectTo) { return <Redirect push to={ redirectTo } />; } return ( <YourComponentHere /> ); } This approach works well, but I got tired of repeating the same code over and over again. So I pulled the functionality to a decorator (higher order component if you prefer). Redirect decorator # I did exactly what I described above, and exposed redirectTo method to a composed component. import React, { Component } from 'react'; import { Redirect } from 'react-router-dom'; const withRedirect = ComposedComponent => class RedirectDecorator extends Component { state = { push: false, redirectUrl: null, } componentDidUpdate(prevProps, prevState) { const { redirectUrl, } = this.state; // If component is rendered on redirect page as well // (i.e. header or footer) it would cause redirect-loop // as "<Redirect />" is being rendered every time. // So we are resetting the state after redirect if (!prevState.redirectUrl && redirectUrl) { this.setState({ push: false, redirectUrl: null, }); } } redirectTo = (redirectUrl, push = false) => { this.setState({ push, redirectUrl, }); } render() { const { push, redirectUrl, } = this.state; if (redirectUrl) { return <Redirect push={ push } to={ redirectUrl } />; } return ( <ComposedComponent { ...this.props } redirectTo={ this.redirectTo } /> ); } }; export default withRedirect; Usage # Import newly added decorator and apply it to your component. It will inject redirectTo to it's props, and

## localStorage and sessionStorage in Safari's private mode

DevFeed: [localStorage and sessionStorage in Safari's private mode](<https://devfeed.tech/articles/localstorage-and-sessionstorage-in-safari-s-private-mode-37306.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/localstorage-and-sessionstorage-in-safaris-private-mode/>)

Author: Stanko

Published: 2017-08-09T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [LocalStorage](<https://devfeed.tech/topics/localstorage.md>), [Code](<https://devfeed.tech/topics/code.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [error](<https://devfeed.tech/tags/error.md>), [export](<https://devfeed.tech/tags/export.md>), [ls](<https://devfeed.tech/tags/ls.md>), [null](<https://devfeed.tech/tags/null.md>), [object](<https://devfeed.tech/tags/object.md>), [qa](<https://devfeed.tech/tags/qa.md>), [quota](<https://devfeed.tech/tags/quota.md>), [return](<https://devfeed.tech/tags/return.md>), [safari](<https://devfeed.tech/tags/safari.md>), [storage](<https://devfeed.tech/tags/storage.md>), [test](<https://devfeed.tech/tags/test.md>), [value](<https://devfeed.tech/tags/value.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

This article explains that Safari private mode sets localStorage and sessionStorage limits to zero, preventing writes. It presents a localStorage facade that silently ignores storage operations when storage is unavailable, avoiding application errors.

### Source excerpt

If you didn't know, in Safari's private mode both localStorage and sessionStorage are not working. To be exact, Safari sets storage's limit to 0, so you can't write anything to it. I keep forgetting this, until QA people report it at some point. So I quickly wrote a small facade for it, which fails silently in this case. That means it still doesn't work but it won't throw an error and break your application. This is the version for localStorage, just replace it with sessionStorage if you need it. const LS_TEST_KEY = 'ls-test'; let isLocalStorageSupported = typeof localStorage === 'object'; // Try to try { localStorage.setItem(LS_TEST_KEY, 'test'); localStorage.removeItem(LS_TEST_KEY); } catch (e) { isLocalStorageSupported = false; // If we get error that we exceeded storage's quota // but storage is still empty we are in private mode if (e.code === DOMException.QUOTA_EXCEEDED_ERR && localStorage.length === 0) { // Private mode } else { throw e; } } const LocalStorage = { getItem: (key) => { if (isLocalStorageSupported) { return localStorage.getItem(key); } return null; }, setItem: (key, value) => { if (isLocalStorageSupported) { localStorage.setItem(key, value); } }, removeItem: (key) => { if (isLocalStorageSupported) { localStorage.removeItem(key); } }, }; export default LocalStorage;

[Next page](<https://devfeed.tech/tags/export.md?cursor=WyIyMDE3LTA4LTA5VDAwOjAwOjAwKzAwOjAwIiwgIjIwMTVjZjZhLWVmMGYtNGE0NC05YmM0LWMxZjkyNzY2MjIxNiJd>)