# works

Published articles for works.

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

## Keycloak experimental AuthZEN Support

DevFeed: [Keycloak experimental AuthZEN Support](<https://devfeed.tech/articles/keycloak-experimental-authzen-support-31771.md>)

Original publisher: [Read original article](<https://www.keycloak.org/2026/05/authzen-as-experimental-feature>)

Author: Ryan Emerson

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

Content type: release

Language: en

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

Topics: [Keycloak](<https://devfeed.tech/topics/keycloak.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [openid](<https://devfeed.tech/topics/openid.md>), [API](<https://devfeed.tech/topics/api.md>), [REST API](<https://devfeed.tech/topics/rest-api.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>), [vendor lock-in](<https://devfeed.tech/topics/vendor-lock-in.md>)

Tags: [authentication](<https://devfeed.tech/tags/authentication.md>), [changes](<https://devfeed.tech/tags/changes.md>), [idm](<https://devfeed.tech/tags/idm.md>), [interoperability](<https://devfeed.tech/tags/interoperability.md>), [kerberos](<https://devfeed.tech/tags/kerberos.md>), [keycloak](<https://devfeed.tech/tags/keycloak.md>), [ldap](<https://devfeed.tech/tags/ldap.md>), [openid-connect](<https://devfeed.tech/tags/openid-connect.md>), [release](<https://devfeed.tech/tags/release.md>), [resource](<https://devfeed.tech/tags/resource.md>), [rest-api](<https://devfeed.tech/tags/rest-api.md>), [saml](<https://devfeed.tech/tags/saml.md>), [sdks](<https://devfeed.tech/tags/sdks.md>), [sso](<https://devfeed.tech/tags/sso.md>), [vendor-lock-in](<https://devfeed.tech/tags/vendor-lock-in.md>), [works](<https://devfeed.tech/tags/works.md>)

### AI overview

Keycloak announces experimental support for the OpenID AuthZEN Authorization API 1.0 specification starting with version 26.7.0. The feature lets Keycloak act as a Policy Decision Point and expose existing authorization policies through a standardized API for Policy Enforcement Points.

### Source excerpt

We are excited to announce that from 26.7.0, Keycloak will include experimental support for the OpenID AuthZEN Authorization API 1.0 specification. This allows Keycloak to act as a Policy Decision Point (PDP), exposing its authorization capabilities through a standardized API that any Policy Enforcement Point (PEP) can consume. You can try this now with the Keycloak nightly release. Why AuthZEN? Authorization has long been fragmented, with competing systems defining their own protocols for answering the same fundamental question: "Can this subject perform this action on this resource?". This means applications are tightly coupled to whichever authorization backend they choose, and swapping providers requires rewriting integration code. AuthZEN changes this by defining a single, vendor-neutral API between the component that asks (the PEP) and the component that decides (the PDP). It is, in many ways, what OpenID Connect did for authentication -- but for authorization. With AuthZEN: No more vendor lock-in -- your application speaks one API regardless of the PDP behind it. RBAC, ABAC, and ReBAC under one roof -- different policy models can answer the same request format, enabling true interoperability across authorization paradigms. Centralized, externalized authorization -- policy logic lives in the PDP, not scattered across application code, making it easier to audit and update. Simpler integration -- a clean REST API with a minimal request/response model replaces complex, implementation-specific SDKs. A growing ecosystem OpenID AuthZEN Interop demonstrates that over a dozen independently-developed PDPs can be used interchangeably by the same PEP without changing a single line of application code. By adding AuthZEN support, Keycloak joins this ecosystem and lets you leverage your existing Keycloak policies through the same standardized API used by every other AuthZEN-compatible PDP. How it works The interaction between your application and Keycloak follows the standard PE

## Power Assert now in Kotlin!

DevFeed: [Power Assert now in Kotlin!](<https://devfeed.tech/articles/power-assert-now-in-kotlin-39366.md>)

Original publisher: [Read original article](<https://kt.academy/article/power-assert>)

Published: 2024-06-17T00:00:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Kotlin programming](<https://devfeed.tech/topics/kotlin-programming.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [development](<https://devfeed.tech/tags/development.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [works](<https://devfeed.tech/tags/works.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

The article explains what Power Assert is, how to use it, and how it works in Kotlin.

### Source excerpt

What is Power Assert, how to use it, and how it works in Kotlin.

## Headless Preview in Craft CMS

DevFeed: [Headless Preview in Craft CMS](<https://devfeed.tech/articles/headless-preview-in-craft-cms-31270.md>)

Original publisher: [Read original article](<https://nystudio107.com/blog/headless-preview-in-craft-cms>)

Author: andrew@nystudio107.com (Andrew Welch)

Published: 2019-08-13T02:40:00Z

Content type: tutorial

Language: en

Sources: [nystudio107 | Articles on modern web development.](<https://devfeed.tech/sources/nystudio107-articles-on-modern-web-development.md>)

Topics: [Content Management System](<https://devfeed.tech/topics/cms.md>), [Single-page application (SPA)](<https://devfeed.tech/topics/spa.md>), [API](<https://devfeed.tech/topics/api.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [Database](<https://devfeed.tech/topics/database.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [cms](<https://devfeed.tech/tags/cms.md>), [content](<https://devfeed.tech/tags/content.md>), [craft](<https://devfeed.tech/tags/craft.md>), [database](<https://devfeed.tech/tags/database.md>), [draft](<https://devfeed.tech/tags/draft.md>), [editor](<https://devfeed.tech/tags/editor.md>), [exploration](<https://devfeed.tech/tags/exploration.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [headless](<https://devfeed.tech/tags/headless.md>), [here-s](<https://devfeed.tech/tags/here-s.md>), [implement](<https://devfeed.tech/tags/implement.md>), [insights](<https://devfeed.tech/tags/insights.md>), [introduced](<https://devfeed.tech/tags/introduced.md>), [preview](<https://devfeed.tech/tags/preview.md>), [react](<https://devfeed.tech/tags/react.md>), [svelte](<https://devfeed.tech/tags/svelte.md>), [vue](<https://devfeed.tech/tags/vue.md>), [works](<https://devfeed.tech/tags/works.md>)

### AI overview

This article explains how Craft CMS 3.2 introduced headless content preview for pages rendered by a separate single-page application frontend. It describes the tokenized preview workflow, using auto-saved drafts, database records, tokenized URLs, and API requests to connect the editor with the frontend renderer.

### Source excerpt

Craft CMS 3.2 introduced headless content preview. Here's an exploration of how it works, and how you can implement it

## Using VueJS 2.0 with Craft CMS

DevFeed: [Using VueJS 2.0 with Craft CMS](<https://devfeed.tech/articles/using-vuejs-2-0-with-craft-cms-31319.md>)

Original publisher: [Read original article](<https://nystudio107.com/blog/using-vuejs-2-0-with-craft-cms>)

Author: andrew@nystudio107.com (Andrew Welch)

Published: 2016-12-09T20:12:00Z

Content type: tutorial

Language: en

Sources: [nystudio107 | Articles on modern web development.](<https://devfeed.tech/sources/nystudio107-articles-on-modern-web-development.md>)

Topics: [Vue.js](<https://devfeed.tech/topics/vue.md>), [Content Management System](<https://devfeed.tech/topics/cms.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [jQuery](<https://devfeed.tech/topics/jquery.md>), [Document Object Model (DOM)](<https://devfeed.tech/topics/dom.md>)

Tags: [angular](<https://devfeed.tech/tags/angular.md>), [building](<https://devfeed.tech/tags/building.md>), [cms](<https://devfeed.tech/tags/cms.md>), [craft](<https://devfeed.tech/tags/craft.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [great](<https://devfeed.tech/tags/great.md>), [insights](<https://devfeed.tech/tags/insights.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [library](<https://devfeed.tech/tags/library.md>), [manipulation](<https://devfeed.tech/tags/manipulation.md>), [modern](<https://devfeed.tech/tags/modern.md>), [powerful](<https://devfeed.tech/tags/powerful.md>), [simple](<https://devfeed.tech/tags/simple.md>), [vuejs](<https://devfeed.tech/tags/vuejs.md>), [works](<https://devfeed.tech/tags/works.md>)

### AI overview

This tutorial explains VueJS 2.0 and demonstrates replacing jQuery with VueJS on a Craft CMS website. It contrasts Vue's architecture for building interactive, data-driven frontend interfaces with jQuery's DOM-manipulation toolkit.

### Source excerpt

VueJS is a simple yet powerful library for building modern web interfaces, and it works great with Craft CMS

## The Craft cache Tag In-Depth

DevFeed: [The Craft cache Tag In-Depth](<https://devfeed.tech/articles/the-craft-cache-tag-in-depth-31307.md>)

Original publisher: [Read original article](<https://nystudio107.com/blog/the-craft-cache-tag-in-depth>)

Author: andrew@nystudio107.com (Andrew Welch)

Published: 2016-11-30T09:47:00Z

Content type: tutorial

Language: en

Sources: [nystudio107 | Articles on modern web development.](<https://devfeed.tech/sources/nystudio107-articles-on-modern-web-development.md>)

Topics: [Caching](<https://devfeed.tech/topics/caching.md>), [Content Management System](<https://devfeed.tech/topics/cms.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [cache](<https://devfeed.tech/tags/cache.md>), [caching](<https://devfeed.tech/tags/caching.md>), [cms](<https://devfeed.tech/tags/cms.md>), [code](<https://devfeed.tech/tags/code.md>), [craft](<https://devfeed.tech/tags/craft.md>), [effectively](<https://devfeed.tech/tags/effectively.md>), [help](<https://devfeed.tech/tags/help.md>), [here-s](<https://devfeed.tech/tags/here-s.md>), [insights](<https://devfeed.tech/tags/insights.md>), [performance](<https://devfeed.tech/tags/performance.md>), [used](<https://devfeed.tech/tags/used.md>), [works](<https://devfeed.tech/tags/works.md>)

### AI overview

This article explains how Craft CMS's {% cache %} tag works and how caching can improve performance when used correctly. It cautions that caching should not conceal inefficient templates, excessive database queries, or hosting and server problems, and notes possible stale-content and background-task effects.

### Source excerpt

Craft CMS has a {% cache %} tag that can help with performance, if used effectively. Here's how it works.

## PDFx v1.0 - Extract metadata and URLs from PDFs, and download all referenced PDFs

DevFeed: [PDFx v1.0 - Extract metadata and URLs from PDFs, and download all referenced PDFs](<https://devfeed.tech/articles/pdfx-v1-0-extract-metadata-and-urls-from-pdfs-and-download-all-referenced-pdfs-31826.md>)

Original publisher: [Read original article](<https://www.metachris.dev/2015/10/pdfx-extract-metadata-and-download-references-from-pdfs/>)

Author: Chris Hager

Published: 2015-10-26T00:00:00Z

Content type: release

Language: en

Sources: [Chris Hager](<https://devfeed.tech/sources/chris-hager.md>)

Topics: [pdf](<https://devfeed.tech/topics/pdf.md>), [Python](<https://devfeed.tech/topics/python.md>), [Tool](<https://devfeed.tech/topics/tool.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Library](<https://devfeed.tech/topics/library.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [apache](<https://devfeed.tech/tags/apache.md>), [automatically](<https://devfeed.tech/tags/automatically.md>), [command](<https://devfeed.tech/tags/command.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [download](<https://devfeed.tech/tags/download.md>), [github](<https://devfeed.tech/tags/github.md>), [install](<https://devfeed.tech/tags/install.md>), [library](<https://devfeed.tech/tags/library.md>), [pdf](<https://devfeed.tech/tags/pdf.md>), [python](<https://devfeed.tech/tags/python.md>), [quick-start](<https://devfeed.tech/tags/quick-start.md>), [run](<https://devfeed.tech/tags/run.md>), [source](<https://devfeed.tech/tags/source.md>), [tool](<https://devfeed.tech/tags/tool.md>), [v1](<https://devfeed.tech/tags/v1.md>), [version](<https://devfeed.tech/tags/version.md>), [works](<https://devfeed.tech/tags/works.md>)

### AI overview

The article announces PDFx 1.0, a Python tool and library that extracts metadata and URLs from PDFs and can automatically download referenced PDFs. It describes local and online PDF support, command-line and Python-package usage, Python 2 and 3 compatibility, and Apache licensing.

### Source excerpt

I just released PDFx version 1.0, a Python tool and library to extract metadata and URLs from PDFs, and to automatically download all referenced PDFs. The project is released under the Apache license with the source code on Github! Features Extract metadata and PDF URLs from a given PDF (file or URL) Download all PDFs referenced in the original PDF Works with local and online pdfs Use as command-line tool or Python package Compatible with Python 2 and 3 Quick Start Grab a copy of pdfx with easy_install or pip and run it: