# static

Published articles for static.

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

## Secure Compute and Static IP builds start 64% faster

DevFeed: [Secure Compute and Static IP builds start 64% faster](<https://devfeed.tech/articles/secure-compute-and-static-ip-builds-start-64-faster-31500.md>)

Original publisher: [Read original article](<https://vercel.com/changelog/secure-compute-and-static-ip-builds-start-64-faster>)

Author: Karim Hasebou

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

Content type: release

Language: en

Sources: [Vercel News](<https://devfeed.tech/sources/vercel-news.md>)

Topics: [Deployment](<https://devfeed.tech/topics/deployment.md>), [Containers](<https://devfeed.tech/topics/containers.md>), [Network Configuration](<https://devfeed.tech/topics/network-configuration.md>)

Tags: [automatically](<https://devfeed.tech/tags/automatically.md>), [build](<https://devfeed.tech/tags/build.md>), [compute](<https://devfeed.tech/tags/compute.md>), [containers](<https://devfeed.tech/tags/containers.md>), [faster](<https://devfeed.tech/tags/faster.md>), [ip](<https://devfeed.tech/tags/ip.md>), [network-configuration](<https://devfeed.tech/tags/network-configuration.md>), [static](<https://devfeed.tech/tags/static.md>)

### AI overview

Vercel reports that builds using Secure Compute or Static IPs now start 64% faster on average, improving from 6.7 seconds to 2.4 seconds. The change uses prewarmed build containers with network configuration attached at build start and requires no configuration changes.

### Source excerpt

Builds using Secure Compute or Static IPs now start 64% faster, with the average time from deployment creation to build start dropping from 6.7 seconds to 2.4 seconds. Previously, each build waited for a new build container to boot with its network configuration. These builds now use prewarmed build containers, with your network configuration attached when the build starts. The improvement is applied automatically to builds using Secure Compute or Static IPs, with no configuration changes required. Learn more about Secure Compute and Static IPs. Read more

## This site now runs on Astro, not WordPress

DevFeed: [This site now runs on Astro, not WordPress](<https://devfeed.tech/articles/this-site-now-runs-on-astro-not-wordpress-36151.md>)

Original publisher: [Read original article](<https://as215248.net/notes/hello-astro/>)

Author: Bastiaan Brink

Published: 2026-07-19T00:00:00Z

Content type: article

Language: en

Sources: [AS215248 - Notes](<https://devfeed.tech/sources/as215248-notes.md>)

Topics: [Astro](<https://devfeed.tech/topics/astro.md>), [WordPress](<https://devfeed.tech/topics/wordpress.md>), [data](<https://devfeed.tech/topics/data.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [Git](<https://devfeed.tech/topics/git.md>)

Tags: [astro](<https://devfeed.tech/tags/astro.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [dns](<https://devfeed.tech/tags/dns.md>), [git](<https://devfeed.tech/tags/git.md>), [meta](<https://devfeed.tech/tags/meta.md>), [network](<https://devfeed.tech/tags/network.md>), [rpki](<https://devfeed.tech/tags/rpki.md>), [static](<https://devfeed.tech/tags/static.md>), [static-site](<https://devfeed.tech/tags/static-site.md>), [tooling](<https://devfeed.tech/tags/tooling.md>), [website](<https://devfeed.tech/tags/website.md>), [wordpress](<https://devfeed.tech/tags/wordpress.md>)

### AI overview

The author explains why as215248.net was rebuilt from WordPress as a static Astro site. The site now generates static HTML without a database, PHP, or admin panel, while scripts fetch live network data from services including Globalping, PeeringDB, RIPEstat, RDAP, the NTP Pool, and Tor Metrics. A Git-based process rebuilds and republishes the site daily behind a Cloudflare Tunnel.

### Source excerpt

Why I rebuilt as215248.net as a static site, and what it does now -- a live Looking Glass, auto-synced PeeringDB data, and a world map of presence.

## Irreducible loops

DevFeed: [Irreducible loops](<https://devfeed.tech/articles/irreducible-loops-31129.md>)

Original publisher: [Read original article](<https://maskray.me/blog/irreducible-loops>)

Published: 2026-07-12T07:00:00Z

Content type: tutorial

Language: en

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

Topics: [Graphs](<https://devfeed.tech/topics/graphs.md>), [Algorithms](<https://devfeed.tech/topics/algorithms.md>), [Code](<https://devfeed.tech/topics/code.md>), [LLVM](<https://devfeed.tech/topics/llvm.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [analysis](<https://devfeed.tech/tags/analysis.md>), [code](<https://devfeed.tech/tags/code.md>), [entries](<https://devfeed.tech/tags/entries.md>), [flow](<https://devfeed.tech/tags/flow.md>), [graph](<https://devfeed.tech/tags/graph.md>), [graphs](<https://devfeed.tech/tags/graphs.md>), [llvm](<https://devfeed.tech/tags/llvm.md>), [loops](<https://devfeed.tech/tags/loops.md>), [static](<https://devfeed.tech/tags/static.md>), [structure](<https://devfeed.tech/tags/structure.md>)

### AI overview

This technical post explains why dominator-based natural-loop detection fails for irreducible control-flow graphs, which can have multiple entries. It describes reducibility, the irreducible three-node pattern, and a DFS-based loop-nesting forest using Havlak's convention.

### Source excerpt

The dominator tree lets us identify natural loops: a back edge T->H whose head H dominates its tail T defines a loop with the single entry H. This works only for reducible control flow graphs. Optimized machine code and decompiler output routinely contain irreducible loops, which have more than one entry and thus no dominating header, so the dominator-based method cannot see them. This post builds a loop-nesting forest for an arbitrary CFG with the single-pass depth-first search of 韦韬、毛剑、邹维、陈宇(Tao Wei, Jian Mao, Wei Zou & Yu Chen) A New Algorithm for Identifying Loops in Decompilation, SAS 2007 (The 14th International Static Analysis Symposium).

## Hybrid Frameworks Can Serve Static and Server-Rendered Pages

DevFeed: [Hybrid Frameworks Can Serve Static and Server-Rendered Pages](<https://devfeed.tech/articles/static-as-a-server-36195.md>)

Original publisher: [Read original article](<https://overreacted.io/static-as-a-server/>)

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

Content type: opinion

Language: en

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

Topics: [Framework](<https://devfeed.tech/topics/framework.md>), [React](<https://devfeed.tech/topics/react.md>), [Astro](<https://devfeed.tech/topics/astro.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [Jekyll](<https://devfeed.tech/topics/jekyll.md>)

Tags: [cdn](<https://devfeed.tech/tags/cdn.md>), [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [flexibility](<https://devfeed.tech/tags/flexibility.md>), [fragmentation](<https://devfeed.tech/tags/fragmentation.md>), [hosting](<https://devfeed.tech/tags/hosting.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [jekyll](<https://devfeed.tech/tags/jekyll.md>), [static](<https://devfeed.tech/tags/static.md>)

### AI overview

The article argues that hybrid frameworks, which support both server and static output, can reduce tooling fragmentation and give developers more flexibility. It explains that static pages can be generated by running a server framework during the build process and storing the resulting responses.

### Source excerpt

You wouldn't download a site.

## Deploy a Nanoc Static Site to S3 with GitHub Actions

DevFeed: [Deploy a Nanoc Static Site to S3 with GitHub Actions](<https://devfeed.tech/articles/deploy-a-nanoc-static-site-to-s3-with-github-actions-33338.md>)

Original publisher: [Read original article](<https://blog.ratnesh-maurya.com/blog/Easily-Deploy-Your-Nanoc-Website-to-S3-with-GitHub-Actions>)

Author: ratneshmaurya2311@gmail.com (Ratnesh Maurya)

Published: 2024-11-23T00:00:00Z

Content type: tutorial

Language: en

Sources: [Ratn Labs](<https://devfeed.tech/sources/ratn-labs.md>)

Topics: [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [AWS IAM](<https://devfeed.tech/topics/aws-iam.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>)

Tags: [aws](<https://devfeed.tech/tags/aws.md>), [aws-s3](<https://devfeed.tech/tags/aws-s3.md>), [cloud-devops](<https://devfeed.tech/tags/cloud-devops.md>), [complete](<https://devfeed.tech/tags/complete.md>), [deploy](<https://devfeed.tech/tags/deploy.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [guide](<https://devfeed.tech/tags/guide.md>), [iam](<https://devfeed.tech/tags/iam.md>), [policy](<https://devfeed.tech/tags/policy.md>), [s3](<https://devfeed.tech/tags/s3.md>), [setup](<https://devfeed.tech/tags/setup.md>), [static](<https://devfeed.tech/tags/static.md>), [static-site](<https://devfeed.tech/tags/static-site.md>), [using](<https://devfeed.tech/tags/using.md>), [website](<https://devfeed.tech/tags/website.md>), [workflow](<https://devfeed.tech/tags/workflow.md>), [yaml](<https://devfeed.tech/tags/yaml.md>)

### AI overview

A step-by-step tutorial explains how to automate deployment of a Nanoc static website to AWS S3 with GitHub Actions. It covers the S3 bucket policy, IAM setup, and the complete workflow YAML.

### Source excerpt

A step-by-step guide to automating Nanoc website deployment to AWS S3 using GitHub Actions, including S3 bucket policy, IAM setup, and the complete workflow YAML.

## The problem of union types for type systems

DevFeed: [The problem of union types for type systems](<https://devfeed.tech/articles/the-problem-of-union-types-for-type-systems-39390.md>)

Original publisher: [Read original article](<https://kt.academy/article/union-types-into>)

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

Content type: opinion

Language: en

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

Topics: [union types](<https://devfeed.tech/topics/union-types.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [subtype](<https://devfeed.tech/topics/subtype.md>), [generics](<https://devfeed.tech/topics/generics.md>)

Tags: [generics](<https://devfeed.tech/tags/generics.md>), [inference](<https://devfeed.tech/tags/inference.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [smart-cast](<https://devfeed.tech/tags/smart-cast.md>), [static](<https://devfeed.tech/tags/static.md>), [subtype](<https://devfeed.tech/tags/subtype.md>), [type](<https://devfeed.tech/tags/type.md>), [types](<https://devfeed.tech/tags/types.md>), [union](<https://devfeed.tech/tags/union.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This article explains why general union types are difficult to add to Kotlin and other statically typed systems. It discusses ambiguity in subtype relationships and generic type inference, including the claim that inference is NP-hard, then describes Kotlin's proposed limited use of union types for representing errors through rich errors.

### Source excerpt

Why union types are not such a good idea for static type systems.

## Extensions in Kotlin

DevFeed: [Extensions in Kotlin](<https://devfeed.tech/articles/extensions-in-kotlin-39331.md>)

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

Published: 2023-10-09T00:01:00Z

Content type: tutorial

Language: en

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

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Extension](<https://devfeed.tech/topics/extension.md>), [class](<https://devfeed.tech/topics/class.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [bytecode](<https://devfeed.tech/tags/bytecode.md>), [extension](<https://devfeed.tech/tags/extension.md>), [extension-function](<https://devfeed.tech/tags/extension-function.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [static](<https://devfeed.tech/tags/static.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains Kotlin extension functions and properties, including how they are defined, called on receiver instances, and used with types from external APIs. It also examines their JVM implementation, where an extension receiver becomes a regular parameter in a static function.

### Source excerpt

What are extensions in Kotlin and how do we use them.

## Integrating Spin with Static Site Generators

DevFeed: [Integrating Spin with Static Site Generators](<https://devfeed.tech/articles/integrating-spin-with-static-site-generators-15147.md>)

Original publisher: [Read original article](<https://www.fermyon.com/blog/2023-06-07-integrating-with-ssgs>)

Author: David Flanagan

Published: 2023-06-07T10: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: [Front end](<https://devfeed.tech/topics/frontend.md>), [WebAssembly](<https://devfeed.tech/topics/web-assembly.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [generators](<https://devfeed.tech/topics/generators.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [generators](<https://devfeed.tech/tags/generators.md>), [static](<https://devfeed.tech/tags/static.md>), [static-site](<https://devfeed.tech/tags/static-site.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>)

### AI overview

The article discusses integrating Spin with static site generators to provide a frontend for a WebAssembly backend.

### Source excerpt

Providing a Frontend for Your WebAssembly Backend

## How to setup comments on your static blog

DevFeed: [How to setup comments on your static blog](<https://devfeed.tech/articles/how-to-setup-comments-on-your-static-blog-37169.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/how-to-setup-comments-on-your-static-blog/>)

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

Content type: tutorial

Language: en

Sources: [Arkadiusz Chmura](<https://devfeed.tech/sources/arkadiusz-chmura.md>)

Topics: [GitHub Issues](<https://devfeed.tech/topics/github-issues.md>), [Website](<https://devfeed.tech/topics/website.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [User Experience](<https://devfeed.tech/topics/user-experience.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [database](<https://devfeed.tech/tags/database.md>), [github](<https://devfeed.tech/tags/github.md>), [github-issues](<https://devfeed.tech/tags/github-issues.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [setup](<https://devfeed.tech/tags/setup.md>), [static](<https://devfeed.tech/tags/static.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>), [website](<https://devfeed.tech/tags/website.md>)

### AI overview

This tutorial explains how to add utterances comments to a static blog using GitHub Issues as comment storage. It covers repository setup, widget configuration, script integration, and handling the widget theme for dark mode.

### Source excerpt

With a tool called utterances, it's very easy to add comments to your website with minimal code and no need for a database.

## Serving Static Content via WebAssembly

DevFeed: [Serving Static Content via WebAssembly](<https://devfeed.tech/articles/serving-static-content-via-webassembly-15345.md>)

Original publisher: [Read original article](<https://www.fermyon.com/blog/serving-static-content-via-webassembly>)

Author: Mikkel Mørk Hegnhøj

Published: 2023-01-25T10:00:00Z

Content type: tutorial

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: [WebAssembly](<https://devfeed.tech/topics/web-assembly.md>), [servers](<https://devfeed.tech/topics/servers.md>)

Tags: [learn](<https://devfeed.tech/tags/learn.md>), [server](<https://devfeed.tech/tags/server.md>), [static](<https://devfeed.tech/tags/static.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>)

### AI overview

A tutorial on using the Spin Fileserver to serve static content for server-side WebAssembly applications.

### Source excerpt

Learn how the Spin Fileserver helps serve static content for your server-side WebAssembly applications.

## Building static Rust binaries for Linux

DevFeed: [Building static Rust binaries for Linux](<https://devfeed.tech/articles/building-static-rust-binaries-for-linux-38530.md>)

Original publisher: [Read original article](<https://msfjarvis.dev/posts/building-static-rust-binaries-for-linux/>)

Author: Harsh Shandilya

Published: 2021-10-17T06:30:00Z

Content type: tutorial

Language: en

Sources: [Posts on Harsh Shandilya](<https://devfeed.tech/sources/posts-on-harsh-shandilya.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [Linux](<https://devfeed.tech/topics/linux.md>)

Tags: [binaries](<https://devfeed.tech/tags/binaries.md>), [building](<https://devfeed.tech/tags/building.md>), [curl](<https://devfeed.tech/tags/curl.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [linux](<https://devfeed.tech/tags/linux.md>), [openssl](<https://devfeed.tech/tags/openssl.md>), [rust](<https://devfeed.tech/tags/rust.md>), [rust-build-static-binary](<https://devfeed.tech/tags/rust-build-static-binary.md>), [rust-static-binary](<https://devfeed.tech/tags/rust-static-binary.md>), [rust-static-linking](<https://devfeed.tech/tags/rust-static-linking.md>), [static](<https://devfeed.tech/tags/static.md>), [wasm](<https://devfeed.tech/tags/wasm.md>)

### AI overview

A tutorial on building statically linked Rust binaries for Linux. It explains static linking with MUSL and glibc, describes a Cargo-related issue, and shows how to identify and remove dependencies that require dynamic linking.

### Source excerpt

Some tips on building static binaries of Rust projects targeting Linux

## August 2018 meeting minutes

DevFeed: [August 2018 meeting minutes](<https://devfeed.tech/articles/august-2018-meeting-minutes-33091.md>)

Original publisher: [Read original article](<https://reactos.org/project-news/august-2018-meeting-minutes/>)

Published: 2018-09-23T00:00:00Z

Content type: article

Language: en

Sources: [Front Page on ReactOS Website](<https://devfeed.tech/sources/front-page-on-reactos-website.md>)

Topics: [ReactOS](<https://devfeed.tech/topics/reactos.md>), [static-site-generator](<https://devfeed.tech/topics/static-site-generator.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [bug](<https://devfeed.tech/topics/bug.md>)

Tags: [bug](<https://devfeed.tech/tags/bug.md>), [free](<https://devfeed.tech/tags/free.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [os](<https://devfeed.tech/tags/os.md>), [react](<https://devfeed.tech/tags/react.md>), [reactos](<https://devfeed.tech/tags/reactos.md>), [static](<https://devfeed.tech/tags/static.md>), [win32](<https://devfeed.tech/tags/win32.md>), [winapi](<https://devfeed.tech/tags/winapi.md>)

### AI overview

ReactOS's August 2018 meeting covered project status reports, the planned move of its website to Hugo, a VirtualBox buildslave bug fix, and lessons from the Google Summer of Code program and Hackfest.

### Source excerpt

2018-08-30 19:00 UTC #meeting Proceedings Meeting started at 19:05 by Colin Finck. Point 1: Status Reports Point 2: Slack / Mattermost Point 1: Status Reports Andreas Bjerkeholt did some translation work. He also got started coding for zipfldr with help from Mark, and fixed button states. He plans to continue work on zipfldr in the future. Colin Finck tackled one of the ideas from the Hackfest idea list together with Mark Jansen, namely the move of the website to a static site generator.

## Static Page Caching with Craft CMS

DevFeed: [Static Page Caching with Craft CMS](<https://devfeed.tech/articles/static-page-caching-with-craft-cms-31302.md>)

Original publisher: [Read original article](<https://nystudio107.com/blog/static-caching-with-craft-cms>)

Author: andrew@nystudio107.com (Andrew Welch)

Published: 2017-06-16T04:35: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>), [nginx](<https://devfeed.tech/topics/nginx.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [best](<https://devfeed.tech/tags/best.md>), [cache](<https://devfeed.tech/tags/cache.md>), [caching](<https://devfeed.tech/tags/caching.md>), [cms](<https://devfeed.tech/tags/cms.md>), [content](<https://devfeed.tech/tags/content.md>), [db-based](<https://devfeed.tech/tags/db-based.md>), [editor](<https://devfeed.tech/tags/editor.md>), [friendly](<https://devfeed.tech/tags/friendly.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [generator](<https://devfeed.tech/tags/generator.md>), [html](<https://devfeed.tech/tags/html.md>), [insights](<https://devfeed.tech/tags/insights.md>), [nginx](<https://devfeed.tech/tags/nginx.md>), [performance](<https://devfeed.tech/tags/performance.md>), [static](<https://devfeed.tech/tags/static.md>), [static-site](<https://devfeed.tech/tags/static-site.md>), [worlds](<https://devfeed.tech/tags/worlds.md>)

### AI overview

This tutorial explains how to use Nginx FastCGI Cache to add full-page static caching in front of Craft CMS. It contrasts fragment caching with storing complete rendered pages as flat files and discusses performance, concurrency, HTTPS, configuration, and flexibility tradeoffs compared with Varnish and static site generators.

### Source excerpt

Get the best of both worlds with static HTML generator performance on the frontend, and a content editor friendly db-based backend

## Simple Static Asset Versioning in Craft CMS

DevFeed: [Simple Static Asset Versioning in Craft CMS](<https://devfeed.tech/articles/simple-static-asset-versioning-in-craft-cms-31298.md>)

Original publisher: [Read original article](<https://nystudio107.com/blog/simple-static-asset-versioning>)

Author: andrew@nystudio107.com (Andrew Welch)

Published: 2017-05-05T20:58: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>), [Caching](<https://devfeed.tech/topics/caching.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Website](<https://devfeed.tech/topics/website.md>)

Tags: [allows](<https://devfeed.tech/tags/allows.md>), [asset](<https://devfeed.tech/tags/asset.md>), [caching](<https://devfeed.tech/tags/caching.md>), [cms](<https://devfeed.tech/tags/cms.md>), [css](<https://devfeed.tech/tags/css.md>), [delivered](<https://devfeed.tech/tags/delivered.md>), [ensuring](<https://devfeed.tech/tags/ensuring.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [insights](<https://devfeed.tech/tags/insights.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [latest](<https://devfeed.tech/tags/latest.md>), [performance](<https://devfeed.tech/tags/performance.md>), [performant](<https://devfeed.tech/tags/performant.md>), [static](<https://devfeed.tech/tags/static.md>), [versioning](<https://devfeed.tech/tags/versioning.md>), [website](<https://devfeed.tech/tags/website.md>)

### AI overview

This tutorial explains static asset versioning in Craft CMS. It describes browser caching for CSS, JavaScript, and image assets, compares query-string and filename-based cache busting, and presents a simple approach to delivering updated assets while keeping the build system manageable.

### Source excerpt

Static asset versioning allows you to have a performant website, while also ensuring the latest CSS and JavaScript are delivered

## Breaking Kryptonite's obfuscation: a static analysis approach relying on symbolic execution

DevFeed: [Breaking Kryptonite's obfuscation: a static analysis approach relying on symbolic execution](<https://devfeed.tech/articles/breaking-kryptonite-s-obfuscation-a-static-analysis-approach-relying-on-symbolic-execution-39691.md>)

Original publisher: [Read original article](<https://doar-e.github.io/blog/2013/09/16/breaking-kryptonites-obfuscation-with-symbolic-execution/>)

Author: Axel "0vercl0k" Souchet

Published: 2013-09-16T18:47:00Z

Content type: tutorial

Language: en

Sources: [Diary of a reverse-engineer](<https://devfeed.tech/sources/diary-of-a-reverse-engineer.md>)

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

Tags: [analysis](<https://devfeed.tech/tags/analysis.md>), [asm](<https://devfeed.tech/tags/asm.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [clang](<https://devfeed.tech/tags/clang.md>), [code](<https://devfeed.tech/tags/code.md>), [llvm](<https://devfeed.tech/tags/llvm.md>), [obfuscation](<https://devfeed.tech/tags/obfuscation.md>), [reverse-engineering](<https://devfeed.tech/tags/reverse-engineering.md>), [static](<https://devfeed.tech/tags/static.md>), [symbolic-execution](<https://devfeed.tech/tags/symbolic-execution.md>), [x86](<https://devfeed.tech/tags/x86.md>)

### AI overview

This tutorial demonstrates how symbolic execution can break Kryptonite, a proof-of-concept obfuscator that applies semantics-preserving transformations at the LLVM intermediate representation level. It describes a small symbolic execution engine built with IDAPy and Z3Py, using an x86 binary generated from LLVM code for a 32-bit adder.

### Source excerpt

Introduction Kryptonite was a proof-of-concept I built to obfuscate codes at the LLVM intermediate representation level. The idea was to use semantic-preserving transformations in order to not break the original program. One of the main idea was for example to build a home-made 32 bits adder to replace the add ...

## Emacs Muse meets Common Lisp

DevFeed: [Emacs Muse meets Common Lisp](<https://devfeed.tech/articles/emacs-muse-meets-common-lisp-34507.md>)

Original publisher: [Read original article](<https://tapoueh.org/blog/2013/07/emacs-muse-meets-common-lisp/>)

Author: Dimitri Fontaine PostgreSQL Major Contributor; Author

Published: 2013-07-08T11:34:00Z

Content type: article

Language: en

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

Topics: [Emacs](<https://devfeed.tech/topics/emacs.md>), [Common Lisp](<https://devfeed.tech/topics/common-lisp.md>), [Publishing](<https://devfeed.tech/topics/publishing.md>), [HTML](<https://devfeed.tech/topics/html.md>), [Lisp](<https://devfeed.tech/topics/lisp.md>), [Website](<https://devfeed.tech/topics/website.md>)

Tags: [emacs](<https://devfeed.tech/tags/emacs.md>), [git](<https://devfeed.tech/tags/git.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [html](<https://devfeed.tech/tags/html.md>), [lisp](<https://devfeed.tech/tags/lisp.md>), [muse](<https://devfeed.tech/tags/muse.md>), [static](<https://devfeed.tech/tags/static.md>), [test](<https://devfeed.tech/tags/test.md>)

### AI overview

The article describes using Emacs Muse to write and publish a blog, including support for inline images and static website generation. It then explains replacing the Emacs Lisp-based setup with a Common Lisp project that parses Muse files, generates HTML, and dynamically adds site sections through server-side includes.

### Source excerpt

This blog of mine is written in the very good Emacs Muse format, that I find much more friendly to writing articles than both org-mode and markdown-mode that I both use in a regular basis too. The main think that I like in Muse that those two others lack is the support for displaying images inline. *Here's what it looks like to edit with Emacs Muse* The Muse publishing system The idea is that you edit .muse files in Emacs then use a command to publish your file to some format like HTML. You can also publish a whole project, and then enjoy a fully static website that you can deploy on some URL.

## Sphinx Build Pack on Heroku

DevFeed: [Sphinx Build Pack on Heroku](<https://devfeed.tech/articles/sphinx-build-pack-on-heroku-41109.md>)

Original publisher: [Read original article](<https://www.craigkerstiens.com/2012/01/25/Sphinx-Build-Pack-on-Heroku/>)

Author: Map

Published: 2012-01-25T20:55:56Z

Content type: tutorial

Language: en

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

Topics: [Heroku](<https://devfeed.tech/topics/heroku.md>), [Buildpacks](<https://devfeed.tech/topics/buildpacks.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>), [Markdown](<https://devfeed.tech/topics/markdown.md>), [Git](<https://devfeed.tech/topics/git.md>)

Tags: [buildpacks](<https://devfeed.tech/tags/buildpacks.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [git](<https://devfeed.tech/tags/git.md>), [heroku](<https://devfeed.tech/tags/heroku.md>), [markdown](<https://devfeed.tech/tags/markdown.md>), [python](<https://devfeed.tech/tags/python.md>), [static](<https://devfeed.tech/tags/static.md>)

### AI overview

This article describes a Sphinx buildpack for Heroku that automatically builds and runs Sphinx documentation projects. It supports public and private documentation modes, with private access configured through a Google Apps domain config variable.

### Source excerpt

Heroku's latest Cedar stack supports running anything. Heroku's officially supported languages actually have their buildpacks public via Heroku's github, you can view several of them at: Python Build Pack Ruby Build Pack Scala Build Pack There have even been some created as fun weekend hacks such as the NES Rom Buildpack. Recently at Heroku my teams have started exploring new forms of collaborating and documenting. In particular editing a wiki for communication is contrary to our regular workflow. Much of our day is spent in code and git. To edit a wiki within a web browser and using some markup we're less familiar with is an overhead we were aiming to reduce. As a result we've tried a few things, the first was simply using a github repo to edit markdown. Personally I have always been a fan of Sphinx documentation. However, Sphinx has no means to secure a site out of the box. Generating the static site then running it being a Rack app to secure it seemed like a few extra steps that would hinder workflow. As a result I set out to build the Sphinx buildpack which would let you push a Sphinx project to Heroku and automatically run your documentation. The buildpack itself supports two modes, public documentation and a private documentation. To have your documentation secured in private mode you simple need to add your google apps domain as a config var heroku config:add DOMAIN=mydomain.com. If you need more information about setting up OpenID check out my recent post Securing your organization with OpenID $ sphinx-quickstart $ git init . $ git add . $ git commit -m initial $ heroku create -s cedar -b http://github.com/craigkerstiens/heroku-buildpack-sphinx.git $ git push heroku master $ heroku open

## Static variables and methods in Python

DevFeed: [Static variables and methods in Python](<https://devfeed.tech/articles/static-variables-and-methods-in-python-40743.md>)

Original publisher: [Read original article](<https://radek.io/posts/static-variables-and-methods-in-python/>)

Published: 2011-07-21T00:00:00Z

Content type: tutorial

Language: en

Sources: [Radek Pazdera](<https://devfeed.tech/sources/radek-pazdera.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [class](<https://devfeed.tech/topics/class.md>), [Inheritance](<https://devfeed.tech/topics/inheritance.md>)

Tags: [class](<https://devfeed.tech/tags/class.md>), [code](<https://devfeed.tech/tags/code.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [python](<https://devfeed.tech/tags/python.md>), [static](<https://devfeed.tech/tags/static.md>), [variables](<https://devfeed.tech/tags/variables.md>)

### AI overview

A tutorial explaining how Python class variables, static methods, and class methods work. It compares the @staticmethod and @classmethod decorators, including their access to class variables and behavior with inheritance.

### Source excerpt

Bringing a bit of C++ into Python.

## NUnit Extension Methods

DevFeed: [NUnit Extension Methods](<https://devfeed.tech/articles/nunit-extension-methods-33359.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2011/02/26/nunit-extension-methods>)

Published: 2011-02-26T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [NUnit](<https://devfeed.tech/topics/nunit.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [Code](<https://devfeed.tech/topics/code.md>), [Framework](<https://devfeed.tech/topics/framework.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [framework](<https://devfeed.tech/tags/framework.md>), [nunit](<https://devfeed.tech/tags/nunit.md>), [object](<https://devfeed.tech/tags/object.md>), [static](<https://devfeed.tech/tags/static.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

This article presents NUnit extension methods that wrap common assertions such as Assert.AreEqual, Assert.IsNull, and Assert.IsNotNull. The methods provide a more readable style, including calls such as actual.ShouldBe(expected) and actual.ShouldBeNull().

### Source excerpt

I've always used NUnit for testing code so it's naturally the framework I'm most familiar with (I haven't used anything else). I learned unit testing using the classic Assert.AreEqual(expected, actual) methods. Although, I was finding my tests slightly confusing to read - I sometimes can't remember which comes first, expected or actual.More recently I've been getting into v2.5 including the new asserts - Assert.That(actual, Is.EqualTo(expected)). I think this makes a lot of sense and I often find myself using Assert.That most of the time just because it makes sense.Recently, a coworker created a few extension methods that I'm finding quite handy:public static void ShouldBe(this object @this, object expected) { Assert.AreEqual((dynamic)expected, (dynamic)@this);}public static void ShouldNotBe(this object @this, object expected) { Assert.AreNotEqual((dynamic)expected, (dynamic)@this);}public static void ShouldBeNull(this object @this) { Assert.IsNull(@this);}public static void ShouldNotBeNull(this object @this) { Assert.IsNotNull(@this);}I've completely fallen in love with how this reads: actual.ShouldBe(expected). It also makes me giggle to do actual.ShouldBeNull() (Don't you love extension methods?). This makes unit testing so easy...