# middleware

Middleware is software that enables system components to communicate and manage data, often serving as an intermediate layer between operating systems and applications.

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

## A Simple Statistics Library for Clojure Web Servers

DevFeed: [A Simple Statistics Library for Clojure Web Servers](<https://devfeed.tech/articles/statistics-made-simple-42002.md>)

Original publisher: [Read original article](<https://tonsky.me/blog/clj-simple-stats/>)

Author: Nikita Prokopov (niki@tonsky.me)

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

Content type: article

Language: en

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

Topics: [Clojure](<https://devfeed.tech/topics/clojure.md>), [Statistics](<https://devfeed.tech/topics/statistics.md>), [Library](<https://devfeed.tech/topics/library.md>), [Server](<https://devfeed.tech/topics/server.md>), [Web](<https://devfeed.tech/topics/web.md>), [middleware](<https://devfeed.tech/topics/middleware.md>), [nginx](<https://devfeed.tech/topics/nginx.md>)

Tags: [clojure](<https://devfeed.tech/tags/clojure.md>), [library](<https://devfeed.tech/tags/library.md>), [middleware](<https://devfeed.tech/tags/middleware.md>), [nginx](<https://devfeed.tech/tags/nginx.md>), [servers](<https://devfeed.tech/tags/servers.md>), [statistics](<https://devfeed.tech/tags/statistics.md>), [web-servers](<https://devfeed.tech/tags/web-servers.md>)

### AI overview

The author explains why existing web analytics tools do not fit their needs and introduces a self-hosted statistics library for Clojure web servers. The library is designed for simple setup, privacy, low operational overhead, and collecting basic readership data.

### Source excerpt

Announcing a simple statistics library for Clojure web servers

## postmarketOS in 2024-11: pmbootstrap v3, RFC process and Seattle

DevFeed: [postmarketOS in 2024-11: pmbootstrap v3, RFC process and Seattle](<https://devfeed.tech/articles/postmarketos-in-2024-11-pmbootstrap-v3-rfc-process-and-seattle-41745.md>)

Original publisher: [Read original article](<https://postmarketos.org/blog/2024/12/09/pmOS-update-2024-11/>)

Published: 2024-12-09T00:00:00Z

Content type: article

Language: en

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

Topics: [Linux](<https://devfeed.tech/topics/linux.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Maintainers](<https://devfeed.tech/topics/maintainers.md>), [GitLab](<https://devfeed.tech/topics/gitlab.md>), [Bluetooth](<https://devfeed.tech/topics/bluetooth.md>), [middleware](<https://devfeed.tech/topics/middleware.md>), [kernels](<https://devfeed.tech/topics/kernels.md>), [patches](<https://devfeed.tech/topics/patches.md>), [SOC](<https://devfeed.tech/topics/soc.md>), [bug](<https://devfeed.tech/topics/bug.md>), [Pipewire](<https://devfeed.tech/topics/pipewire.md>), [dell](<https://devfeed.tech/topics/dell.md>)

Tags: [bluetooth](<https://devfeed.tech/tags/bluetooth.md>), [bug](<https://devfeed.tech/tags/bug.md>), [conference](<https://devfeed.tech/tags/conference.md>), [developers](<https://devfeed.tech/tags/developers.md>), [gitlab](<https://devfeed.tech/tags/gitlab.md>), [kernels](<https://devfeed.tech/tags/kernels.md>), [linux](<https://devfeed.tech/tags/linux.md>), [maintainers](<https://devfeed.tech/tags/maintainers.md>), [middleware](<https://devfeed.tech/tags/middleware.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [postmarketos](<https://devfeed.tech/tags/postmarketos.md>), [qualcomm](<https://devfeed.tech/tags/qualcomm.md>), [us](<https://devfeed.tech/tags/us.md>)

### AI overview

A postmarketOS community update covering its SeaGL conference presence, new Trusted Contributors, Linux mobile development work, and the migration to a self-hosted GitLab instance with stability and CI issues.

### Source excerpt

Anjan, Arnav and Clayton represented postmarketOS at the SeaGL conference with a stand, where they showed off several devices running postmarketOS (OP6, PinePhone, Surface RT, some Dell tablet among others) and talked with many attendees. Anjan also gave an excellent talk, Introduction to postmarketOS. The beautiful table cloth was designed by Ranny. Here is Arnav describing the stand experience: People were generally impressed by OP6 performance and GNOME Mobile snazziness. Some people were Linux-savvy and were there on purpose, but it seems more than a few people just roamed in wondering what the crowd was about, so it was nice to see their eyes light up when we described pmOS to them. Some of them even realized by themselves without us telling them that this would allow them to reuse their old phones for something useful, which was amazing. Organizational Trusted Contributors We have three new Trusted Contributors this month, who we are really excited about! Anjan: One of the maintainers of our favorite tiling WM based Linux Mobile interface Sxmo. He also maintains quite a few Alpine Linux packages and contributed some cool pmbootstrap patches! Barnabás: Maintains multiple Qualcomm SoC kernels in pmOS, as well as related device ports and does important mainlining work! Dylan: Works on VoLTE, Bluetooth HFP, Qualcomm sensors, helps with improving community and main devices like the Fairphone 4/5 and SDM845 devices as well as middleware such as PipeWire, fwupd and ModemManager. Dylan isn't new to the team, but he has switched from Core Contributor to Trusted Contributor to have a lower time commitment regarding organizational stuff. GitLab We recently migrated to our own instance. So far it has not exactly been a smooth ride, we are facing some stability issues: We are affected by this GitLab bug, which causes sporadic 500 errors on our instance. When these happen, usually just reloading the page works around it, but it is of course annoying. At one point we even se

## How to Use WebSockets in a Redux Application

DevFeed: [How to Use WebSockets in a Redux Application](<https://devfeed.tech/articles/how-to-use-websockets-in-a-redux-application-37610.md>)

Original publisher: [Read original article](<https://www.taniarascia.com/websockets-in-redux/>)

Author: hello@taniarascia.com

Published: 2023-02-15T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [WebSocket](<https://devfeed.tech/topics/websocket.md>), [Redux](<https://devfeed.tech/topics/redux.md>), [middleware](<https://devfeed.tech/topics/middleware.md>), [React](<https://devfeed.tech/topics/react.md>), [browser](<https://devfeed.tech/topics/browser.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [chat](<https://devfeed.tech/tags/chat.md>), [dashboard](<https://devfeed.tech/tags/dashboard.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [react](<https://devfeed.tech/tags/react.md>), [redux](<https://devfeed.tech/tags/redux.md>), [websockets](<https://devfeed.tech/tags/websockets.md>)

### AI overview

A tutorial on integrating WebSockets into a React/Redux application by using Redux middleware to manage connection events, state access, and dispatched actions. It demonstrates a browser WebSocket client and discusses initializing and closing connections for use cases such as chat and live dashboards.

### Source excerpt

At some point, you might work on a React/Redux application that requires the use of WebSockets, such as for chat or live updates on a...

## How To Set Up a GraphQL API Server in Node.js

DevFeed: [How To Set Up a GraphQL API Server in Node.js](<https://devfeed.tech/articles/how-to-set-up-a-graphql-api-server-in-node-js-37591.md>)

Original publisher: [Read original article](<https://www.taniarascia.com/graphql-server-node/>)

Author: hello@taniarascia.com

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

Content type: tutorial

Language: en

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

Topics: [GraphQL](<https://devfeed.tech/topics/graphql.md>), [Node.js](<https://devfeed.tech/topics/node-js.md>), [Express](<https://devfeed.tech/topics/express.md>), [API](<https://devfeed.tech/topics/api.md>), [middleware](<https://devfeed.tech/topics/middleware.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [api-server](<https://devfeed.tech/tags/api-server.md>), [cors](<https://devfeed.tech/tags/cors.md>), [express](<https://devfeed.tech/tags/express.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [node](<https://devfeed.tech/tags/node.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [resolver](<https://devfeed.tech/tags/resolver.md>), [rest](<https://devfeed.tech/tags/rest.md>)

### AI overview

This tutorial explains how to build a GraphQL API server with Express and Node.js. It covers defining a GraphQL schema with queries, mutations, and resolver functions, then exploring and debugging the API with GraphiQL.

### Source excerpt

In An Introduction to GraphQL, you learned that GraphQL is an open-source query language and runtime for APIs created to solve issues that...

## Lemon : Koa 风格的 Python 异步 Web 框架

DevFeed: [Lemon : Koa 风格的 Python 异步 Web 框架](<https://devfeed.tech/articles/lemon-koa-python-web-40998.md>)

Original publisher: [Read original article](<https://blog.joway.io/posts/lemon-overview/>)

Author: Joway

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

Content type: tutorial

Language: zh

Sources: [Random Thoughts](<https://devfeed.tech/sources/random-thoughts.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Koa](<https://devfeed.tech/topics/koa.md>), [middleware](<https://devfeed.tech/topics/middleware.md>), [ASGI](<https://devfeed.tech/topics/asgi.md>)

Tags: [async](<https://devfeed.tech/tags/async.md>), [middleware](<https://devfeed.tech/tags/middleware.md>), [python](<https://devfeed.tech/tags/python.md>), [tech](<https://devfeed.tech/tags/tech.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

The article introduces Lemon, a Python asynchronous web framework designed with a Koa-style middleware model. It explains the distinction between server and application responsibilities, discusses ASGI-compatible servers such as uvicorn, and describes Lemon's routing and context design.

### Source excerpt

前段时间想要写一些简短高效的 API ，背后的工作无非就是一些计算和数据处理，但是可能并发量会比较高。当我在 Python 的生态里去搜寻一些靠谱的 Web 框架时，很难找到一个设计优秀且运行效率高的框架。尤其是当我已经习惯了 NodeJS 的 Koa 那种简洁明了的设计时，很难再喜欢上像 Flask 那种装饰器的写法和各种概念拢杂在一起的设计。最后实在没有办法，就自己写了个符合我个人审美的框架 Lemon 。

## Empire Node 2016

DevFeed: [Empire Node 2016](<https://devfeed.tech/articles/empire-node-2016-32300.md>)

Original publisher: [Read original article](<https://jack.ofspades.com/empire-node-2016/>)

Author: Jack Tarantino

Published: 2016-11-08T22:57:34Z

Content type: article

Language: en

Sources: [Jacopo Tarantino](<https://devfeed.tech/sources/jacopo-tarantino.md>)

Topics: [code style](<https://devfeed.tech/topics/code-style.md>), [ESLint](<https://devfeed.tech/topics/eslint.md>), [React](<https://devfeed.tech/topics/react.md>), [Redux](<https://devfeed.tech/topics/redux.md>), [MongoDB](<https://devfeed.tech/topics/mongodb.md>), [Promise](<https://devfeed.tech/topics/promise.md>), [CommonJS](<https://devfeed.tech/topics/commonjs.md>), [middleware](<https://devfeed.tech/topics/middleware.md>)

Tags: [callback](<https://devfeed.tech/tags/callback.md>), [code](<https://devfeed.tech/tags/code.md>), [code-style](<https://devfeed.tech/tags/code-style.md>), [commonjs](<https://devfeed.tech/tags/commonjs.md>), [empire-node](<https://devfeed.tech/tags/empire-node.md>), [eslint](<https://devfeed.tech/tags/eslint.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [modules](<https://devfeed.tech/tags/modules.md>), [mongodb](<https://devfeed.tech/tags/mongodb.md>), [new-york-city](<https://devfeed.tech/tags/new-york-city.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [react](<https://devfeed.tech/tags/react.md>), [redux](<https://devfeed.tech/tags/redux.md>)

### AI overview

Notes from Empire Node 2016 cover talks about HyperTerm and its React and Redux plugin architecture, ESLint rules and coding practices, and MongoDB, along with other programming topics.

### Source excerpt

Yesterday I had the good fortune to attend Empire Node at The National Museum of the American Indian, courtesy of InRhythm. A good time was had by all and we got to see some great talks! There was programmable music, smart ways to get into code style linting and, of

## JWT Authentication

DevFeed: [JWT Authentication](<https://devfeed.tech/articles/jwt-authentication-35618.md>)

Original publisher: [Read original article](<https://zolmeister.com/2016/09/jwt-auth.html>)

Author: Zoli Kahan

Published: 2016-09-26T05:00:00Z

Content type: tutorial

Language: en

Sources: [Zolmeister](<https://devfeed.tech/sources/zolmeister.md>)

Topics: [JSON Web Tokens](<https://devfeed.tech/topics/jwt.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [API](<https://devfeed.tech/topics/api.md>), [middleware](<https://devfeed.tech/topics/middleware.md>), [private key](<https://devfeed.tech/topics/private-key.md>), [public key](<https://devfeed.tech/topics/public-key.md>), [Security](<https://devfeed.tech/topics/security.md>), [Express](<https://devfeed.tech/topics/express.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [hosting](<https://devfeed.tech/tags/hosting.md>), [jwt](<https://devfeed.tech/tags/jwt.md>), [middleware](<https://devfeed.tech/tags/middleware.md>), [oauth](<https://devfeed.tech/tags/oauth.md>), [private-key](<https://devfeed.tech/tags/private-key.md>), [public-key](<https://devfeed.tech/tags/public-key.md>), [security](<https://devfeed.tech/tags/security.md>)

### AI overview

The article explains an authentication approach for hosting platforms that need to support third-party application access and verify local native API calls. It uses JSON Web Tokens with ES256 and a public/private key pair, followed by a sample authentication strategy and Express middleware implementation.

### Source excerpt

JWT Authentication Authentication models for hosting platforms require more considerations due to 3rd party api access. We wanted to be able to issue user auth tokens for 3rd party apps (think OAuth), as well as be able to verify authentication of local native api calls (through our iframe native app hooks).

## Easy custom auth in Clojure with Friend

DevFeed: [Easy custom auth in Clojure with Friend](<https://devfeed.tech/articles/easy-custom-auth-in-clojure-with-friend-32119.md>)

Original publisher: [Read original article](<https://adambard.com/blog/easy-auth-with-friend/>)

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

Content type: tutorial

Language: en

Sources: [Adam Bard](<https://devfeed.tech/sources/adam-bard.md>)

Topics: [Clojure](<https://devfeed.tech/topics/clojure.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Code](<https://devfeed.tech/topics/code.md>), [function](<https://devfeed.tech/topics/function.md>), [middleware](<https://devfeed.tech/topics/middleware.md>)

Tags: [auth](<https://devfeed.tech/tags/auth.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [clojure](<https://devfeed.tech/tags/clojure.md>), [code](<https://devfeed.tech/tags/code.md>), [function](<https://devfeed.tech/tags/function.md>), [middleware](<https://devfeed.tech/tags/middleware.md>), [password](<https://devfeed.tech/tags/password.md>)

### AI overview

This tutorial explains how to use Friend for simple custom authentication workflows in Clojure. It introduces Friend's middleware and workflow concepts, then uses a toy authentication system to illustrate how requests can produce a response, continue to another workflow, or authenticate a user.

### Source excerpt

I've used friend to provide auth in my projects a few times, and considered it many more before resorting to my own hand-rolled business. Most of the reason for this is that is just seems so complicated. Workflows? Credentials? I just want to check a password and stash a user object in the session, end of story. After I did some investigating, though, it turns out that you can usefully deploy friend for even very simple workflows, if you understand how it works.

## Release It: Write software for production

DevFeed: [Release It: Write software for production](<https://devfeed.tech/articles/release-it-write-software-for-production-35453.md>)

Original publisher: [Read original article](<https://darkcoding.net/software/release-it-write-software-for-production/>)

Author: Graham King

Published: 2014-11-10T05:12:08Z

Content type: article

Language: en

Sources: [Graham King](<https://devfeed.tech/sources/graham-king.md>)

Topics: [Software](<https://devfeed.tech/topics/software.md>), [Development](<https://devfeed.tech/topics/development.md>), [middleware](<https://devfeed.tech/topics/middleware.md>), [IO](<https://devfeed.tech/topics/io.md>), [Database](<https://devfeed.tech/topics/database.md>)

Tags: [book](<https://devfeed.tech/tags/book.md>), [code](<https://devfeed.tech/tags/code.md>), [database](<https://devfeed.tech/tags/database.md>), [development](<https://devfeed.tech/tags/development.md>), [middleware](<https://devfeed.tech/tags/middleware.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

Notes on Michael T. Nygard's Release It, focusing on designing software for production by anticipating failures, decoupling components, using timeouts and limits, and preventing operational problems. The article also critiques the book's broad concepts and narrow enterprise J2EE examples.

### Source excerpt

Design for disaster: Building software that survives production chaos.

## Introducing django-db-tools

DevFeed: [Introducing django-db-tools](<https://devfeed.tech/articles/introducing-django-db-tools-41125.md>)

Original publisher: [Read original article](<https://www.craigkerstiens.com/2013/02/08/Introducing-django-db-tools/>)

Author: Map

Published: 2013-02-08T20:55:56Z

Content type: release

Language: en

Sources: [Craig Kerstiens](<https://devfeed.tech/sources/craig-kerstiens.md>)

Topics: [migration](<https://devfeed.tech/topics/migration.md>), [Django](<https://devfeed.tech/topics/django.md>), [middleware](<https://devfeed.tech/topics/middleware.md>), [MySQL](<https://devfeed.tech/topics/mysql.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [web applications](<https://devfeed.tech/topics/web-applications.md>)

Tags: [database](<https://devfeed.tech/tags/database.md>), [django](<https://devfeed.tech/tags/django.md>), [downtime](<https://devfeed.tech/tags/downtime.md>), [github](<https://devfeed.tech/tags/github.md>), [heroku](<https://devfeed.tech/tags/heroku.md>), [http](<https://devfeed.tech/tags/http.md>), [middleware](<https://devfeed.tech/tags/middleware.md>), [migration](<https://devfeed.tech/tags/migration.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [python](<https://devfeed.tech/tags/python.md>)

### AI overview

This article announces django-db-tools, a lightweight Django middleware utility for operating a web application in limited read-only modes during large database migrations. It provides an anonymous mode and a mode that treats POST requests as GET requests to help prevent data insertion, with configuration through environment variables or Heroku config variables.

### Source excerpt

For any successful web application there is likely to come a time when you need to conduct some large migration on the backend. I dont mean simple add a column here or add an index there, but rather truly sizeable migrations... Going from MySQL to Postgres or migrating from an older version of Postgres such as a 32 bit instance to a newer 64 bit instance. In these cases the default approach is to just schedule downtime often throwing up a splash screen saying so. For many sites this approach is simply wrong and lazy, with little effort you can improve the experience and there by ease the burden in conducting these types of migrations. By having the ability to turn your site into a read only mode which Simon Wilson talked about in his post on Lanyrd you can still continue to operate just in a limited capacity. Andrew Godwin further talks about some of this as well in regards to the Lanyrd move and even includes the script they used to migrate data from MySQL to Postgres. Though just in talking with Simon about this a week ago it occurred to me they had not released the code for their read-only mode. Finally onto the announcing, today I'm releasing django-db-tools. This is currently a very lightweight utility that allows you to flip your site into two modes. Anonymous Mode For sites that offer a bulk of their data to unauthenticated users anonymous mode will be what you want. This ensures all users appear logged out and thus cannot interact with data. To enable anonymous mode you'd simple set the environment variable or config var on heroku as follows: READ_ONLY_MODE = True Restricting POSTs The other bucket of sites is one that allows users to stay logged in but not insert data. Django did not appear to have a convenient means to know whether data was actually being inserted into the DB or not. As a good practice when inserting data it should be receiving a HTTP POST. The GET_ONLY_MODE mimmicks all POSTs as if they were sent via GETs thus hopefully eliminating insertin