# function

Published articles for function.

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

## Magic statics vs. std::call\_once

DevFeed: [Magic statics vs. std::call\_once](<https://devfeed.tech/articles/magic-statics-vs-std-call-once-42167.md>)

Original publisher: [Read original article](<https://devblogs.microsoft.com/oldnewthing/20260916-00/?p=112703>)

Author: Raymond Chen

Published: 2026-09-16T14:00:00Z

Content type: article

Language: en

Sources: [Raymond Chen](<https://devfeed.tech/sources/raymond-chen.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Caching](<https://devfeed.tech/topics/caching.md>), [execution](<https://devfeed.tech/topics/execution.md>), [function](<https://devfeed.tech/topics/function.md>), [class](<https://devfeed.tech/topics/class.md>)

Tags: [cache](<https://devfeed.tech/tags/cache.md>), [class](<https://devfeed.tech/tags/class.md>), [code](<https://devfeed.tech/tags/code.md>), [execution](<https://devfeed.tech/tags/execution.md>), [function](<https://devfeed.tech/tags/function.md>), [old-new-thing](<https://devfeed.tech/tags/old-new-thing.md>), [static](<https://devfeed.tech/tags/static.md>)

### AI overview

The article compares function-local static variables with std::call_once for caching values that are expensive to calculate. It explains why magic statics are unsuitable for lazily initializing per-instance data and points to deferred execution as a related alternative.

### Source excerpt

They sort of do the same thing, but differently. The post Magic statics vs. <CODE>std::call_once</CODE> appeared first on The Old New Thing.

## Khan Academy Uses Local Storage and Request Queues to Handle Offline Actions

DevFeed: [Khan Academy Uses Local Storage and Request Queues to Handle Offline Actions](<https://devfeed.tech/articles/no-cheating-allowed-27397.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/no-cheating-allowed.htm>)

Author: Khan Academy

Published: 2015-08-17T22:00:00Z

Content type: article

Language: en

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

Topics: [LocalStorage](<https://devfeed.tech/topics/localstorage.md>), [client](<https://devfeed.tech/topics/client.md>), [Code](<https://devfeed.tech/topics/code.md>), [Internet](<https://devfeed.tech/topics/internet.md>), [servers](<https://devfeed.tech/topics/servers.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [change](<https://devfeed.tech/tags/change.md>), [code](<https://devfeed.tech/tags/code.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [function](<https://devfeed.tech/tags/function.md>), [hints](<https://devfeed.tech/tags/hints.md>), [linear](<https://devfeed.tech/tags/linear.md>), [local](<https://devfeed.tech/tags/local.md>), [news](<https://devfeed.tech/tags/news.md>), [offline](<https://devfeed.tech/tags/offline.md>), [queue](<https://devfeed.tech/tags/queue.md>), [request](<https://devfeed.tech/tags/request.md>), [server](<https://devfeed.tech/tags/server.md>), [web-frontend](<https://devfeed.tech/tags/web-frontend.md>)

### AI overview

This article explains how Khan Academy addressed offline hint cheating by changing the client's request architecture. Actions are stored in local storage and placed in a queue for retry when connectivity returns, with linear backoff to avoid repeated requests during outages.

### Source excerpt

By Phillip Lemons The problem Recently, a number of students on Khan Academy found a way to cheat ... Read more

## What's New in PHP 8.6

DevFeed: [What's New in PHP 8.6](<https://devfeed.tech/articles/what-s-new-in-php-8-6-26631.md>)

Original publisher: [Read original article](<https://laravel-news.com/php-8-6>)

Author: Paul Redmond

Published: 2026-09-15T03:00:09Z

Content type: release

Language: en

Sources: [Laravel](<https://devfeed.tech/sources/laravel.md>)

Topics: [PHP](<https://devfeed.tech/topics/php.md>), [DateTime](<https://devfeed.tech/topics/datetime.md>), [ISO 8601](<https://devfeed.tech/topics/iso-8601.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [closure](<https://devfeed.tech/tags/closure.md>), [feature](<https://devfeed.tech/tags/feature.md>), [function](<https://devfeed.tech/tags/function.md>), [interface](<https://devfeed.tech/tags/interface.md>), [iso](<https://devfeed.tech/tags/iso.md>), [news](<https://devfeed.tech/tags/news.md>), [php](<https://devfeed.tech/tags/php.md>), [php-8-6](<https://devfeed.tech/tags/php-8-6.md>), [precision](<https://devfeed.tech/tags/precision.md>), [properties](<https://devfeed.tech/tags/properties.md>), [release](<https://devfeed.tech/tags/release.md>)

### AI overview

An overview of PHP 8.6, scheduled for release on November 19, 2026. The article covers partial function application, the clamp() function, a nanosecond-precision Duration class, readonly property defaults, and parameter DocComments, along with the release timeline and related changes.

### Source excerpt

PHP 8.6 arrives November 19, 2026 with partial function application, a clamp() function, a Duration class, readonly property defaults, and new deprecations. The post What's New in PHP 8.6 appeared first on Laravel News. Join the Laravel Newsletter to get Laravel articles like this directly in your inbox.

## A File Existence Bug Caused by Checking Its Timestamp

DevFeed: [A File Existence Bug Caused by Checking Its Timestamp](<https://devfeed.tech/articles/codesod-i-exist-28510.md>)

Original publisher: [Read original article](<https://thedailywtf.com/articles/i-exist>)

Author: Remy Porter

Published: 2026-09-14T06:30:00Z

Content type: article

Language: en

Sources: [The Daily WTF](<https://devfeed.tech/sources/the-daily-wtf.md>)

Topics: [bug](<https://devfeed.tech/topics/bug.md>), [Development](<https://devfeed.tech/topics/development.md>), [Windows](<https://devfeed.tech/topics/windows.md>)

Tags: [bug](<https://devfeed.tech/tags/bug.md>), [code](<https://devfeed.tech/tags/code.md>), [codesod](<https://devfeed.tech/tags/codesod.md>), [development](<https://devfeed.tech/tags/development.md>), [files](<https://devfeed.tech/tags/files.md>), [function](<https://devfeed.tech/tags/function.md>), [time](<https://devfeed.tech/tags/time.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

A Pascal system library implements FileExists by checking whether FileAge returns -1. Because FileAge depends on a valid last-write timestamp, files without that timestamp are incorrectly reported as missing. The underlying failure is also not checked for its error code.

### Source excerpt

In addition to using an ancient development environment, with terrible UX, Greta also has the misfortune of working in Pascal. Recently, she was diagnosing a bug. The program was reporting that files didn't exist when they definitely existed. She traced the problem down into the system library. Let's see if you can spot what's wrong: { Delphi / Kylix Cross-Platform Runtime Library } { System Utilities Unit } { } { Copyright (c) 1995-2001 Borland Softwrare Corporation } ... function FileAge(const FileName: string): Integer; {$IFDEF MSWINDOWS} var Handle: THandle; FindData: TWin32FindData; LocalFileTime: TFileTime; begin Handle := FindFirstFile(PChar(FileName), FindData); if Handle <> INVALID_HANDLE_VALUE then begin Windows.FindClose(Handle); if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then begin FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime); if FileTimeToDosDateTime(LocalFileTime, LongRec(Result).Hi, LongRec(Result).Lo) then Exit; end; end; Result := -1; end; {$ENDIF} function FileExists(const FileName: string): Boolean; {$IFDEF MSWINDOWS} begin Result := FileAge(FileName) <> -1; end; {$ENDIF} The first function here is FileAge, which returns the last modified timestamp on a file. Note the use of FileTimeToDosDateTime, which is a Windows API function. It converts LocalFileTime and stores the date part in the first output parameter (LongRec(Result).Hi) and the time part in the second output parameter (LongRec(Result).Lo). Result, in this case, is our return value. If anything goes wrong, we return -1. The FileExists function then, simply calls FileAge. If it doesn't return a -1, there must be a file there. That's an awkward, weird solution to the problem. There has to be a system call that can answer that question more obviously. But it doesn't seem like it should be blowing up- it looks like it should work. But note that FileTimeToDosDateTime also returns a boolean value. If it succeeds, great, but if it fails, it returns false

## \[$\] Stabilizing Rust's never type

DevFeed: [\[$\] Stabilizing Rust's never type](<https://devfeed.tech/articles/stabilizing-rust-s-never-type-8491.md>)

Original publisher: [Read original article](<https://lwn.net/Articles/1091015/>)

Author: daroc

Published: 2026-09-08T13:34:38Z

Content type: article

Language: en

Sources: [LWN.net](<https://devfeed.tech/sources/lwn-net.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Code](<https://devfeed.tech/topics/code.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [change](<https://devfeed.tech/tags/change.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [error](<https://devfeed.tech/tags/error.md>), [function](<https://devfeed.tech/tags/function.md>), [maintainers](<https://devfeed.tech/tags/maintainers.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [rust](<https://devfeed.tech/tags/rust.md>)

### AI overview

The article explains Rust's never type, denoted by "!", and reports that it was stabilized after more than two years of work. It discusses the feature's practical benefits for optimizing generic code and its role in type inference, while noting a small breaking change to previous Rust editions.

### Source excerpt

A function's return type is supposed to indicate the kind of data that it produces. Rust's "never" type, which is denoted by an exclamation mark ("!"), is the type the language uses to mark a function that never returns and other places where a value can never occur. For a long time, the never type was used internally by the compiler, but was considered an unstable feature. On August 24, after more than two years of work, Rust-compiler-contributor "waffle" finally managed to stabilize the type. It took so long, in part, because it involved a small breaking change to previous Rust editions, which the compiler maintainers needed to ensure did not impact much real code.

## How big are factorials?

DevFeed: [How big are factorials?](<https://devfeed.tech/articles/how-big-are-factorials-35142.md>)

Original publisher: [Read original article](<https://eli.thegreenplace.net/2026/how-big-are-factorials/>)

Author: Eli Bendersky

Published: 2026-08-28T01:52:00Z

Content type: tutorial

Language: en

Sources: [Eli Bendersky](<https://devfeed.tech/sources/eli-bendersky.md>)

Topics: [math](<https://devfeed.tech/topics/math.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [function](<https://devfeed.tech/tags/function.md>), [gamma](<https://devfeed.tech/tags/gamma.md>), [math](<https://devfeed.tech/tags/math.md>), [misc](<https://devfeed.tech/tags/misc.md>), [number](<https://devfeed.tech/tags/number.md>)

### AI overview

This tutorial explains how to estimate the number of digits in factorials, using 52! as an example. It introduces the Gamma function and outlines Stirling's approximation and its derivation using Laplace's method.

### Source excerpt

The other day, I found myself wondering how big 52! (52 factorial) is, and that led me to ponder how these could be estimated without a calculator or a computer. It turns out there's some fairly interesting math behind being able to estimate the size (number of digits) of ...

## Why your index is not being used, and why the planner is usually right

DevFeed: [Why your index is not being used, and why the planner is usually right](<https://devfeed.tech/articles/why-your-index-is-not-being-used-and-why-the-planner-is-usually-right-39590.md>)

Original publisher: [Read original article](<https://ankit-rana.com/logs/38-why-your-index-is-not-being-used/>)

Author: hello@ankit-rana.com

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

Content type: tutorial

Language: en

Sources: [Ankit Rana | Mechanical Sympathy](<https://devfeed.tech/sources/ankit-rana-mechanical-sympathy.md>)

Topics: [Query (disambiguation)](<https://devfeed.tech/topics/query.md>), [MySQL](<https://devfeed.tech/topics/mysql.md>), [bug](<https://devfeed.tech/topics/bug.md>)

Tags: [bug](<https://devfeed.tech/tags/bug.md>), [cardinality](<https://devfeed.tech/tags/cardinality.md>), [database-performance](<https://devfeed.tech/tags/database-performance.md>), [explain](<https://devfeed.tech/tags/explain.md>), [function](<https://devfeed.tech/tags/function.md>), [indexes](<https://devfeed.tech/tags/indexes.md>), [indexing](<https://devfeed.tech/tags/indexing.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [predicate](<https://devfeed.tech/tags/predicate.md>), [query](<https://devfeed.tech/tags/query.md>), [query-planner](<https://devfeed.tech/tags/query-planner.md>)

### AI overview

This tutorial explains why database indexes may not be used even when they exist. It focuses on inaccurate cardinality estimates caused by stale statistics, predicates that prevent index matching, implicit casts, and cases where sequential scans are the cheaper choice.

### Source excerpt

An unused index is almost never a planner bug. It is usually a predicate the planner cannot match to the index, such as a function or an implicit cast applied to the column, or a cardinality estimate that is wrong because statistics are stale. When the estimate is right and the planner still refuses, it is often correct: past a few percent of the table, random access through an index costs more than reading the table sequentially. The diagnostic that matters is the gap between estimated and actual rows in EXPLAIN ANALYZE.

## A revised algorithm for converting Gregorian dates to day counts

DevFeed: [A revised algorithm for converting Gregorian dates to day counts](<https://devfeed.tech/articles/counting-the-days-revisited-36232.md>)

Original publisher: [Read original article](<https://dotat.at/@/2026-08-09-rata-die.html>)

Published: 2026-08-09T02:29:48Z

Content type: article

Language: en

Sources: [Tony Finch's blog](<https://devfeed.tech/sources/tony-finch-s-blog.md>)

Topics: [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [DateTime](<https://devfeed.tech/topics/datetime.md>), [C](<https://devfeed.tech/topics/c.md>), [Code](<https://devfeed.tech/topics/code.md>), [function](<https://devfeed.tech/topics/function.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [c](<https://devfeed.tech/tags/c.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [data-type](<https://devfeed.tech/tags/data-type.md>), [function](<https://devfeed.tech/tags/function.md>), [range](<https://devfeed.tech/tags/range.md>)

### AI overview

The article revisits an algorithm for converting Gregorian dates into Julian Day numbers or related day counts such as rata die. It explains the March-based month pattern, leap-year corrections, integer arithmetic, and limitations caused by overflow in the output data type.

### Source excerpt

Many years ago I wrote about how to convert Gregorian dates to Julian Day numbers or similar counts such as rata die as used in Calendrical Calculations. This algorithm is the core of C's mktime() function that converts a broken-down date-time into linear time_t. I recently learned from Ben Joffe that I was missing a few tricks, and my old code wasn't as good as it could have been. Here's a better version (using conventional not C numbering): if m > 2 { m -= 2; } else { m += 10; y -= 1; } y*365 + y/4 - y/100 + y/400 + m*979/32 + d - 336 the main idea Julian years Gregorian correction the month pattern the epoch domains and ranges leap year test length of month the main idea There's a helpful coincidence in the Gregorian calendar. Although the month lengths aren't obviously regular, there's a repeating 5 month pattern that becomes easier to see when you start from March, as illustrated by the table below. This pattern resets at the end of February, midway through its third repeat, coincidentally at the same point that leap days occur. Thus the first line of the code above adjusts the month and year numbers so that January and February are counted at the end of the previous year, and the coincidental alignment occurs at the boundary between the adjusted year numbers. I'll explain the details of the adjustment as I discuss the relevant parts of the second line March 31 days April 30 days May 31 days June 30 days July 31 days August 31 days September 30 days October 31 days November 30 days December 31 days January 31 days February 28 or 29 Julian years The first part of the main formula counts the number of days before the start of year y, in terms of normal years and leap days. y * 365 + y / 4 The adjustment subtracts one from the year in January and February. The effect is that the leap day in year 4 is counted as a day before the start of the adjusted beginning of year 4, i.e. before March, i.e. exactly the right place. I previously combined this part of the express

## What's new in PHP 8.6

DevFeed: [What's new in PHP 8.6](<https://devfeed.tech/articles/what-s-new-in-php-8-6-33288.md>)

Original publisher: [Read original article](<https://freek.dev/3174-whats-new-in-php-86>)

Author: Freek Van der Herten (freek@spatie.be)

Published: 2026-08-05T12:14:26Z

Content type: article

Language: en

Sources: [freek.dev - all blogposts](<https://devfeed.tech/sources/freek-dev-all-blogposts.md>)

Topics: [PHP 8.6](<https://devfeed.tech/topics/php-8-6.md>), [PHP](<https://devfeed.tech/topics/php.md>), [API](<https://devfeed.tech/topics/api.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [features](<https://devfeed.tech/tags/features.md>), [function](<https://devfeed.tech/tags/function.md>), [improvements](<https://devfeed.tech/tags/improvements.md>), [news](<https://devfeed.tech/tags/news.md>), [php](<https://devfeed.tech/tags/php.md>), [php-8-6](<https://devfeed.tech/tags/php-8-6.md>)

### AI overview

The article surveys notable additions coming in PHP 8.6, including partial function application, a new polling API, readonly property defaults, and smaller improvements and deprecations.

### Source excerpt

Brent surveys the most notable additions coming in PHP 8.6, including partial function application, the new polling API, readonly property defaults, and several smaller improvements and deprecations. Read more

## Waiting for PostgreSQL 19 - SQL Property Graph Queries (SQL/PGQ)

DevFeed: [Waiting for PostgreSQL 19 - SQL Property Graph Queries (SQL/PGQ)](<https://devfeed.tech/articles/waiting-for-postgresql-19-sql-property-graph-queries-sql-pgq-33693.md>)

Original publisher: [Read original article](<https://www.depesz.com/2026/07/31/waiting-for-postgresql-19-sql-property-graph-queries-sql-pgq/>)

Author: depesz

Published: 2026-07-31T16:57:44Z

Content type: opinion

Language: en

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

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Graphs](<https://devfeed.tech/topics/graphs.md>), [function](<https://devfeed.tech/topics/function.md>), [pattern matching](<https://devfeed.tech/topics/pattern-matching.md>)

Tags: [function](<https://devfeed.tech/tags/function.md>), [graph](<https://devfeed.tech/tags/graph.md>), [graphs](<https://devfeed.tech/tags/graphs.md>), [pattern-matching](<https://devfeed.tech/tags/pattern-matching.md>), [pg19](<https://devfeed.tech/tags/pg19.md>), [pgq](<https://devfeed.tech/tags/pgq.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [property](<https://devfeed.tech/tags/property.md>), [sql](<https://devfeed.tech/tags/sql.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [waiting](<https://devfeed.tech/tags/waiting.md>)

### AI overview

The article discusses PostgreSQL's SQL/PGQ implementation for property graph queries, including GRAPH_TABLE, graph pattern matching, and related DDL commands. It notes that the change was later rolled back and expresses the author's uncertainty about the practical benefits and usability of the syntax.

### Source excerpt

Important update This change has been rolled back. Discussion can be found here. On 16th of March 2026, Peter Eisentraut committed patch: SQL Property Graph Queries (SQL/PGQ) Implementation of SQL property graph queries, according to SQL/PGQ standard (ISO/IEC 9075-16:2023). This adds: - GRAPH_TABLE table function for graph pattern matching - DDL commands ... Continue reading "Waiting for PostgreSQL 19 - SQL Property Graph Queries (SQL/PGQ)"

## Test & Set

DevFeed: [Test & Set](<https://devfeed.tech/articles/test-set-32253.md>)

Original publisher: [Read original article](<https://publicobject.com/2026/07/13/test-set/>)

Author: Jesse Wilson

Published: 2026-07-13T22:22:27Z

Content type: tutorial

Language: en

Sources: [Public Object](<https://devfeed.tech/sources/public-object.md>)

Topics: [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Code](<https://devfeed.tech/topics/code.md>), [function](<https://devfeed.tech/topics/function.md>), [business logic](<https://devfeed.tech/topics/business-logic.md>)

Tags: [business-logic](<https://devfeed.tech/tags/business-logic.md>), [code](<https://devfeed.tech/tags/code.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [flaky-tests](<https://devfeed.tech/tags/flaky-tests.md>), [function](<https://devfeed.tech/tags/function.md>), [programming](<https://devfeed.tech/tags/programming.md>), [tests](<https://devfeed.tech/tags/tests.md>), [threads](<https://devfeed.tech/tags/threads.md>)

### AI overview

An article about managing concurrency in threaded programs. It discusses the limits of simple and stress tests, describes a trusted concurrency pattern, and presents a helper function that separates business logic from concurrency logic while retrying after a lost race.

### Source excerpt

Working with threads always feels hazardous to me. Non-determinism limits how much we can exercise with simple tests. Stress tests can shake out some bugs, but they're slow and potentially flaky. I don't like flaky tests. So I have a few concurrency patterns that I trust, and I

## Kan Extensions in Double Categories

DevFeed: [Kan Extensions in Double Categories](<https://devfeed.tech/articles/kan-extensions-in-double-categories-28860.md>)

Original publisher: [Read original article](<https://bartoszmilewski.com/2026/06/13/kan-extensions-in-double-categories/>)

Author: Bartosz Milewski

Published: 2026-06-13T12:27:28Z

Content type: article

Language: en

Sources: [Bartosz Milewski's Programming Cafe](<https://devfeed.tech/sources/bartosz-milewski-s-programming-cafe.md>)

Topics: [Haskell](<https://devfeed.tech/topics/haskell.md>), [data type](<https://devfeed.tech/topics/data-type.md>), [implementation](<https://devfeed.tech/topics/implementation.md>)

Tags: [category-theory](<https://devfeed.tech/tags/category-theory.md>), [data-type](<https://devfeed.tech/tags/data-type.md>), [double-category](<https://devfeed.tech/tags/double-category.md>), [function](<https://devfeed.tech/tags/function.md>), [haskell](<https://devfeed.tech/tags/haskell.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [kan-extensions](<https://devfeed.tech/tags/kan-extensions.md>), [profunctor-equipment](<https://devfeed.tech/tags/profunctor-equipment.md>), [profunctors](<https://devfeed.tech/tags/profunctors.md>)

### AI overview

This article generalizes right and left Kan extensions from functors to profunctors in double categories and presents corresponding Haskell representations. It explains the associated universal and factorization properties, including their computational interpretation.

### Source excerpt

Previously: Kan extensions in Haskell. In a double category that is also a proarrow equipment, we have the ability to bend arrows. In particular, in the definition of the counit of the right Kan extension: we can bend the vertical arrow, replacing it with its horizontal conjoint . In a profunctor equipment, this is just [...]

## Neural Networks Explained In Plain English

DevFeed: [Neural Networks Explained In Plain English](<https://devfeed.tech/articles/neural-networks-explained-in-plain-english-33575.md>)

Original publisher: [Read original article](<https://blog.algomaster.io/p/neural-networks-explained-in-plain>)

Author: Ashish Pratap Singh

Published: 2026-04-21T04:01:25Z

Content type: tutorial

Language: en

Sources: [AlgoMaster Newsletter](<https://devfeed.tech/sources/algomaster-newsletter.md>)

Topics: [Neural Network](<https://devfeed.tech/topics/neural-network.md>), [AI Engineering](<https://devfeed.tech/topics/ai-engineering.md>), [Machine learning](<https://devfeed.tech/topics/machine-learning.md>)

Tags: [ai-engineering](<https://devfeed.tech/tags/ai-engineering.md>), [applications](<https://devfeed.tech/tags/applications.md>), [concepts](<https://devfeed.tech/tags/concepts.md>), [function](<https://devfeed.tech/tags/function.md>), [mlp](<https://devfeed.tech/tags/mlp.md>), [neural-networks](<https://devfeed.tech/tags/neural-networks.md>), [neuron](<https://devfeed.tech/tags/neuron.md>), [understand](<https://devfeed.tech/tags/understand.md>)

### AI overview

A plain-English introduction to neural networks. It explains neurons or perceptrons, activation functions, weights and biases, and how stacking neurons into dense layers creates a multilayer perceptron (MLP) architecture used in AI systems.

### Source excerpt

All popular AI systems that you see today are made up of basic computing units called Neurons or Perceptrons. These connect to form a network called a Neural network that performs various complex computations.

## Revenue Operations for SaaS: The Complete RevOps Guide

DevFeed: [Revenue Operations for SaaS: The Complete RevOps Guide](<https://devfeed.tech/articles/revenue-operations-for-saas-the-complete-revops-guide-10317.md>)

Original publisher: [Read original article](<https://dodopayments.com/blogs/revenue-operations-saas/>)

Author: Ayush Agarwal

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

Content type: tutorial

Language: en

Sources: [Dodo Payments Blog](<https://devfeed.tech/sources/dodo-payments-blog.md>)

Topics: [Software as a service](<https://devfeed.tech/topics/saas.md>), [data](<https://devfeed.tech/topics/data.md>), [systems](<https://devfeed.tech/topics/systems.md>)

Tags: [alignment](<https://devfeed.tech/tags/alignment.md>), [churn](<https://devfeed.tech/tags/churn.md>), [crm](<https://devfeed.tech/tags/crm.md>), [efficiency](<https://devfeed.tech/tags/efficiency.md>), [function](<https://devfeed.tech/tags/function.md>), [guide](<https://devfeed.tech/tags/guide.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [metrics](<https://devfeed.tech/tags/metrics.md>), [process](<https://devfeed.tech/tags/process.md>), [revenue](<https://devfeed.tech/tags/revenue.md>), [saas](<https://devfeed.tech/tags/saas.md>), [strategy](<https://devfeed.tech/tags/strategy.md>), [subscription](<https://devfeed.tech/tags/subscription.md>), [systems](<https://devfeed.tech/tags/systems.md>)

### AI overview

This guide explains how SaaS companies can use Revenue Operations to align marketing, sales, customer success, finance, data, tools, and processes across the customer lifecycle. It discusses subscription management, revenue leakage, failed payments, churn, retention, and expansion.

### Source excerpt

Build a revenue operations function for your SaaS company. Covers RevOps pillars, tech stack, and how billing infrastructure drives revenue efficiency.

## Call relocation types

DevFeed: [Call relocation types](<https://devfeed.tech/articles/call-relocation-types-31126.md>)

Original publisher: [Read original article](<https://maskray.me/blog/call-relocation-types>)

Published: 2026-02-16T08:00:00Z

Content type: article

Language: en

Sources: [MaskRay](<https://devfeed.tech/sources/maskray.md>)

Topics: [x86](<https://devfeed.tech/topics/x86.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [architectures](<https://devfeed.tech/tags/architectures.md>), [binutils](<https://devfeed.tech/tags/binutils.md>), [function](<https://devfeed.tech/tags/function.md>), [linker](<https://devfeed.tech/tags/linker.md>), [static-linking](<https://devfeed.tech/tags/static-linking.md>), [symbols](<https://devfeed.tech/tags/symbols.md>), [x86](<https://devfeed.tech/tags/x86.md>), [x86-64](<https://devfeed.tech/tags/x86-64.md>)

### AI overview

This technical post explains why some architectures use separate ELF relocation types for direct function calls and tail calls. It contrasts static linking, where a PC-relative relocation can often be reused, with dynamic linking, where calls may use PLT indirection and therefore require relocation types that encode call semantics.

### Source excerpt

Most architectures encode direct branch/call instructions with a PC-relative displacement. This post discusses a specific category of branch relocations: those used for direct function calls and tail calls. Some architectures use two ELF relocation types for a call instruction: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # i386, x86-64 call foo # R_386_PC32, R_X86_64_PC32 call foo@plt # R_386_PLT32, R_X86_64_PLT32 # m68k bsr.l foo # R_68K_PC32 bsr.l foo@plt # R_68K_PLT32 # s390/s390x brasl %r14, foo # R_390_PC32DBL brasl %r14, foo@plt # R_390_PLT32DBL # sparc call foo, 0 # not PIC: R_SPARC_WDISP30 call foo, 0 # gas -KPIC: R_SPARC_WPLT30

## The new clamp() function in PHP 8.6

DevFeed: [The new clamp() function in PHP 8.6](<https://devfeed.tech/articles/the-new-clamp-function-in-php-8-6-20476.md>)

Original publisher: [Read original article](<https://www.amitmerchant.com/the-clamp-function-in-php-86/>)

Author: Amit Merchant

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

Content type: tutorial

Language: en

Sources: [Amit Merchant](<https://devfeed.tech/sources/amit-merchant.md>)

Topics: [PHP 8.6](<https://devfeed.tech/topics/php-8-6.md>), [PHP](<https://devfeed.tech/topics/php.md>), [Development](<https://devfeed.tech/topics/development.md>), [configuration](<https://devfeed.tech/topics/configuration.md>)

Tags: [development](<https://devfeed.tech/tags/development.md>), [function](<https://devfeed.tech/tags/function.md>), [php](<https://devfeed.tech/tags/php.md>), [php-8-6](<https://devfeed.tech/tags/php-8-6.md>), [range](<https://devfeed.tech/tags/range.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

This tutorial introduces the clamp() function planned for PHP 8.6. It explains how the function constrains a value to an inclusive minimum and maximum, including its behavior when the value is outside the range and when the bounds are invalid. It also covers named parameters and practical use cases such as user input, UI sliders, pagination, rate limiting, dates, geometry, and lexicographic strings.

### Source excerpt

You know how sometimes you want to ensure that a value stays within a specific range? Maybe you're working with user input, configuration values, or any scenario where you need to enforce boundaries.

## Partial Function Application is coming in PHP 8.6

DevFeed: [Partial Function Application is coming in PHP 8.6](<https://devfeed.tech/articles/partial-function-application-is-coming-in-php-8-6-20473.md>)

Original publisher: [Read original article](<https://www.amitmerchant.com/partial-function-application-php-86/>)

Author: Amit Merchant

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

Content type: tutorial

Language: en

Sources: [Amit Merchant](<https://devfeed.tech/sources/amit-merchant.md>)

Topics: [PHP](<https://devfeed.tech/topics/php.md>), [PHP 8.6](<https://devfeed.tech/topics/php-8-6.md>), [Code](<https://devfeed.tech/topics/code.md>), [servers](<https://devfeed.tech/topics/servers.md>)

Tags: [argument](<https://devfeed.tech/tags/argument.md>), [authorization](<https://devfeed.tech/tags/authorization.md>), [callback](<https://devfeed.tech/tags/callback.md>), [closure](<https://devfeed.tech/tags/closure.md>), [function](<https://devfeed.tech/tags/function.md>), [http](<https://devfeed.tech/tags/http.md>), [parameter](<https://devfeed.tech/tags/parameter.md>), [php](<https://devfeed.tech/tags/php.md>), [php-8-6](<https://devfeed.tech/tags/php-8-6.md>), [request](<https://devfeed.tech/tags/request.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

This tutorial introduces Partial Function Application in PHP 8.6. It explains how placeholders create pre-configured Closures, covers multiple holes, named and variadic arguments, and shows a practical example for adding an Authorization header to HTTP requests.

### Source excerpt

Ever reach for a simple callback and end up writing a tiny novella--an arrow function stuffed with types, reordered parameters, and boilerplate just to pass one value through?

## Range Syntax for Style Queries

DevFeed: [Range Syntax for Style Queries](<https://devfeed.tech/articles/range-syntax-for-style-queries-28832.md>)

Original publisher: [Read original article](<https://una.im/range-style-queries/>)

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

Content type: tutorial

Language: en

Sources: [Una Kravets](<https://devfeed.tech/sources/una-kravets.md>)

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

Tags: [css](<https://devfeed.tech/tags/css.md>), [demo](<https://devfeed.tech/tags/demo.md>), [example](<https://devfeed.tech/tags/example.md>), [function](<https://devfeed.tech/tags/function.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [learn](<https://devfeed.tech/tags/learn.md>), [properties](<https://devfeed.tech/tags/properties.md>), [range](<https://devfeed.tech/tags/range.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

A tutorial on using range syntax in CSS style queries and the if() function. It explains comparisons involving custom properties, literal values, and function results, with examples for responsive components, weather cards, grid placement, and styling effects.

### Source excerpt

Learn how to use the new range syntax for CSS style queries and the if() function.

## Do you really need tsvector column?

DevFeed: [Do you really need tsvector column?](<https://devfeed.tech/articles/do-you-really-need-tsvector-column-33668.md>)

Original publisher: [Read original article](<https://www.depesz.com/2025/11/03/do-you-really-need-tsvector-column/>)

Author: depesz

Published: 2025-11-03T12:34:33Z

Content type: article

Language: en

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

Topics: [data](<https://devfeed.tech/topics/data.md>), [Query (disambiguation)](<https://devfeed.tech/topics/query.md>), [Algorithm](<https://devfeed.tech/topics/algorithm.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [benchmark](<https://devfeed.tech/tags/benchmark.md>), [comparison](<https://devfeed.tech/tags/comparison.md>), [data](<https://devfeed.tech/tags/data.md>), [function](<https://devfeed.tech/tags/function.md>), [gin](<https://devfeed.tech/tags/gin.md>), [gist](<https://devfeed.tech/tags/gist.md>), [index](<https://devfeed.tech/tags/index.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [query](<https://devfeed.tech/tags/query.md>), [tsearch](<https://devfeed.tech/tags/tsearch.md>), [tsvector](<https://devfeed.tech/tags/tsvector.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>)

### AI overview

This article tests whether a materialized tsvector column is necessary for full-text search. Using a large Wikipedia-derived dataset, it compares a tsvector column with an expression-based function index and reports that the tested query took about 4.5 minutes with the materialized column versus almost an hour with the function-based index.

### Source excerpt

When using tsearch one usually, often, creates a tsvector column to put data in, and then create index on it. But, do you really need the index? I wrote once already that you don't have to, but then a person talked with me on IRC, and pointed this section of docs: One advantage of the ... Continue reading "Do you really need tsvector column?"

## Simplify Your Code: Functional Core, Imperative Shell

DevFeed: [Simplify Your Code: Functional Core, Imperative Shell](<https://devfeed.tech/articles/simplify-your-code-functional-core-imperative-shell-23865.md>)

Original publisher: [Read original article](<http://testing.googleblog.com/2025/10/simplify-your-code-functional-core.html>)

Author: Google Testing Bloggers (noreply@blogger.com)

Published: 2025-10-20T13:53:00Z

Content type: tutorial

Language: en

Sources: [Google Testing Blog](<https://devfeed.tech/sources/google-testing-blog.md>)

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

Tags: [arham-jain](<https://devfeed.tech/tags/arham-jain.md>), [business-logic](<https://devfeed.tech/tags/business-logic.md>), [code](<https://devfeed.tech/tags/code.md>), [database](<https://devfeed.tech/tags/database.md>), [email](<https://devfeed.tech/tags/email.md>), [function](<https://devfeed.tech/tags/function.md>), [functional](<https://devfeed.tech/tags/functional.md>), [map](<https://devfeed.tech/tags/map.md>), [mutation](<https://devfeed.tech/tags/mutation.md>), [network](<https://devfeed.tech/tags/network.md>), [state](<https://devfeed.tech/tags/state.md>), [test](<https://devfeed.tech/tags/test.md>), [tott](<https://devfeed.tech/tags/tott.md>)

### AI overview

This tutorial explains the functional core, imperative shell pattern: keep pure, testable business logic separate from side effects such as database calls, network requests, email delivery, and external state mutation. It demonstrates the pattern by refactoring expiration-notification code.

### Source excerpt

This article was adapted from a Google Tech on the Toilet (TotT) episode. You can download a printer-friendly version of this TotT episode and post it in your office. By Arham Jain Is your code a tangled mess of business logic and side effects? Mixing database calls, network requests, and other external interactions directly with your core logic can lead to code that's difficult to test, reuse, and understand. Instead, consider writing a functional core that's called from an imperative shell. Separating your code into functional cores and imperative shells makes it more testable, maintainable, and adaptable. The core logic can be tested in isolation, and the imperative shell can be swapped out or modified as needed. Here's some messy example code that mixes logic and side effects to send expiration notification emails to users: // Bad: Logic and side effects are mixed function sendUserExpiryEmail(): void { for (const user of db.getUsers()) { if (user.subscriptionEndDate > Date.now()) continue; if (user.isFreeTrial) continue; email.send(user.email, "Your account has expired " + user.name + "."); } } A functional core should contain pure, testable business logic, which is free of side effects (such as I/O or external state mutation). It operates only on the data it is given. An imperative shell is responsible for side effects, like database calls and sending emails. It uses the functions in your functional core to perform the business logic. Rewriting the above code to follow the functional core / imperative shell pattern might look like: Functional core function getExpiredUsers(users: User[], cutoff: Date): User[] { return users.filter(user => user.subscriptionEndDate <= cutoff && !user.isFreeTrial); } function generateExpiryEmails(users: User[]): Array<[string, string]> { return users.map(user => ([user.email, "Your account has expired " + user.name + "."]) ); } Imperative shell email.bulkSend(generateExpiryEmails(getExpiredUsers(db.getUsers(), Date.now()))); No

## Cargo Cult Programming: Applying Patterns Without Understanding Them

DevFeed: [Cargo Cult Programming: Applying Patterns Without Understanding Them](<https://devfeed.tech/articles/cargo-culting-25229.md>)

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

Author: Kaushik Gopal

Published: 2025-10-18T16:37:23Z

Content type: opinion

Language: en

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

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [coding](<https://devfeed.tech/tags/coding.md>), [coding-style](<https://devfeed.tech/tags/coding-style.md>), [function](<https://devfeed.tech/tags/function.md>), [team](<https://devfeed.tech/tags/team.md>)

### AI overview

The article defines cargo cult programming as applying design patterns or coding styles without understanding their rationale. It argues that making code smaller is not automatically better and that cohesive, readable functions can be preferable to terse or fragmented code.

### Source excerpt

If you're a software engineer long enough, you will meet some gray beards that throw out-of-left-field phrases to convey software wisdom. For example, you should know if you're yak-shaving or bike-shedding, and when that's even a good thing. A recent HN article1 reminded me of another nugget - Cargo Culting (or Cargo Cult Programming). Definition ### Cargo Culting: ritualizing a process without understanding it. In the context of programming: practice of applying a design pattern or coding style blindly without understanding the reasons behind it Example ### I'm going to take this opportunity to air one of my personal cargo-culting pet peeves, sure to kick up another storm: Making everything small. When I get PR feedback saying "this class is too long, split this!", I get ready to launch into a tirade: you're confusing small with logically small - ritualizing line count without understanding cohesion. You can make code small by being terse: removing whitespace, cramming logic into one-liners, using clever shorthand.2 But you've just made it harder to read. A function that does one cohesive thing beats multiple smaller functions scattered across files. Etymology ### As the parable goes, after the end of the Second World War, indigenous tribes believed that air delivery of cargo would resume if they carried out the proper rituals, such as building runways, lighting fires next to them, and wearing headphones carved from wood while sitting in fabricated control towers. While on the surface amusing, there's sadness if you dig into the history and contributing factors (value dominance, language & security barriers). I don't think that's reason to avoid the term altogether. We as humans sometimes have to embrace our dark history, acknowledge our wrongs and build kindness in our hearts. We cannot change our past, but we can change our present and future. The next time someone on your team ritualizes a pattern without understanding it, you'll know what to call it. Who comes

## Kotlin type aliases versus functional interfaces for debuggable, distinct handler types

DevFeed: [Kotlin type aliases versus functional interfaces for debuggable, distinct handler types](<https://devfeed.tech/articles/the-case-of-the-missing-handler-27350.md>)

Original publisher: [Read original article](<https://blog.mmckenna.me/the-case-of-the-missing-handler>)

Author: Matt McKenna

Published: 2025-08-28T04:00:22Z

Content type: tutorial

Language: en

Sources: [Matt McKenna](<https://devfeed.tech/sources/matt-mckenna.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>), [debugging](<https://devfeed.tech/topics/debugging.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [code](<https://devfeed.tech/tags/code.md>), [debugger](<https://devfeed.tech/tags/debugger.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [function](<https://devfeed.tech/tags/function.md>), [generic](<https://devfeed.tech/tags/generic.md>), [interface](<https://devfeed.tech/tags/interface.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>)

### AI overview

This Kotlin article explains that a type alias for a function type does not create a distinct type, so its name can disappear from debugging and stack traces. It recommends functional interfaces when type identity, discoverability, distinct callbacks, and simple testing fakes are important.

### Source excerpt

Our story begins with a clean line of Kotlin: typealias Handler = (result: Result) -> Unit It looks innocent. Give a function type a name and tidy up the signatures, great! Then a bug hits. The Handler is gone in the debugger and in stack traces onl...

## Running Cloudflare Workers Inside Spin Apps

DevFeed: [Running Cloudflare Workers Inside Spin Apps](<https://devfeed.tech/articles/running-cloudflare-workers-inside-spin-apps-15333.md>)

Original publisher: [Read original article](<https://www.fermyon.com/blog/running-cloudflare-workers-inside-spin-apps>)

Author: Matt Butcher

Published: 2025-08-04T12:00:00Z

Content type: article

Language: en

Sources: [Fermyon - Experience the next wave of cloud computing.](<https://devfeed.tech/sources/fermyon-experience-the-next-wave-of-cloud-computing.md>)

Topics: [Cloudflare Workers](<https://devfeed.tech/topics/cloudflare-workers.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [function](<https://devfeed.tech/topics/function.md>), [Serverless](<https://devfeed.tech/topics/serverless.md>)

Tags: [apps](<https://devfeed.tech/tags/apps.md>), [can](<https://devfeed.tech/tags/can.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [cloudflare-workers](<https://devfeed.tech/tags/cloudflare-workers.md>), [function](<https://devfeed.tech/tags/function.md>), [run](<https://devfeed.tech/tags/run.md>), [running](<https://devfeed.tech/tags/running.md>), [serverless](<https://devfeed.tech/tags/serverless.md>), [workers](<https://devfeed.tech/tags/workers.md>)

### AI overview

The article states that Cloudflare Workers are a type of serverless function and can run within Spin apps.

### Source excerpt

Cloudflare Workers are another flavor of serverless function. You can run them from within Spin apps.

## clamp / median / range

DevFeed: [clamp / median / range](<https://devfeed.tech/articles/clamp-median-range-36218.md>)

Original publisher: [Read original article](<https://dotat.at/@/2025-07-02-cmp.html>)

Published: 2025-07-02T01:33:08Z

Content type: article

Language: en

Sources: [Tony Finch's blog](<https://devfeed.tech/sources/tony-finch-s-blog.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Code](<https://devfeed.tech/topics/code.md>), [function](<https://devfeed.tech/topics/function.md>), [syntax](<https://devfeed.tech/topics/syntax.md>), [iteration](<https://devfeed.tech/topics/iteration.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [comparison](<https://devfeed.tech/tags/comparison.md>), [function](<https://devfeed.tech/tags/function.md>), [languages](<https://devfeed.tech/tags/languages.md>), [sequence](<https://devfeed.tech/tags/sequence.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

The article explores stylistic conventions for comparison operators, including chained comparisons, ordering values from least to greatest, and arranging clamp arguments to match that order. It then considers median-of-three implementations that are insensitive to argument order and proposes a speculative range syntax for pattern matching, iteration, and slicing.

### Source excerpt

Here are a few tangentially-related ideas vaguely near the theme of comparison operators. comparison style clamp style clamp is median clamp in range range style style clash? comparison style Some languages such as BCPL, Icon, Python have chained comparison operators, like if min <= x <= max: ... In languages without chained comparison, I like to write comparisons as if they were chained, like, if min <= x && x <= max { // ... } A rule of thumb is to prefer less than (or equal) operators and avoid greater than. In a sequence of comparisons, order values from (expected) least to greatest. clamp style The clamp() function ensures a value is between some min and max, def clamp(min, x, max): if x < min: return min if max < x: return max return x I like to order its arguments matching the expected order of the values, following my rule of thumb for comparisons - and the description of what clamp() does. (I used this flavour of clamp() in my article about GCRA.) But I seem to be unusual in this preference, based on a few examples I have seen recently. clamp is median Last month, Fabian Giesen pointed out a way to resolve this difference of opinion: A function that returns the median of three values is equivalent to a clamp() function that doesn't care about the order of its arguments. This version is written so that it returns NaN if any of its arguments is NaN. (When an argument is NaN, both of its comparisons will be false.) fn med3(a: f64, b: f64, c: f64) -> f64 { match (a <= b, b <= c, c <= a) { (false, false, false) => f64::NAN, (false, false, true) => b, // a > b > c (false, true, false) => a, // c > a > b (false, true, true) => c, // b <= c <= a (true, false, false) => c, // b > c > a (true, false, true) => a, // c <= a <= b (true, true, false) => b, // a <= b <= c (true, true, true) => b, // a == b == c } } When two of its arguments are constant, med3() should compile to the same code as a simple clamp(); but med3()'s misuse-resistance comes at a small cost when t

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