# gotchas

Published articles for gotchas.

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

## Quiz: Python's Mutable vs Immutable Types: What's the Difference?

DevFeed: [Quiz: Python's Mutable vs Immutable Types: What's the Difference?](<https://devfeed.tech/articles/quiz-python-s-mutable-vs-immutable-types-what-s-the-difference-30892.md>)

Original publisher: [Read original article](<https://realpython.com/quizzes/python-mutable-vs-immutable-types/>)

Author: Real Python

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

Content type: tutorial

Language: en

Sources: [Real Python](<https://devfeed.tech/sources/real-python.md>)

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

Tags: [gotchas](<https://devfeed.tech/tags/gotchas.md>), [python](<https://devfeed.tech/tags/python.md>), [test](<https://devfeed.tech/tags/test.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

An interactive 12-question quiz tests understanding of Python's mutable and immutable types, including built-in type categories and common mutability issues such as variable aliasing, mutable default arguments, and shallow copies.

### Source excerpt

Find out how Python's mutable and immutable types behave, and see how mutability shapes lists, tuples, dictionaries, and your own classes.

## Designing Software for Real-World Geographic and Legal Complexity

DevFeed: [Designing Software for Real-World Geographic and Legal Complexity](<https://devfeed.tech/articles/world-geography-gotchas-18934.md>)

Original publisher: [Read original article](<https://blog.frankel.ch/world-geography-gotchas/>)

Author: Nicolas Fränkel

Published: 2026-09-13T00:00:00Z

Content type: opinion

Language: en

Sources: [Nicolas Fränkel](<https://devfeed.tech/sources/nicolas-frankel.md>)

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

Tags: [geography](<https://devfeed.tech/tags/geography.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [miscellaneous](<https://devfeed.tech/tags/miscellaneous.md>), [software](<https://devfeed.tech/tags/software.md>), [switzerland](<https://devfeed.tech/tags/switzerland.md>), [systems](<https://devfeed.tech/tags/systems.md>)

### AI overview

This commentary uses enclaves such as Campione d'Italia and Büsingen am Hochrhein to show why software systems must model real-world attributes independently. Country codes do not necessarily determine currency, tax, customs, mail, phone, or law, so developers should research domain-specific exceptions before designing systems.

### Source excerpt

Years ago, a colleague of mine told me about two pockets of foreign land surrounded by Switzerland: Campione d'Italia and Büsingen am Hochrhein, respectively Italy and Germany. Both are enclaves of their respective country in Swiss territory: An enclave is a part of the territory of a state that is enclosed within the territory of another state. To distinguish the parts of a state entirely enclosed in a single other state, they are called true enclaves.

## Laravel Queue Gotchas Collected from Experience

DevFeed: [Laravel Queue Gotchas Collected from Experience](<https://devfeed.tech/articles/a-series-of-unfortunate-jobs-33302.md>)

Original publisher: [Read original article](<https://freek.dev/3189-a-series-of-unfortunate-jobs>)

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

Published: 2026-09-10T12:06:27Z

Content type: tutorial

Language: en

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

Topics: [Laravel](<https://devfeed.tech/topics/laravel.md>), [gotchas](<https://devfeed.tech/topics/gotchas.md>)

Tags: [best-practices](<https://devfeed.tech/tags/best-practices.md>), [gotcha](<https://devfeed.tech/tags/gotcha.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [laravel](<https://devfeed.tech/tags/laravel.md>), [practical](<https://devfeed.tech/tags/practical.md>), [queues](<https://devfeed.tech/tags/queues.md>)

### AI overview

An article about gotchas in Laravel queues that the author says they collected through experience.

### Source excerpt

Laravel queues are great out of the box, until they bite. Over the years I've collected a few gotchas the hard way. Let me save you the headache. Read more

## Linux swap Commands: Create and Manage Swap Files/Partitions

DevFeed: [Linux swap Commands: Create and Manage Swap Files/Partitions](<https://devfeed.tech/articles/linux-swap-commands-create-and-manage-swap-files-partitions-20882.md>)

Original publisher: [Read original article](<https://linuxblog.io/swap-command-create-manage-swap-files-partitions/>)

Author: Hayden James

Published: 2026-08-26T15:13:53Z

Content type: tutorial

Language: en

Sources: [Hayden James](<https://devfeed.tech/sources/hayden-james.md>)

Topics: [Linux](<https://devfeed.tech/topics/linux.md>), [btrfs](<https://devfeed.tech/topics/btrfs.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [rhel](<https://devfeed.tech/topics/rhel.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [btrfs](<https://devfeed.tech/tags/btrfs.md>), [commands](<https://devfeed.tech/tags/commands.md>), [desktop](<https://devfeed.tech/tags/desktop.md>), [files](<https://devfeed.tech/tags/files.md>), [fstab](<https://devfeed.tech/tags/fstab.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [guide](<https://devfeed.tech/tags/guide.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [linux](<https://devfeed.tech/tags/linux.md>), [partition](<https://devfeed.tech/tags/partition.md>), [performance](<https://devfeed.tech/tags/performance.md>), [server](<https://devfeed.tech/tags/server.md>), [sysadmins](<https://devfeed.tech/tags/sysadmins.md>)

### AI overview

A practical guide to creating, activating, deactivating, and troubleshooting Linux swap files and partitions using mkswap, swapon, and swapoff. It also explains filesystem-specific considerations, including Btrfs and older XFS kernels.

### Source excerpt

A practical guide to creating, managing, and tuning swap files and swap partitions on Linux using mkswap, swapon, and swapoff, with real commands and common troubleshooting fixes. Continue reading...

## How To Use Standard HTML Video & Audio Lazy-Loading on the Web Today

DevFeed: [How To Use Standard HTML Video & Audio Lazy-Loading on the Web Today](<https://devfeed.tech/articles/how-to-use-standard-html-video-audio-lazy-loading-on-the-web-today-30780.md>)

Original publisher: [Read original article](<https://engineering.squarespace.com/blog/2026/how-to-use-standard-html-video-and-audio-lazy-loading-on-the-web-today>)

Author: Scott Jehl

Published: 2026-04-07T14:30:00Z

Content type: tutorial

Language: en

Sources: [Squarespace](<https://devfeed.tech/sources/squarespace.md>), [Squarespace Engineering Blog](<https://devfeed.tech/sources/squarespace-engineering-blog.md>)

Topics: [HTML](<https://devfeed.tech/topics/html.md>), [lazy loading](<https://devfeed.tech/topics/lazy-loading.md>), [web-standards](<https://devfeed.tech/topics/web-standards.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [audio](<https://devfeed.tech/tags/audio.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [html](<https://devfeed.tech/tags/html.md>), [lazy-loading](<https://devfeed.tech/tags/lazy-loading.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

This tutorial explains how to use standard HTML video and audio lazy loading on websites. It covers recommended practices and common implementation pitfalls, noting that the feature is gaining support in major browsers.

### Source excerpt

HTML video and audio lazy loading is now a web standard and quickly gaining support in all major browsers. Given Squarespace's role in proposing and implementing it, we're very excited to see how developers use it on the web. Let's cover some best practices for using video and audio lazy loading in any website, as well as some gotchas to avoid.

## EVPN IP-VRFs on Cisco IOS/XE: Configuration Notes

DevFeed: [EVPN IP-VRFs on Cisco IOS/XE: Configuration Notes](<https://devfeed.tech/articles/evpn-ip-vrfs-on-cisco-ios-xe-configuration-notes-11322.md>)

Original publisher: [Read original article](<https://blog.ipspace.net/2026/02/evpn-cisco-l3vpn/>)

Published: 2026-02-18T06:31:00Z

Content type: tutorial

Language: en

Sources: [ipSpace.net blog](<https://devfeed.tech/sources/ipspace-net-blog.md>)

Topics: [evpn](<https://devfeed.tech/topics/evpn.md>), [Cisco](<https://devfeed.tech/topics/cisco.md>), [VXLAN](<https://devfeed.tech/topics/vxlan.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [BGP](<https://devfeed.tech/topics/bgp.md>), [MPLS VPN](<https://devfeed.tech/topics/mpls-vpn.md>)

Tags: [bgp](<https://devfeed.tech/tags/bgp.md>), [cisco](<https://devfeed.tech/tags/cisco.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [evpn](<https://devfeed.tech/tags/evpn.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [ios](<https://devfeed.tech/tags/ios.md>), [vxlan](<https://devfeed.tech/tags/vxlan.md>)

### AI overview

The article shares configuration notes from getting EVPN IP-VRFs with transit VXLAN segments working on Cisco IOS/XE. It explains VLAN or bridge-domain requirements, VRF and interface setup, EVPN route-target placement, BGP activation, and related testing considerations.

### Source excerpt

Last week, I described some of the gotchas I encountered while trying to make EVPN MAC-VRFs work on Cisco IOS/XE. In the meantime, I got IP-VRFs with transit VXLAN segments working. Here are the CliffsNotes: Starting with the disgusting configuration mechanism: Read more ...

## Open Source Supply Chain Security Gotchas to Avoid in 2025

DevFeed: [Open Source Supply Chain Security Gotchas to Avoid in 2025](<https://devfeed.tech/articles/the-engineer-s-never-gift-guide-avoiding-the-nightmare-before-christmas-13251.md>)

Original publisher: [Read original article](<https://www.chainguard.dev/unchained/the-engineers-never-gift-guide>)

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

Content type: opinion

Language: en

Sources: [Chainguard: Unchained](<https://devfeed.tech/sources/chainguard-unchained.md>)

Topics: [supply-chain-security](<https://devfeed.tech/topics/supply-chain-security.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Security](<https://devfeed.tech/topics/security.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [chainguard-christmas](<https://devfeed.tech/tags/chainguard-christmas.md>), [chainguard-containers](<https://devfeed.tech/tags/chainguard-containers.md>), [chainguard-libraries](<https://devfeed.tech/tags/chainguard-libraries.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [open-source-artifacts](<https://devfeed.tech/tags/open-source-artifacts.md>), [open-source-components](<https://devfeed.tech/tags/open-source-components.md>), [opinion](<https://devfeed.tech/tags/opinion.md>), [security](<https://devfeed.tech/tags/security.md>), [supply-chain](<https://devfeed.tech/tags/supply-chain.md>), [supply-chain-security](<https://devfeed.tech/tags/supply-chain-security.md>)

### AI overview

This commentary uses holiday gift metaphors to identify open source supply chain security pitfalls. It warns that repackaged binaries and image catalogs with questionable provenance can introduce maintenance burdens, technical debt, vulnerabilities, and malicious-code risks, and presents building directly from source as a critical control.

### Source excerpt

Skip the "security gift traps." This holiday guide flags common open source supply chain gotchas and shows what to choose instead for speed and trust.

## The Dangers of Testing in SQLite as a Postgres User

DevFeed: [The Dangers of Testing in SQLite as a Postgres User](<https://devfeed.tech/articles/the-dangers-of-testing-in-sqlite-as-a-postgres-user-5815.md>)

Original publisher: [Read original article](<https://neon.com/blog/testing-sqlite-postgres>)

Author: Brian Holt

Published: 2025-02-17T18:46:05Z

Content type: article

Language: en

Sources: [Blog -- Neon Docs](<https://devfeed.tech/sources/blog-neon-docs.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [floating-point](<https://devfeed.tech/tags/floating-point.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [latency](<https://devfeed.tech/tags/latency.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [sql](<https://devfeed.tech/tags/sql.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

The article explains why SQLite is convenient for isolated tests and warns that SQLite-based tests can create false confidence for PostgreSQL users. It highlights differences in SQL dialects, client-server behavior, performance, and type enforcement, including SQLite accepting a floating-point value in an INTEGER column where PostgreSQL raises an error.

### Source excerpt

SQLite is genuinely an incredible piece of technology. Instead of having a list of which companies used the database, the SQLite site simply tells you its on every Android phone, every iPhone, in every browser, in every Mac, in every Windows machine. "Billions and billions of cop...

## How to add a directory to your PATH

DevFeed: [How to add a directory to your PATH](<https://devfeed.tech/articles/how-to-add-a-directory-to-your-path-21118.md>)

Original publisher: [Read original article](<https://jvns.ca/blog/2025/02/13/how-to-add-a-directory-to-your-path/>)

Author: Julia Evans

Published: 2025-02-13T12:27:56Z

Content type: tutorial

Language: en

Sources: [Julia Evans](<https://devfeed.tech/sources/julia-evans.md>)

Topics: [Shell](<https://devfeed.tech/topics/shell.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Scripting, bash](<https://devfeed.tech/topics/scripting-bash.md>), [Zsh](<https://devfeed.tech/topics/zsh.md>), [friendly interactive shell](<https://devfeed.tech/topics/fish.md>), [Linux](<https://devfeed.tech/topics/linux.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [config](<https://devfeed.tech/tags/config.md>), [files](<https://devfeed.tech/tags/files.md>), [flow](<https://devfeed.tech/tags/flow.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [history](<https://devfeed.tech/tags/history.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [linux](<https://devfeed.tech/tags/linux.md>), [mac](<https://devfeed.tech/tags/mac.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [terminal](<https://devfeed.tech/tags/terminal.md>)

### AI overview

A practical guide to adding a directory to PATH. It explains how to identify whether the shell is bash, zsh, or fish, find the relevant shell configuration file, determine which directory should be added, update the configuration, restart the shell, and troubleshoot common PATH-related problems.

### Source excerpt

I was talking to a friend about how to add a directory to your PATH today. It's something that feels "obvious" to me since I've been using the terminal for a long time, but when I searched for instructions for how to do it, I actually couldn't find something that explained all of the steps - a lot of them just said "add this to ~/.bashrc", but what if you're not using bash? What if your bash config is actually in a different file? And how are you supposed to figure out which directory to add anyway? So I wanted to try to write down some more complete directions and mention some of the gotchas I've run into over the years. Here's a table of contents: step 1: what shell are you using? step 2: find your shell's config file a note on bash's config file step 3: figure out which directory to add step 3.1: double check it's the right directory step 4: edit your shell config step 5: restart your shell problems: problem 1: it ran the wrong program problem 2: the program isn't being run from your shell problem 3: duplicate PATH entries making it harder to debug problem 4: losing your history after updating your PATH notes: a note on source a note on fish_add_path step 1: what shell are you using? If you're not sure what shell you're using, here's a way to find out. Run this: ps -p $$ -o pid,comm= if you're using bash, it'll print out 97295 bash if you're using zsh, it'll print out 97295 zsh if you're using fish, it'll print out an error like "In fish, please use $fish_pid" ($$ isn't valid syntax in fish, but in any case the error message tells you that you're using fish, which you probably already knew) Also bash is the default on Linux and zsh is the default on Mac OS (as of 2024). I'll only cover bash, zsh, and fish in these directions. step 2: find your shell's config file in zsh, it's probably ~/.zshrc in bash, it might be ~/.bashrc, but it's complicated, see the note in the next section in fish, it's probably ~/.config/fish/config.fish (you can run echo $__fish_config_di

## Using CSS libraries with Compose for Web - Gustavo Fão Valvassori

DevFeed: [Using CSS libraries with Compose for Web - Gustavo Fão Valvassori](<https://devfeed.tech/articles/using-css-libraries-with-compose-for-web-gustavo-fao-valvassori-38180.md>)

Original publisher: [Read original article](<https://touchlab.co/compose-html-style-libraries>)

Published: 2023-12-22T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [compose-for-web](<https://devfeed.tech/topics/compose-for-web.md>), [CSS](<https://devfeed.tech/topics/css.md>), [Webpack](<https://devfeed.tech/topics/webpack.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>)

Tags: [cdn](<https://devfeed.tech/tags/cdn.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-for-web](<https://devfeed.tech/tags/compose-for-web.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [css](<https://devfeed.tech/tags/css.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [kotlin-js](<https://devfeed.tech/tags/kotlin-js.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [npm](<https://devfeed.tech/tags/npm.md>), [third-party](<https://devfeed.tech/tags/third-party.md>), [tips](<https://devfeed.tech/tags/tips.md>)

### AI overview

A tutorial on importing and using third-party CSS styles in Compose for Web. It explains three approaches: loading styles from a CDN, adding CSS files to project resources, and managing styles with NPM. It also introduces enabling CSS and SCSS support in Webpack through Gradle configuration.

### Source excerpt

Using third-party styles have a few gotchas. Here are some tips and tricks to help you out.

## Kotlin and Java interoperability: Traps and gotchas

DevFeed: [Kotlin and Java interoperability: Traps and gotchas](<https://devfeed.tech/articles/kotlin-and-java-interoperability-traps-and-gotchas-39204.md>)

Original publisher: [Read original article](<https://kt.academy/article/ak-java-interop-4>)

Published: 2023-08-21T00:15:00Z

Content type: tutorial

Language: en

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

Topics: [interoperability](<https://devfeed.tech/topics/interoperability.md>), [Java](<https://devfeed.tech/topics/java.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [gotchas](<https://devfeed.tech/topics/gotchas.md>), [exceptions](<https://devfeed.tech/topics/exceptions.md>)

Tags: [gotchas](<https://devfeed.tech/tags/gotchas.md>), [interoperability](<https://devfeed.tech/tags/interoperability.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mockito](<https://devfeed.tech/tags/mockito.md>), [unit-test](<https://devfeed.tech/tags/unit-test.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains surprising aspects of Kotlin and Java interoperability, including return types, function types and functional interfaces, Java keywords used in Kotlin names, Mockito's `when` function, Kotlin/JVM naming constraints, and Java checked exceptions.

### Source excerpt

The parts of Kotlin and Java interoperability that might be surprising or counterintuitive.

## Performance Gotchas and Optimizations in Jetpack Compose

DevFeed: [Performance Gotchas and Optimizations in Jetpack Compose](<https://devfeed.tech/articles/blazing-fast-composables-28459.md>)

Original publisher: [Read original article](<https://composables.com/blog/optimize>)

Author: Alex Styl

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

Content type: tutorial

Language: en

Sources: [Composables - Concise, no-fluff video tutorials for Android developers](<https://devfeed.tech/sources/composables-concise-no-fluff-video-tutorials-for-android-developers.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [ui](<https://devfeed.tech/topics/ui.md>), [gotchas](<https://devfeed.tech/topics/gotchas.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>)

Tags: [compose](<https://devfeed.tech/tags/compose.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin-functions](<https://devfeed.tech/tags/kotlin-functions.md>), [layout](<https://devfeed.tech/tags/layout.md>), [performance](<https://devfeed.tech/tags/performance.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial explains how to optimize composable functions in Jetpack Compose. It focuses on minimizing unnecessary calculations, understanding how Compose determines whether values change, reducing work in the Composition, Layout, and Draw phases, and checking performance on release builds.

### Source excerpt

Performance gotchas and optimizations in Jetpack Compose

## Adding Chartkick to a Rails 6 App

DevFeed: [Adding Chartkick to a Rails 6 App](<https://devfeed.tech/articles/adding-chartkick-to-a-rails-6-app-things-i-always-forget-28269.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/rails/2020/04/02/adding-chartkick-to-a-rails-6-app.html>)

Author: Fuzzygroup

Published: 2020-04-02T00:00:00Z

Content type: tutorial

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [Rails](<https://devfeed.tech/topics/rails.md>), [App](<https://devfeed.tech/topics/app.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [chartkick](<https://devfeed.tech/tags/chartkick.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [install](<https://devfeed.tech/tags/install.md>), [js](<https://devfeed.tech/tags/js.md>), [rails](<https://devfeed.tech/tags/rails.md>)

### AI overview

A tutorial on adding Chartkick to a Rails 6 application. It covers the Gemfile entry, bundle and Yarn commands, and the required application.js imports for Chartkick and chart.js.

### Source excerpt

Chartkick is the charting engine that I've used for a bunch of years. When you use Chartkick on a Rails 6 app, here are some gotchas: Gemfile gem 'chartkick' Command Line bundle install yarn add chartkick chart.js yarn install --check-files Add to application.js require("chartkick") require("chart.js")

## Three.js extrude SVG path

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

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

Author: Stanko

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

Content type: tutorial

Language: en

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

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

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

### AI overview

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

### Source excerpt

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

## Why Do We Write super(props)?

DevFeed: [Why Do We Write super(props)?](<https://devfeed.tech/articles/why-do-we-write-super-props-36210.md>)

Original publisher: [Read original article](<https://overreacted.io/why-do-we-write-super-props/>)

Published: 2018-11-30T00:00:00Z

Content type: article

Language: en

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

Topics: [JavaScript](<https://devfeed.tech/topics/javascript.md>), [React](<https://devfeed.tech/topics/react.md>), [es6](<https://devfeed.tech/topics/es6.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [gotchas](<https://devfeed.tech/tags/gotchas.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [react](<https://devfeed.tech/tags/react.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

This article explains why React class components call super(props), covering JavaScript constructor rules, parent-class initialization, and how React assigns props even when they are not passed to super.

### Source excerpt

There's a twist at the end.

## All About Type Aliases in Kotlin

DevFeed: [All About Type Aliases in Kotlin](<https://devfeed.tech/articles/all-about-type-aliases-in-kotlin-25031.md>)

Original publisher: [Read original article](<https://typealias.com/guides/all-about-type-aliases/>)

Author: author@typealias.com (Dave Leeds)

Published: 2018-05-14T00:00:00Z

Content type: tutorial

Language: en

Sources: [Dave Leeds on Kotlin - typealias.com](<https://devfeed.tech/sources/dave-leeds-on-kotlin-typealias-com.md>)

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

Tags: [code](<https://devfeed.tech/tags/code.md>), [function](<https://devfeed.tech/tags/function.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [import](<https://devfeed.tech/tags/import.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [programming](<https://devfeed.tech/tags/programming.md>), [readability](<https://devfeed.tech/tags/readability.md>), [type-alias](<https://devfeed.tech/tags/type-alias.md>)

### AI overview

A Kotlin tutorial explaining type aliases, how they make complex types easier to read and maintain, practical use cases, common gotchas, and the related Import As feature.

### Source excerpt

Have you ever had a conversation like this? Hopefully you haven't had a conversation like that in real life, but you might have had one like that with your code! For example, take a gander at this: interface RestaurantPatron { fun makeReservation(restaurant: Organization<(Currency, Coupon?) -> Sustenance>) fun visit(restaurant: Organization<(Currency, Coupon?) -> Sustenance>) fun complainAbout(restaurant: Organization<(Currency, Coupon?) -> Sustenance>) } When you see a chunk of code with so many types smushed together, it's easy to get lost in the details.

## Always use button for clickable elements

DevFeed: [Always use button for clickable elements](<https://devfeed.tech/articles/always-use-button-for-clickable-elements-37235.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/always-use-button-for-clickable-elements/>)

Author: Stanko

Published: 2016-09-02T00:00:00Z

Content type: tutorial

Language: en

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

Topics: [browser](<https://devfeed.tech/topics/browser.md>), [Forms](<https://devfeed.tech/topics/forms.md>), [Chrome](<https://devfeed.tech/topics/chrome.md>), [Firefox](<https://devfeed.tech/topics/firefox.md>)

Tags: [accessible](<https://devfeed.tech/tags/accessible.md>), [browser](<https://devfeed.tech/tags/browser.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [forms](<https://devfeed.tech/tags/forms.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [screenshots](<https://devfeed.tech/tags/screenshots.md>)

### AI overview

A tutorial recommends using <button> for clickable controls that are not links, explaining accessibility and keyboard benefits. It also covers setting type='button' inside forms and a workaround for inconsistent display: flex behavior across browsers.

### Source excerpt

Always try to use <button> when element is clickable, but it is not a link. Avoid <a>, <span>, <div> and other elements. Note that display: flex works differently on buttons in different browsers, but we have an easy fix for that. Why? # You will get multiple benefits - user can "tab" to it, and to activate it by pressing enter (that will trigger click event). There is no need to preventDefault like when you are using <a>. User can't open it in the new tab/window, using right or middle click. Screen readers recognize it out of the box. Long story short - it is way more accessible. And when you think about it, it is actually really logical thing to do. Buttons are made to be clickable :) Gotchas # Buttons in forms # If you need your clickable button to be in a form, remember to put type='button' to it, as default button type is submit, and it will submit your form on click. Again, you could use preventDefault, but I think this is a way cleaner approach. Button flex maddnes # For some reason display: flex on buttons is behaving really different across browsers. It is crazy! If you don't believe me, just check the examples below. The easiest fix is to add another div in (to wrap button content), and apply display: flex to it. From there on, you should be fine. I made a CodePen with an example. On the left side, you can see a button with flex applied directly to it, and on the right, a button with inner div and flex applied to it. I overcame my laziness and made a bunch of cross browser screenshots. Original CodePen is included at the end. At the moment, it seems only Chrome gets it right. Chrome # Firefox # Safari 8 # Safari 9 # IE10 # IE11 # CodePen #

## Speeding things up with Redshift

DevFeed: [Speeding things up with Redshift](<https://devfeed.tech/articles/speeding-things-up-with-redshift-19701.md>)

Original publisher: [Read original article](<https://word.bitly.com/post/48854093418>)

Author: Wordbitly

Published: 2013-04-25T14:30:19Z

Content type: opinion

Language: en

Sources: [Bitly](<https://devfeed.tech/sources/bitly.md>)

Topics: [Amazon Redshift](<https://devfeed.tech/topics/amazon-redshift.md>), [Data analysis](<https://devfeed.tech/topics/data-analysis.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Hadoop](<https://devfeed.tech/topics/hadoop.md>), [Python](<https://devfeed.tech/topics/python.md>), [amazon](<https://devfeed.tech/topics/amazon.md>)

Tags: [amazon](<https://devfeed.tech/tags/amazon.md>), [analysis](<https://devfeed.tech/tags/analysis.md>), [data-analysis](<https://devfeed.tech/tags/data-analysis.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [hadoop](<https://devfeed.tech/tags/hadoop.md>), [python](<https://devfeed.tech/tags/python.md>), [redshift](<https://devfeed.tech/tags/redshift.md>), [speed](<https://devfeed.tech/tags/speed.md>), [sql](<https://devfeed.tech/tags/sql.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

The article describes bitly's experience using Amazon Redshift to speed up ad hoc analysis of large volumes of click data. It contrasts Redshift SQL queries with a slower Hadoop and Python MapReduce workflow, reporting answers within minutes or seconds and an overall positive experience, while noting some gotchas.

### Source excerpt

Recently we've started to experiment with using Redshift, Amazon's new data warehousing service. More specifically, we're using it to speed up and expand our ad hoc data analysis. The Challenge bitly sees billions of clicks and shortens each month. Often we have various questions about the data generated from this activity. Sometimes these questions are driven by business needs (how much traffic do we see from a potential enterprise customer), sometimes they are more technically driven (how much traffic will a new sub-system need to deal with), and sometimes we like to just have fun (what are the top trashy celeb stories this week). Unfortunately, when working with that volume of data it can be pretty difficult to do much of anything quickly. Pre-Redshift, all of these questions were answered by writing map-reduce jobs to be run on our Hadoop cluster or on Amazon's EMR. Whenever we wanted to answer a question with our data, the process would look something like this: Write map-reduce job in Python Run it on some local test data Fix bugs. Run it on the Hadoop cluster Wait 20-30 minutes for results Get an error back from Hadoop Dig through the logs to find the error. GOTO 3 This is clearly not ideal when all you want to do is get a simple count. For a lot of the work we do Hadoop + Python make for an awesome combination, but for these ad hoc aggregation queries they're very blunt instruments. In both cases, they are general purpose tools that are super flexible, but slow and difficult to use for this specific use case. Redshift, on the other hand, is specifically built and optimized for doing aggregation queries over large sets of data. When we want to answer a question with Redshift, we just write a SQL query and get an answer within a few minutes--if not seconds. Overall, our experience with Redshift has been a positive one but we have run into some gotchas that we'll get into below. The Good News User Experience From a user perspective, we're really happy with Redsh

## The Pain and Glory of C

DevFeed: [The Pain and Glory of C](<https://devfeed.tech/articles/the-pain-and-glory-of-c-33382.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2011/11/06/pain-and-glory-of-c>)

Published: 2011-11-06T00:00:00Z

Content type: opinion

Language: en

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

Topics: [C](<https://devfeed.tech/topics/c.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [C#](<https://devfeed.tech/topics/csharp.md>)

Tags: [arrays](<https://devfeed.tech/tags/arrays.md>), [c](<https://devfeed.tech/tags/c.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [comparison](<https://devfeed.tech/tags/comparison.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [pointers](<https://devfeed.tech/tags/pointers.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

The author reflects on solving programming puzzles in straight C and questions why developers choose it over C++ or C#. The article compares C's small, simple syntax and manual memory management with C++'s newer features and complexity, and discusses perceived C# performance concerns.

### Source excerpt

I don't normally write much C code, but this past week I was fiddling around with it this past week to solve some programming puzzles. When I say C I mean straight C (without the ++ or #). Completely un-object-oriented; just structures, helper functions and malloc/free. It took me 3 days (a total of probably 9 hours) to write a fully functional 250-300 SLOC solution to a puzzle (complete with huge memory leaks). This all brings me to the burning question - who would ever want to write programs in C?C++ has developed over the years. I recently looked at some of the enhancements in C++11 which include the auto keyword (like var in C#), better reference counting "smart pointers", lambdas and closures. Obviously, C++ is developing and progressing. C hasn't had a spec change since 1999, and even then it wasn't exactly dramatic. We still don't have any OO or reference counting pointers.Have you ever tried interfacing with a library in C? It's very cumbersome. You have to read all the documentation and call the right my_library_object_*() functions at the right times. Everything is hands-on, nothing is left to imagination. You have to remember what memory you allocated so you can free it sometime later when you're sure you don't need it anymore (and then recursively free sub-structures and arrays).I think anyone can see warts in C. But its easy to forget the simplistic beauty. I mean, there aren't many operators in C, and there's only one way to cast. I mean, sure, you still can't create & initialize a counter variable inline in a for-loop. But the complex syntax of C++ is scary in comparison with all it's member::accessors, template, 5-6 ways to cast a variable and a slew of gotchas. Sure, C has it's share of gotchas, but the language is so small that anyone who's spent any significant time programming C can list most of them out for you (probably not so true with C++).So why not C#? Well, it's freaking slow!! Think about when people were converting their business apps fr

## Comparing Two Python Programming Books for Beginners

DevFeed: [Comparing Two Python Programming Books for Beginners](<https://devfeed.tech/articles/so-you-want-to-learn-python-38879.md>)

Original publisher: [Read original article](<http://neopythonic.blogspot.com/2009/05/so-you-want-to-learn-python.html>)

Author: Guido van Rossum (noreply@blogger.com)

Published: 2009-05-26T22:46:00Z

Content type: opinion

Language: en

Sources: [Guido van Rossum](<https://devfeed.tech/sources/guido-van-rossum.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Computer science](<https://devfeed.tech/topics/computer-science.md>), [Learning](<https://devfeed.tech/topics/learning.md>)

Tags: [beginners](<https://devfeed.tech/tags/beginners.md>), [book-review](<https://devfeed.tech/tags/book-review.md>), [books](<https://devfeed.tech/tags/books.md>), [compare](<https://devfeed.tech/tags/compare.md>), [experiments](<https://devfeed.tech/tags/experiments.md>), [gotchas](<https://devfeed.tech/tags/gotchas.md>), [projects](<https://devfeed.tech/tags/projects.md>), [python](<https://devfeed.tech/tags/python.md>), [review](<https://devfeed.tech/tags/review.md>), [teaching](<https://devfeed.tech/tags/teaching.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

The article compares Hello World and Practical Programming, two books that teach Python to people without prior programming experience. It argues that the books target different audiences: Hello World is aimed at children and uses an accessible, illustrated style, while Practical Programming takes a more mature, computer-science-oriented approach.

### Source excerpt

There's never a lack of books to use for learning Python. I occasionally receive books for review, but I don't have a particularly good yardstick to judge such books by: I find that they all contain some factual errors and some oddities of presentation, but I have no idea whether those matter for the readers. Even Knuth's books are full of errors: for example the errata for Vol. 1 (2nd ed.) are a staggering 80 pages, but I doubt anybody besides Knuth himself is bothered by this knowledge. Recently I got a review copy of "Hello World", and a colleague kindly lent me his copy of "Practical Programming". I think it's interesting to compare the two a bit, since they both claim to be teaching Python programming to people who haven't programmed before. And yet their audiences are totally different! "Hello World", published by Manning, is written by Warren Sande and his son Carter. The subtitle is "Computer programming for kids and other beginners", but I think if you're not a kid any more you might get annoyed by the rather popular writing style. If you are a kid, well, you will probably enjoy a book written with you in mind, and you will learn plenty. The only prerequisites are reading and typing skills, a computer that wasn't built in the stone age, and a desire to learn more about what goes on inside that computer. The book uses short chapters with lots of illustrations, often cartoons and jokes. There are lots of opportunities to try out the material and learn that way. Each chapter ends with a review section, some tests, and more experiments to try. The book pays plenty of attention to typical "gotchas", so that if you get stuck at some point, there probably is help nearby to get you unstuck. "Practical Programming" is written by Jennifer Campbell, Paul Gries, Jason Montojo, and Greg Wilson. This a team composed of three university professors and a former student of theirs. Their purported goal is to teach Computer Science (with Capital Letters), and Python is merely