# make

GNU Make is a build automation tool that controls generation of program files from source files using makefiles.

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

## New Hampshire bill HB1273 could enshrine software freedom principles into law

DevFeed: [New Hampshire bill HB1273 could enshrine software freedom principles into law](<https://devfeed.tech/articles/new-hampshire-usa-may-soon-enshrine-software-freedom-into-law-your-help-is-needed-32739.md>)

Original publisher: [Read original article](<https://libreboot.org/news/usa-libre.html>)

Author: Leah Rowe

Published: 2026-09-17T04:32:50.666044Z

Content type: opinion

Language: en

Sources: [News about Libreboot releases and development](<https://devfeed.tech/sources/news-about-libreboot-releases-and-development.md>)

Topics: [Open Source](<https://devfeed.tech/topics/open-source.md>), [make](<https://devfeed.tech/topics/make.md>), [Software](<https://devfeed.tech/topics/software.md>), [libreboot](<https://devfeed.tech/topics/libreboot.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [bios](<https://devfeed.tech/tags/bios.md>), [canoeboot](<https://devfeed.tech/tags/canoeboot.md>), [coreboot](<https://devfeed.tech/tags/coreboot.md>), [free-software](<https://devfeed.tech/tags/free-software.md>), [law](<https://devfeed.tech/tags/law.md>), [libre](<https://devfeed.tech/tags/libre.md>), [libreboot](<https://devfeed.tech/tags/libreboot.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [open-source-software](<https://devfeed.tech/tags/open-source-software.md>), [opensource](<https://devfeed.tech/tags/opensource.md>), [software](<https://devfeed.tech/tags/software.md>), [uefi](<https://devfeed.tech/tags/uefi.md>)

### AI overview

Leah Rowe discusses proposed New Hampshire bill HB1273, which the article says would enshrine software freedom and open-source principles into law. The article explains libre software and urges readers, especially those near New Hampshire, to pay attention and share the information.

### Source excerpt

Article: New Hampshire (USA) may soon enshrine Software Freedom into law. YOUR HELP IS NEEDED! Web link: https://libreboot.org/news/usa-libre.html

## libosmocore - libosmocore 1.14.1 released

DevFeed: [libosmocore - libosmocore 1.14.1 released](<https://devfeed.tech/articles/libosmocore-libosmocore-1-14-1-released-32757.md>)

Original publisher: [Read original article](<https://osmocom.org/news/330>)

Author: osmith

Published: 2026-07-22T10:37:33Z

Content type: release

Language: en

Sources: [Open Source Mobile Communications: News](<https://devfeed.tech/sources/open-source-mobile-communications-news.md>)

Topics: [changelog](<https://devfeed.tech/topics/changelog.md>), [IO](<https://devfeed.tech/topics/io.md>), [cpu](<https://devfeed.tech/topics/cpu.md>), [scheduling](<https://devfeed.tech/topics/scheduling.md>), [make](<https://devfeed.tech/topics/make.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [bug](<https://devfeed.tech/tags/bug.md>), [changelog](<https://devfeed.tech/tags/changelog.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [io](<https://devfeed.tech/tags/io.md>), [issue](<https://devfeed.tech/tags/issue.md>), [make](<https://devfeed.tech/tags/make.md>), [scheduling](<https://devfeed.tech/tags/scheduling.md>), [tracker](<https://devfeed.tech/tags/tracker.md>)

### AI overview

libosmocore 1.14.1 has been released with fixes to I/O queue handling, CPU scheduling initialization and platform-dependent scheduling support, utility issues, and a missing crypto header in the build configuration.

### Source excerpt

Today we've released libosmocore 1.14.1. The changelog over 1.14.0 is as follows: libosmocore (1.14.1) unstable; urgency=medium [ Vadim Yanitskiy ] * osmo_io: iofd_txqueue_dequeue(): fix double next->io_len decrement [ Timur Davydov ] * vty: fix osmo_cpu_sched_vty_init() prototype * vty: make CPU scheduling optional based on platform support [ Oliver Smith ] * utils: fix typos * utils/gsmtap-logsend: close infile before exit [ Alexander Couzens ] * gsm/Makefile.am: add missing kdf/crypto.h -- Oliver Smith <osmith@sysmocom.de> Wed, 22 Jul 2026 11:30:55 +0200

## Automating Conversion of reveal.js Slides to PDF

DevFeed: [Automating Conversion of reveal.js Slides to PDF](<https://devfeed.tech/articles/rediscovering-converting-reveal-js-slides-to-pdf-41908.md>)

Original publisher: [Read original article](<https://jpmens.net/2026/07/11/rediscovering-reveal-js-to-pdf/>)

Author: Jan-Piet Mens

Published: 2026-07-10T22:00:00Z

Content type: article

Language: en

Sources: [Jan-Piet Mens](<https://devfeed.tech/sources/jan-piet-mens.md>)

Topics: [Automation](<https://devfeed.tech/topics/automation.md>), [Emacs](<https://devfeed.tech/topics/emacs.md>), [Org mode](<https://devfeed.tech/topics/orgmode.md>), [HTML](<https://devfeed.tech/topics/html.md>), [make](<https://devfeed.tech/topics/make.md>), [browser](<https://devfeed.tech/topics/browser.md>), [Chrome](<https://devfeed.tech/topics/chrome.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [npm](<https://devfeed.tech/topics/npm.md>), [Script](<https://devfeed.tech/topics/script.md>), [Server](<https://devfeed.tech/topics/server.md>)

Tags: [automation](<https://devfeed.tech/tags/automation.md>), [browser](<https://devfeed.tech/tags/browser.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [docker](<https://devfeed.tech/tags/docker.md>), [emacs](<https://devfeed.tech/tags/emacs.md>), [html](<https://devfeed.tech/tags/html.md>), [jan-piet-mens](<https://devfeed.tech/tags/jan-piet-mens.md>), [jpm](<https://devfeed.tech/tags/jpm.md>), [jpmens](<https://devfeed.tech/tags/jpmens.md>), [make](<https://devfeed.tech/tags/make.md>), [npm](<https://devfeed.tech/tags/npm.md>), [script](<https://devfeed.tech/tags/script.md>)

### AI overview

The author describes using Emacs Org-mode and reveal.js to create training slide decks, then automating their conversion from HTML to PDF with decktape. They compare Docker-based and local installations, noting differences in Chrome and font rendering, and use a small shell script to run an HTTP server, invoke decktape, and clean up the process.

### Source excerpt

A few years ago I began using Emacs Org-mode and reveal.js to generate slide decks I use in trainings, and I've been pleased with the results. (I believe it was Carsten who got me hooked.) It took me a bit to get the settings just the way I wanted to have them, but since then it's been a matter of typing make in a command line to generate the HTML from the .org file using this in my Makefile, and the resulting *.html is what I open in a browser for display. presentation.html: presentation.org emacs -u jpm \ --batch presentation.org \ --eval '(load user-init-file)' \ -f org-reveal-export-to-html For printing and handouts I want a PDF, but that's always required a bit of manual work to convert the HTML to PDF, because the tools I tried back then didn't produce the result I could get manually by opening in a Chrome browser with a ?print-pdf attached the the URL and then a judicious print-to-PDF and save. My idea was to automate that, and I was prompted a few days ago to revisit decktape. I shy away from installing NPM stuff because like Maven, Rust, and whatnot, they typically make me download half an internet, so I began by using the docker image as described at decktape. However I disliked the fonts and the overall impression of the generated PDF. "Disliked" is possibly unfair, but it just looked different... It dawned on me then, obviously, that the docker image was running some incantation of Chrome on Linux, whereas I'm used to Chrome on Mac and its fonts, etc., so I then did actually install decktape locally with the resulting PDF looking exactly like what I was used to! I've now got "automation" to (mostly) get the PDF output the way I wish to have it with a small script I've named runoff.sh (yes, the name is intentional :-) #!/bin/sh set -e python3 -m http.server --bind 127.0.0.1 8108 & httpid=$! trap "{ echo Killing http.server on $httpid; kill $httpid; exit 0; }" 0 1 2 15 echo PID=$httpid npm exec decktape -- \ --size 998x780 \ --pdf-author "Jan-Piet Mens" \ --

## Scaling out Distroless adoption With AI

DevFeed: [Scaling out Distroless adoption With AI](<https://devfeed.tech/articles/scaling-out-distroless-adoption-with-ai-1254.md>)

Original publisher: [Read original article](<https://engineering.grab.com/scaling-out-distroless-adoption-with-ai>)

Author: Jia Yee Chong

Published: 2026-06-22T00:00:00Z

Content type: article

Language: en

Sources: [Grab Tech](<https://devfeed.tech/sources/grab-tech.md>)

Topics: [Security](<https://devfeed.tech/topics/security.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Dockerfile](<https://devfeed.tech/topics/dockerfile.md>), [Vulnerabilities](<https://devfeed.tech/topics/vulnerabilities.md>), [make](<https://devfeed.tech/topics/make.md>), [ci](<https://devfeed.tech/topics/ci.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [Docker Image](<https://devfeed.tech/topics/docker-image.md>), [Testcontainers](<https://devfeed.tech/topics/testcontainers.md>), [MySQL](<https://devfeed.tech/topics/mysql.md>)

Tags: [artificial-intelligence](<https://devfeed.tech/tags/artificial-intelligence.md>), [ci](<https://devfeed.tech/tags/ci.md>), [containers](<https://devfeed.tech/tags/containers.md>), [devsecops](<https://devfeed.tech/tags/devsecops.md>), [docker](<https://devfeed.tech/tags/docker.md>), [docker-image](<https://devfeed.tech/tags/docker-image.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [migration](<https://devfeed.tech/tags/migration.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [security](<https://devfeed.tech/tags/security.md>), [testcontainers](<https://devfeed.tech/tags/testcontainers.md>), [testing](<https://devfeed.tech/tags/testing.md>), [vulnerabilities](<https://devfeed.tech/tags/vulnerabilities.md>)

### AI overview

Grab describes migrating services from heavy base images to Distroless images to reduce security risks and eliminate unnecessary binaries and associated CVEs. The article explains the runtime-failure risks of this migration and presents medium tests using Docker images, Testcontainers, and network proxies to verify configuration and runtime dependencies in CI.

### Source excerpt

Distroless adoption at Grab Grab is migrating from heavy base images to Distroless images to reduce security risks. By limiting each container to the application and its runtime dependencies, we shed non-essential binaries and associated Common Vulnerabilities and Exposures (CVEs). This migration is more than a compliance mandate; it is a strategic security decision to build a more resilient environment. Why Distroless requires rigorous testing Distroless adoption risk: Runtime failure Shifting to Distroless images introduces a critical technical risk: Runtime Failure. A service might build perfectly in Continuous Integration (CI), but fail at the deployment stage due to: Missing shared objects: Binaries might require specific libraries (.so files) present in Ubuntu but absent in Distroless. Implicit links: Third-party tools might expect specific system utilities or directory structures. Testing is required to ensure two things: The service spins up with the correct configuration. All runtime dependencies remain intact. Scaling this verification across thousands of services manually? That would take years, unless we found a way to automate the trust. The testing methodology As we perform changes to the Dockerfile definition of our services, it is important for us to include the corresponding test strategy to ensure that the changes that we make do not introduce a regression to our running services. Assessing the change introduced to our services, the lowest possible testing boundary would be that of what we define as medium tests in Grab. Medium tests in Grab At Grab, we categorize our test suites into 3 main sizes: small, medium and large. Small tests refer to functional tests whereby mocks are introduced via dependency injection. Large tests refer to end-to-end tests that run on actual services in our staging environment where nothing is mocked. Figure 1: Architecture diagram of a medium test environment Medium tests sit between the small and large tests. External

## Generating Miniatures for my Frameo Digital Photo Frame

DevFeed: [Generating Miniatures for my Frameo Digital Photo Frame](<https://devfeed.tech/articles/generating-miniatures-for-my-frameo-digital-photo-frame-27732.md>)

Original publisher: [Read original article](<https://gagor.pro/2025/11/generating-miniatures-for-my-frameo-digital-photo-frame/>)

Author: Tom

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

Content type: tutorial

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [make](<https://devfeed.tech/topics/make.md>), [Software](<https://devfeed.tech/topics/software.md>), [App](<https://devfeed.tech/topics/app.md>), [data](<https://devfeed.tech/topics/data.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Raspberry Pi](<https://devfeed.tech/topics/raspberry-pi.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [bash](<https://devfeed.tech/tags/bash.md>), [camera](<https://devfeed.tech/tags/camera.md>), [collection](<https://devfeed.tech/tags/collection.md>), [devops](<https://devfeed.tech/tags/devops.md>), [digital-photo-frame](<https://devfeed.tech/tags/digital-photo-frame.md>), [exiftool](<https://devfeed.tech/tags/exiftool.md>), [files](<https://devfeed.tech/tags/files.md>), [frameo](<https://devfeed.tech/tags/frameo.md>), [generate](<https://devfeed.tech/tags/generate.md>), [go](<https://devfeed.tech/tags/go.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [imagemagick](<https://devfeed.tech/tags/imagemagick.md>), [linux](<https://devfeed.tech/tags/linux.md>), [macos](<https://devfeed.tech/tags/macos.md>), [make](<https://devfeed.tech/tags/make.md>), [photo-collection](<https://devfeed.tech/tags/photo-collection.md>), [photo-miniatures](<https://devfeed.tech/tags/photo-miniatures.md>), [photos](<https://devfeed.tech/tags/photos.md>), [raspberry-pi](<https://devfeed.tech/tags/raspberry-pi.md>)

### AI overview

The author describes buying an ARZOPA Frameo digital photo frame and developing a workflow to fit a large photo collection onto its limited storage by generating thumbnails. The workflow uses ImageMagick, ExifTool, parallel processing, and Make on Ubuntu or Debian.

### Source excerpt

A story of how I bought a digital photo frame, and how I created a tool to generate miniatures of my photo collection to fit them all on the device.

## Advanced techniques for porting libraries to ESP-IDF components

DevFeed: [Advanced techniques for porting libraries to ESP-IDF components](<https://devfeed.tech/articles/advanced-techniques-for-porting-libraries-to-esp-idf-components-13733.md>)

Original publisher: [Read original article](<https://developer.espressif.com/blog/2025/11/advanced-porting-libraries-as-components/>)

Author: John Lee

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

Content type: tutorial

Language: en

Sources: [Blog on Developer Portal](<https://devfeed.tech/sources/blog-on-developer-portal.md>)

Topics: [ESP-IDF](<https://devfeed.tech/topics/esp-idf.md>), [Library](<https://devfeed.tech/topics/library.md>), [AWS IoT Core](<https://devfeed.tech/topics/aws-iot-core.md>), [OpenSSH](<https://devfeed.tech/topics/openssh.md>), [WebSocket](<https://devfeed.tech/topics/websocket.md>), [aio](<https://devfeed.tech/topics/aio.md>), [CMake](<https://devfeed.tech/topics/cmake.md>), [make](<https://devfeed.tech/topics/make.md>), [POSIX](<https://devfeed.tech/topics/posix.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [cmake](<https://devfeed.tech/tags/cmake.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [component](<https://devfeed.tech/tags/component.md>), [components](<https://devfeed.tech/tags/components.md>), [esp-idf](<https://devfeed.tech/tags/esp-idf.md>), [feature-flags](<https://devfeed.tech/tags/feature-flags.md>), [library](<https://devfeed.tech/tags/library.md>), [linux](<https://devfeed.tech/tags/linux.md>), [mqtt](<https://devfeed.tech/tags/mqtt.md>), [porting](<https://devfeed.tech/tags/porting.md>), [posix](<https://devfeed.tech/tags/posix.md>), [ssh](<https://devfeed.tech/tags/ssh.md>), [systems](<https://devfeed.tech/tags/systems.md>), [techniques](<https://devfeed.tech/tags/techniques.md>)

### AI overview

This follow-up article presents advanced techniques for porting larger libraries, particularly those designed for Linux or POSIX systems, into reusable ESP-IDF components. It covers assessing reusable code, adapting build systems and port layers, configuration, header injection, linker wrapping, and compiler-warning management, with examples including asio, mosquitto, libssh, and libwebsockets.

### Source excerpt

This article follows up on the article 'Porting a library to an ESP-IDF component' and shows some advanced tips and tricks when porting larger libraries into ESP-IDF components.

## Using \`make\` to compile C programs (for non-C-programmers)

DevFeed: [Using \`make\` to compile C programs (for non-C-programmers)](<https://devfeed.tech/articles/using-make-to-compile-c-programs-for-non-c-programmers-21120.md>)

Original publisher: [Read original article](<https://jvns.ca/blog/2025/06/10/how-to-compile-a-c-program/>)

Author: Julia Evans

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

Content type: tutorial

Language: en

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

Topics: [C](<https://devfeed.tech/topics/c.md>), [make](<https://devfeed.tech/topics/make.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Package manager](<https://devfeed.tech/topics/package-manager.md>), [gcc](<https://devfeed.tech/topics/gcc.md>), [apt](<https://devfeed.tech/topics/apt.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>)

Tags: [apt](<https://devfeed.tech/tags/apt.md>), [building](<https://devfeed.tech/tags/building.md>), [c](<https://devfeed.tech/tags/c.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [debian](<https://devfeed.tech/tags/debian.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [gcc](<https://devfeed.tech/tags/gcc.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [linux](<https://devfeed.tech/tags/linux.md>), [mac](<https://devfeed.tech/tags/mac.md>), [make](<https://devfeed.tech/tags/make.md>), [packages](<https://devfeed.tech/tags/packages.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

A beginner-oriented guide to compiling C programs from source, covering compiler installation, dependency discovery, and build tools on Ubuntu and macOS.

### Source excerpt

I have never been a C programmer but every so often I need to compile a C/C++ program from source. This has been kind of a struggle for me: for a long time, my approach was basically "install the dependencies, run make, if it doesn't work, either try to find a binary someone has compiled or give up". "Hope someone else has compiled it" worked pretty well when I was running Linux but since I've been using a Mac for the last couple of years I've been running into more situations where I have to actually compile programs myself. So let's talk about what you might have to do to compile a C program! I'll use a couple of examples of specific C programs I've compiled and talk about a few things that can go wrong. Here are three programs we'll be talking about compiling: paperjam sqlite qf (a pager you can run to quickly open files from a search with rg -n THING | qf) step 1: install a C compiler This is pretty simple: on an Ubuntu system if I don't already have a C compiler I'll install one with: sudo apt-get install build-essential This installs gcc, g++, and make. The situation on a Mac is more confusing but it's something like "install xcode command line tools". step 2: install the program's dependencies Unlike some newer programming languages, C doesn't have a dependency manager. So if a program has any dependencies, you need to hunt them down yourself. Thankfully because of this, C programmers usually keep their dependencies very minimal and often the dependencies will be available in whatever package manager you're using. There's almost always a section explaining how to get the dependencies in the README, for example in paperjam's README, it says: To compile PaperJam, you need the headers for the libqpdf and libpaper libraries (usually available as libqpdf-dev and libpaper-dev packages). You may need a2x (found in AsciiDoc) for building manual pages. So on a Debian-based system you can install the dependencies like this. sudo apt install -y libqpdf-dev libpaper-dev

## Using if-else Conditionals in a Makefile

DevFeed: [Using if-else Conditionals in a Makefile](<https://devfeed.tech/articles/using-if-else-conditionals-in-a-makefile-4515.md>)

Original publisher: [Read original article](<https://feeds.feedblitz.com/~/919796387/0/baeldung/linux~Using-ifelse-Conditionals-in-a-Makefile>)

Author: baeldung

Published: 2025-06-06T09:36:00Z

Content type: tutorial

Language: en

Sources: [Baeldung - Linux](<https://devfeed.tech/sources/baeldung-linux.md>)

Topics: [make](<https://devfeed.tech/topics/make.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Operating system](<https://devfeed.tech/topics/operating-system.md>), [gcc](<https://devfeed.tech/topics/gcc.md>)

Tags: [build](<https://devfeed.tech/tags/build.md>), [building](<https://devfeed.tech/tags/building.md>), [building-make-popular](<https://devfeed.tech/tags/building-make-popular.md>), [code](<https://devfeed.tech/tags/code.md>), [examples](<https://devfeed.tech/tags/examples.md>), [gcc](<https://devfeed.tech/tags/gcc.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [learn](<https://devfeed.tech/tags/learn.md>), [linux](<https://devfeed.tech/tags/linux.md>), [make](<https://devfeed.tech/tags/make.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [os](<https://devfeed.tech/tags/os.md>), [popular](<https://devfeed.tech/tags/popular.md>), [programming](<https://devfeed.tech/tags/programming.md>), [scripting](<https://devfeed.tech/tags/scripting.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

A tutorial explaining how to use if-else conditional directives in Makefiles. It covers ifeq, ifneq, ifdef, and ifndef, with examples for selecting compiler flags, handling operating-system differences, and assigning default variable values.

### Source excerpt

Learn how to use if-else conditional statements inside of Makefiles. The post Using if-else Conditionals in a Makefile first appeared on Baeldung on Linux. Related Stories How to Identify the Package Manager of a Linux System Background Jobs in a Loop in Bash Executing Commands in Gnuplot through Shell Script

## Adding Tailwind CSS to a Hugo blog

DevFeed: [Adding Tailwind CSS to a Hugo blog](<https://devfeed.tech/articles/adding-tailwind-css-to-a-hugo-blog-25341.md>)

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

Author: Kaushik Gopal

Published: 2024-07-05T18:36:23Z

Content type: tutorial

Language: en

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

Topics: [Tailwind CSS](<https://devfeed.tech/topics/tailwind.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [CSS](<https://devfeed.tech/topics/css.md>), [make](<https://devfeed.tech/topics/make.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [cli](<https://devfeed.tech/tags/cli.md>), [css](<https://devfeed.tech/tags/css.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [installation](<https://devfeed.tech/tags/installation.md>), [make](<https://devfeed.tech/tags/make.md>), [npm](<https://devfeed.tech/tags/npm.md>), [tailwind](<https://devfeed.tech/tags/tailwind.md>)

### AI overview

A tutorial showing how to add Tailwind CSS v4 to a Hugo site using Tailwind CLI, including installation, CSS file setup, development commands, and a Makefile workflow for running or building Hugo and Tailwind together.

### Source excerpt

Updated for Tailwind CSS V4 I veer away from CSS frameworks like Bootstrap because they result in sterilized designs. On a recent side project, I gave Tailwind CSS a try and am now a believer. "Rapidly build modern websites without ever leaving your HTML" makes a lot of sense to me. Case in point: I rebuilt my Hugo theme, Henry, with Tailwind in three days.1 I quite like how it's turned out. Let me show you how to add it to a Hugo theme. This has become even simpler with Tailwind CSS v4. Approach ## I like to keep things as simple as possible. So, it was important for me to use both Hugo & Tailwind as you would independently. I don't use Tailwind as a PostCSS plugin as much of the internet recommends. I prefer Tailwind CLI. Installation ## Let's assume you created your new site with hugo: hugo new site my-blog cd my-blog From this root hugo project directory: # create a package.json file (with default options) npm init -y # install Tailwind CSS as a dependency npm install -D tailwindcss @tailwindcss/cli Let's create the necessary css files for Tailwind to latch on to: mkdir -p my-blog/assets/css touch my-blog/assets/css/input.css touch my-blog/assets/css/theme.css I use the input.css file to help Tailwind wire everything together, and output.css is the final css that Tailwind compiles out. /* input.css */ @import "tailwindcss"; @import "./theme.css"; /* custom css you might want to add as overrides */ That's it! You can now fire up Tailwind & Hugo: # start tailwind npx @tailwindcss/cli \ -i ./assets/css/input.css \ -o ./assets/css/output.css \ --watch # start hugo server hugo server Bonus tip ### Starting Tailwind and Hugo separately in two different shells is a bore. I use a Makefile that conveniently allows me to spin up both processes in parallel. All I have to do when I'm ready to spin up my blog locally is: # runs the default comand which is "run" # it runs both taliwind css & the hugo server in parallel make Sometimes I want to just build the site, not run the

## Improving Shopify App's Performance

DevFeed: [Improving Shopify App's Performance](<https://devfeed.tech/articles/improving-shopify-app-s-performance-1444.md>)

Original publisher: [Read original article](<https://shopify.engineering/improving-shopify-app-s-performance>)

Author: Talha Naqvi

Published: 2024-03-05T20:37:37Z

Content type: article

Language: en

Sources: [Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering.md>), [Shopify Engineering - Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering-shopify-engineering.md>)

Topics: [Shopify](<https://devfeed.tech/topics/shopify.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [make](<https://devfeed.tech/topics/make.md>), [dashboards](<https://devfeed.tech/topics/dashboards.md>), [real-time](<https://devfeed.tech/topics/real-time.md>), [Cache](<https://devfeed.tech/topics/cache.md>), [debug](<https://devfeed.tech/topics/debug.md>)

Tags: [dashboards](<https://devfeed.tech/tags/dashboards.md>), [debug](<https://devfeed.tech/tags/debug.md>), [ecosystem](<https://devfeed.tech/tags/ecosystem.md>), [efficiency](<https://devfeed.tech/tags/efficiency.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [performance](<https://devfeed.tech/tags/performance.md>), [react-native](<https://devfeed.tech/tags/react-native.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [shopify](<https://devfeed.tech/tags/shopify.md>), [speed](<https://devfeed.tech/tags/speed.md>)

### AI overview

Shopify describes improving the performance of its mobile app after performance declined during its migration to React Native. The team set targets for screen-load and launch times, built real-time performance dashboards, and investigated bottlenecks involving work timing, unnecessary work, rendering, and cache usage.

### Source excerpt

As an integral part of Shopify's ecosystem, our mobile app serves millions of merchants around the world every single day. It allows them to run their business from anywhere and offers vital insights about store performance, analytics, orders, and more. Given its high-engagement nature, users frequently return to it, underscoring the importance of speed and efficiency. At the beginning of 2023, we noticed that our app's performance had decreased since we started migrating to React Native.

## Using Makefiles for software builds, Postfix map generation, and project workflows

DevFeed: [Using Makefiles for software builds, Postfix map generation, and project workflows](<https://devfeed.tech/articles/how-i-stopped-worrying-and-loved-makefiles-27697.md>)

Original publisher: [Read original article](<https://gagor.pro/2024/02/how-i-stopped-worrying-and-loved-makefiles/>)

Author: Tom

Published: 2024-02-16T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [make](<https://devfeed.tech/topics/make.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [Terraform](<https://devfeed.tech/topics/terraform.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [build](<https://devfeed.tech/tags/build.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [devops](<https://devfeed.tech/tags/devops.md>), [devops-best-practices](<https://devfeed.tech/tags/devops-best-practices.md>), [environment-management](<https://devfeed.tech/tags/environment-management.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [hugo-static-site-generation](<https://devfeed.tech/tags/hugo-static-site-generation.md>), [learn](<https://devfeed.tech/tags/learn.md>), [linux](<https://devfeed.tech/tags/linux.md>), [macos](<https://devfeed.tech/tags/macos.md>), [make](<https://devfeed.tech/tags/make.md>), [makefile-for-hugo](<https://devfeed.tech/tags/makefile-for-hugo.md>), [makefile-for-terraform](<https://devfeed.tech/tags/makefile-for-terraform.md>), [parallel](<https://devfeed.tech/tags/parallel.md>), [terraform](<https://devfeed.tech/tags/terraform.md>), [terraform-automation](<https://devfeed.tech/tags/terraform-automation.md>)

### AI overview

This tutorial explains how GNU Make manages dependencies, detects changed files, sets variables, and runs tasks in parallel. It also shows a Postfix use case for regenerating map files and alias databases from configuration files.

### Source excerpt

Learn how to use Makefiles to streamline your Terraform and Hugo projects, making environment management and static site generation more efficient.

## Replacing a Kotlin HashMap with Generated Code for Screen-Team Lookups

DevFeed: [Replacing a Kotlin HashMap with Generated Code for Screen-Team Lookups](<https://devfeed.tech/articles/a-weirder-hashmap-25617.md>)

Original publisher: [Read original article](<https://blog.p-y.wtf/a-weirder-hashmap>)

Author: Pierre-Yves Ricau

Published: 2024-02-15T03:59:18Z

Content type: tutorial

Language: en

Sources: [Py's blog](<https://devfeed.tech/sources/py-s-blog.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [make](<https://devfeed.tech/topics/make.md>), [Code](<https://devfeed.tech/topics/code.md>), [modules](<https://devfeed.tech/topics/modules.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [build-tool](<https://devfeed.tech/tags/build-tool.md>), [code](<https://devfeed.tech/tags/code.md>), [internals](<https://devfeed.tech/tags/internals.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-compiler](<https://devfeed.tech/tags/kotlin-compiler.md>), [memory](<https://devfeed.tech/tags/memory.md>), [modules](<https://devfeed.tech/tags/modules.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [performance](<https://devfeed.tech/tags/performance.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

The article explores replacing a Kotlin map of roughly 1,000 screen classes and owner teams with generated code. It estimates the map's retained size at about 120 KB and considers a hash-based, code-generated lookup to reduce that memory use.

### Source excerpt

Today I was mob programming with Square's Mobile & Performance Reliability team and we toyed with an interesting idea. Our codebase has classes that represent screens a user can navigate to. These classes are defined in modules, and these modules hav...

## My pre-commit config for Hugo blog

DevFeed: [My pre-commit config for Hugo blog](<https://devfeed.tech/articles/my-pre-commit-config-for-hugo-blog-27692.md>)

Original publisher: [Read original article](<https://gagor.pro/2024/01/my-pre-commit-config-for-hugo-blog/>)

Author: Tom

Published: 2024-01-29T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [hooks](<https://devfeed.tech/topics/hooks.md>), [Hugo](<https://devfeed.tech/topics/hugo.md>), [Git](<https://devfeed.tech/topics/git.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [make](<https://devfeed.tech/topics/make.md>)

Tags: [bash](<https://devfeed.tech/tags/bash.md>), [config](<https://devfeed.tech/tags/config.md>), [devops](<https://devfeed.tech/tags/devops.md>), [git](<https://devfeed.tech/tags/git.md>), [git-pre-commit-configuration](<https://devfeed.tech/tags/git-pre-commit-configuration.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [hugo](<https://devfeed.tech/tags/hugo.md>), [hugo-blog-automation](<https://devfeed.tech/tags/hugo-blog-automation.md>), [hugo-development-tips](<https://devfeed.tech/tags/hugo-development-tips.md>), [linux](<https://devfeed.tech/tags/linux.md>), [macos](<https://devfeed.tech/tags/macos.md>), [make](<https://devfeed.tech/tags/make.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [pre-commit](<https://devfeed.tech/tags/pre-commit.md>), [pre-commit-hooks](<https://devfeed.tech/tags/pre-commit-hooks.md>), [pre-commit-setup](<https://devfeed.tech/tags/pre-commit-setup.md>), [static-site-optimization](<https://devfeed.tech/tags/static-site-optimization.md>)

### AI overview

A tutorial showing how to configure pre-commit hooks for a Hugo blog. The configuration automates linting, syntax checks, file optimization, and related cleanup tasks when files are committed.

### Source excerpt

Learn how to set up and use pre-commit hooks to automate tasks like linting, syntax checks, and optimizations for your Hugo blog.

## GNU/Hurd development updates from Q4 2023

DevFeed: [GNU/Hurd development updates from Q4 2023](<https://devfeed.tech/articles/2023-q4-32743.md>)

Original publisher: [Read original article](<http://www.gnu.org/software/hurd/news/2023-q4.html>)

Published: 2024-01-05T22:22:00Z

Content type: news

Language: en

Sources: [GNU Hurd](<https://devfeed.tech/sources/gnu-hurd.md>)

Topics: [gcc](<https://devfeed.tech/topics/gcc.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [qemu](<https://devfeed.tech/topics/qemu.md>), [x86](<https://devfeed.tech/topics/x86.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [make](<https://devfeed.tech/topics/make.md>)

Tags: [continuous-integration](<https://devfeed.tech/tags/continuous-integration.md>), [gcc](<https://devfeed.tech/tags/gcc.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [linux](<https://devfeed.tech/tags/linux.md>), [make](<https://devfeed.tech/tags/make.md>), [qemu](<https://devfeed.tech/tags/qemu.md>), [testing](<https://devfeed.tech/tags/testing.md>), [x86](<https://devfeed.tech/tags/x86.md>)

### AI overview

A quarterly update on GNU/Hurd development describes GCC and GNU Mach improvements, proposed continuous integration, expanded testing across environments, x86_64 build infrastructure, IPC changes, and efforts to improve browser support.

### Source excerpt

Hello! Welcome to a new qoth. This qoth covers new and interesting GNU/Hurd developments in Q4 of 2023! Details. Samuel Thibault fixed gcc's Hurd's default pie and added static pie support. He also added a whatis command to GNU Mach's kernel debugger, which can determine what an address points to (a stack? a port? some kalloc? ...). He also added hurd-amd64 support to GCC. Samuel requested that the Hurd team set up a continuous integration, so that when developers make code changes, they can be certain that they did not break anything. It turns out that the Hurd supports several different environments: 32 bit, 64 bit, 32-on-64 bit, ACPI, non-ACPI, SMP, non-SMP, Xen, etc. Apparently Flavio has a personal CI, but it is set up in a Debian independent way. If you are interested in helping the Hurd project set up a CI, then please get in touch! Luca Dariz worked on adding some simple GNU Mach user-space tests . With a working MiG, a GNU/Linux machine can run make check in the GNU Mach source code, which will launch qemu to ensure that 32 bit (PAE and non PAE), 32 on 64 bit, and full 64 bit GNU Mach works. We currently do this testing on GNU/Linux, because qemu does not run on the Hurd. Many people worked on the Hurd's new x86_64 bit support. A 64-bit debian buildd is set up, and we can bootstrap a chroot! The hurd-amd64 wanna-build infrastructure is also set up. We are having issues reliably building packages on a 64-bit Hurd, which lead Samuel to uncover and fix a proc leak. Flavio Cruz improved GNU Mach's IPC by reordering mach_msg_type_t fields to byte align msgt_name and msgt_size. He also created a patch series to avoid message resizing for x86_64. He also removed untyped mach RPC code. GNU Mach uses typed IPC. The Hurd could support both typed and untyped, but it appears that the Hurd only uses typed RPC. So it seems best to remove any untyped RPC code. Sergey Bugaev added GNU Mach entry re-coalescing support. Essentially, Mach was not always able to merge two vm e

## Getting started with Trino and SQL

DevFeed: [Getting started with Trino and SQL](<https://devfeed.tech/articles/getting-started-with-trino-and-sql-8738.md>)

Original publisher: [Read original article](<https://trino.io/blog/2023/10/18/sql-training-1.html>)

Author: Manfred Moser

Published: 2023-10-18T00:00:00Z

Content type: article

Language: en

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

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [make](<https://devfeed.tech/topics/make.md>)

Tags: [getting-started](<https://devfeed.tech/tags/getting-started.md>), [guide](<https://devfeed.tech/tags/guide.md>), [learn](<https://devfeed.tech/tags/learn.md>), [learning](<https://devfeed.tech/tags/learning.md>), [overview](<https://devfeed.tech/tags/overview.md>), [resources](<https://devfeed.tech/tags/resources.md>), [series](<https://devfeed.tech/tags/series.md>), [sql](<https://devfeed.tech/tags/sql.md>), [youtube](<https://devfeed.tech/tags/youtube.md>)

### AI overview

This article introduces the first episode of a training series on learning SQL with Trino. It covers Trino and SQL concepts, basic SQL, a recorded session, timestamps, slide decks, and other learning resources.

### Source excerpt

In our training series Learning SQL with Trino from the experts Martin Traverso, Dain Sundstrom, David Phillips, and myself will run through the wide range of SQL support and features of Trino with our audience. In the first episode, we covered the concepts of Trino and SQL, and then started to learn some basic SQL. Now you can take advantage of the recording and available resources to learn at your own pace.

## Automating customer usage alerts with Tinybird and Make

DevFeed: [Automating customer usage alerts with Tinybird and Make](<https://devfeed.tech/articles/automating-customer-usage-alerts-with-tinybird-and-make-18388.md>)

Original publisher: [Read original article](<https://www.tinybird.co/blog/automating-customer-usage-alerts-with-tinybird-and-make>)

Author: David Margulies

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

Content type: tutorial

Language: en

Sources: [Tinybird](<https://devfeed.tech/sources/tinybird.md>)

Topics: [make](<https://devfeed.tech/topics/make.md>), [Automation](<https://devfeed.tech/topics/automation.md>), [Low code](<https://devfeed.tech/topics/low-code.md>)

Tags: [automation](<https://devfeed.tech/tags/automation.md>), [customer](<https://devfeed.tech/tags/customer.md>), [i-built-this](<https://devfeed.tech/tags/i-built-this.md>), [low-code](<https://devfeed.tech/tags/low-code.md>), [make](<https://devfeed.tech/tags/make.md>)

### AI overview

The article describes using low-code analytics and automation with Tinybird and Make to help a team become more proactive about customer usage alerts.

### Source excerpt

Here's how I used "low-code" analytics and automation to help my team be more proactive.

## Using Makefiles to Simplify Command-Line Test Workflows

DevFeed: [Using Makefiles to Simplify Command-Line Test Workflows](<https://devfeed.tech/articles/readme-as-code-34122.md>)

Original publisher: [Read original article](<https://artandscienceofcoding.com/science/readme-as-code/>)

Author: Derek Lee

Published: 2022-02-19T05:00:00Z

Content type: tutorial

Language: en

Sources: [art and science of coding](<https://devfeed.tech/sources/art-and-science-of-coding.md>)

Topics: [make](<https://devfeed.tech/topics/make.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [test](<https://devfeed.tech/topics/test.md>), [unit tests](<https://devfeed.tech/topics/unit-tests.md>), [ci](<https://devfeed.tech/topics/ci.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>)

Tags: [automation](<https://devfeed.tech/tags/automation.md>), [ci](<https://devfeed.tech/tags/ci.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [communication](<https://devfeed.tech/tags/communication.md>), [discoverability](<https://devfeed.tech/tags/discoverability.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [ios](<https://devfeed.tech/tags/ios.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [make](<https://devfeed.tech/tags/make.md>), [science](<https://devfeed.tech/tags/science.md>), [simplicity](<https://devfeed.tech/tags/simplicity.md>), [test](<https://devfeed.tech/tags/test.md>), [unit-tests](<https://devfeed.tech/tags/unit-tests.md>)

### AI overview

This tutorial argues for using Makefiles to simplify and standardize command-line test execution across projects. It contrasts Makefiles with Fastlane and shell scripts, and begins an iOS example using Make targets to run an Xcode test suite.

### Source excerpt

I make a point of always running the test suite (at least the fastest of the bunch: the unit tests) from the command line before pushing code to CI to confirm that all has gone smoothly.

## Video Stabilization with \`ffmpeg\` and \`VidStab\`

DevFeed: [Video Stabilization with \`ffmpeg\` and \`VidStab\`](<https://devfeed.tech/articles/video-stabilization-with-ffmpeg-and-vidstab-21682.md>)

Original publisher: [Read original article](<https://paulirish.com/2021/video-stabilization-with-ffmpeg-and-vidstab/>)

Author: Paul Irish

Published: 2021-04-30T18:33:00Z

Content type: tutorial

Language: en

Sources: [Paul Irish](<https://devfeed.tech/sources/paul-irish.md>)

Topics: [FFmpeg (Fast Forward Moving Picture Experts Group)](<https://devfeed.tech/topics/ffmpeg.md>), [Homebrew](<https://devfeed.tech/topics/homebrew.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [make](<https://devfeed.tech/topics/make.md>)

Tags: [commands](<https://devfeed.tech/tags/commands.md>), [comparison](<https://devfeed.tech/tags/comparison.md>), [diy](<https://devfeed.tech/tags/diy.md>), [ffmpeg](<https://devfeed.tech/tags/ffmpeg.md>), [guide](<https://devfeed.tech/tags/guide.md>), [install](<https://devfeed.tech/tags/install.md>), [installation](<https://devfeed.tech/tags/installation.md>), [linux](<https://devfeed.tech/tags/linux.md>), [mac](<https://devfeed.tech/tags/mac.md>), [mac-os](<https://devfeed.tech/tags/mac-os.md>), [make](<https://devfeed.tech/tags/make.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

A practical guide to stabilizing video with FFmpeg and VidStab. It covers installation on Mac OS and Linux, the two-pass detection and transformation workflow, and commands for creating vertically stacked or side-by-side comparison videos.

### Source excerpt

Way back in Dec 2015, @maxogden wrote a nice guide on stabilizing your own video with ffmpeg. I return to it on occasion and have updated my gist comment to offer some updated commands. Since enough has changed regarding installation and use, I figure a new, spiffy, and working guide deserves a non-gist home. Presenting the 2021-era guide to pretty easy DIY video stabilization! On Mac OS, install ffmpeg and vidstab from homebrew: 1 2 brew install ffmpeg brew install libvidstab On linux, you can sudo make install. Run stabilization in two passes There are plenty of options for libvidstab, like shakiness, accuracy, smoothing. The defaults are good, but you may want to experiment. There's even a visual diagnostic mode. Assuming the source video is named clip.mkv... 1 2 3 4 5 6 # The first pass ('detect') generates stabilization data and saves to `transforms.trf` # The `-f null -` tells ffmpeg there's no output video file ffmpeg -i clip.mkv -vf vidstabdetect -f null - # The second pass ('transform') uses the .trf and creates the new stabilized video. ffmpeg -i clip.mkv -vf vidstabtransform clip-stabilized.mkv You now have a clip-stabilized.mkv! Bonus: create a comparison video Use the vstack or hstack filter, depending on if you want them stacked vertically or side-by-side: 1 2 3 4 5 # vertically stacked ffmpeg -i clip.mkv -i clip-stabilized.mkv -filter_complex vstack clips-stacked.mkv # side-by-side ffmpeg -i clip.mkv -i clip-stabilized.mkv -filter_complex hstack clips-sxs.mkv Double bonus: A two-liner that does everything (because repeating these filenames gets annoying) 1 2 export vid="sourcevid.mkv" ffmpeg -i "$vid" -vf vidstabdetect -f null -; ffmpeg -i "$vid" -vf vidstabtransform "$vid.stab.mkv"; ffmpeg -i "$vid" -i "$vid.stab.mkv" -filter_complex vstack "$vid.stacked.mkv"

## Using Make & Makefiles to Automate your Frontend Workflow

DevFeed: [Using Make & Makefiles to Automate your Frontend Workflow](<https://devfeed.tech/articles/using-make-makefiles-to-automate-your-frontend-workflow-31313.md>)

Original publisher: [Read original article](<https://nystudio107.com/blog/using-make-makefiles-to-automate-your-frontend-workflow>)

Author: andrew@nystudio107.com (Andrew Welch)

Published: 2021-04-11T20:13: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: [make](<https://devfeed.tech/topics/make.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [Automation](<https://devfeed.tech/topics/automation.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [automate](<https://devfeed.tech/tags/automate.md>), [automation](<https://devfeed.tech/tags/automation.md>), [build](<https://devfeed.tech/tags/build.md>), [cli](<https://devfeed.tech/tags/cli.md>), [decades](<https://devfeed.tech/tags/decades.md>), [development](<https://devfeed.tech/tags/development.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [insights](<https://devfeed.tech/tags/insights.md>), [learn](<https://devfeed.tech/tags/learn.md>), [leverage](<https://devfeed.tech/tags/leverage.md>), [make](<https://devfeed.tech/tags/make.md>), [software](<https://devfeed.tech/tags/software.md>), [that-s](<https://devfeed.tech/tags/that-s.md>), [tool](<https://devfeed.tech/tags/tool.md>), [used](<https://devfeed.tech/tags/used.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

### AI overview

A tutorial on using GNU Make and Makefiles to automate frontend web development. It explains how Make can provide a consistent project-specific CLI, hide underlying tooling, and simplify commands for development, builds, cleanup, and documentation.

### Source excerpt

Make is a build automation tool that's been used for decades to build software. Learn how you can leverage make to automate frontend web development

## Introducing Codename One 7.0 (AKA Video)

DevFeed: [Introducing Codename One 7.0 (AKA Video)](<https://devfeed.tech/articles/introducing-codename-one-7-0-aka-video-19335.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/introducing-codename-one-7-0-aka-video/>)

Author: Shai Almog

Published: 2021-02-05T00:00:00Z

Content type: release

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [WebRTC](<https://devfeed.tech/topics/webrtc.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Web APIs](<https://devfeed.tech/topics/web-apis.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Single sign-on (SSO)](<https://devfeed.tech/topics/sso.md>), [OAuth](<https://devfeed.tech/topics/oauth.md>), [make](<https://devfeed.tech/topics/make.md>)

Tags: [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [make](<https://devfeed.tech/tags/make.md>), [oauth](<https://devfeed.tech/tags/oauth.md>), [release](<https://devfeed.tech/tags/release.md>), [sso](<https://devfeed.tech/tags/sso.md>), [web-apis](<https://devfeed.tech/tags/web-apis.md>), [webrtc](<https://devfeed.tech/tags/webrtc.md>)

### AI overview

This release announcement introduces Codename One 7.0, highlighting cross-platform WebRTC support, a new build app, CEF migration, CodeRAD, website and SSO changes, and several smaller improvements. It also outlines plans for more open architectures and Maven migration in Codename One 8.

### Source excerpt

We're thrilled to announce the immediate availability of Codename One 7.0 (AKA Video). This has been our most challenging release to date. We constantly shifted the release date due to constantly shifting requirements and pivotal changes. Highlights of this Release Here are the highlights of Codename One 7.0 WebRTC Support This is probably one of the biggest challenges we took to date. We now have one of the best cross platform WebRTC implementations. This took a lot of work and proved to be a huge challenge in every single platform.

## October 2020 round-up

DevFeed: [October 2020 round-up](<https://devfeed.tech/articles/october-2020-round-up-32466.md>)

Original publisher: [Read original article](<https://mobile.nixos.org/news/2020-11-03-october-round-up.html>)

Author: Samuel Dionne-Riel

Published: 2020-11-03T00:00:00Z

Content type: news

Language: en

Sources: [Mobile NixOS news](<https://devfeed.tech/sources/mobile-nixos-news.md>)

Topics: [Kernel](<https://devfeed.tech/topics/kernel.md>), [kernel-builder](<https://devfeed.tech/topics/kernel-builder.md>), [make](<https://devfeed.tech/topics/make.md>), [systemd](<https://devfeed.tech/topics/systemd.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [devices](<https://devfeed.tech/tags/devices.md>), [improvements](<https://devfeed.tech/tags/improvements.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [kernel-builder](<https://devfeed.tech/tags/kernel-builder.md>), [make](<https://devfeed.tech/tags/make.md>), [systemd](<https://devfeed.tech/tags/systemd.md>)

### AI overview

The October 2020 Mobile NixOS project update covers merged changes including redesigned kernel-builder ergonomics, compiling kernels once for some devices, and improved PinePhone modem integration through a systemd service. LTE data support was verified, while calls and SMS remained planned for later testing.

### Source excerpt

This update is the eleventh in a series of regular updates on the state of the project. Only changes that have been accepted and merged in Mobile NixOS are chronicled here. There's always more work currently in-progress. Notable changes During the month 14 pull requests were merged. Some interesting changes were made during the month, let's look at some of them. Re-done kernel builder ergonomics The goal of this change is to make the kernel derivations as lean as possible, relying on the builder, rather than relying on copy-pasting common patterns around. This is a change that was needed since the project was started. Though, it could not have happened much earlier than this late in the project. This is because multiple different quirky kernels needed to exist to properly show what needed to be abstracted. With this, all common patterns for quirks have been identified and put behind flags. Those flags are described in Notes about the kernel builder. End-users shouldn't see any difference, this will help people who make ports. Compile kernels only once While testing the previous change, it was observed by @danielfullmer that kernel compilation happened twice for some devices. This was not a regression. Though looking at things trying to find problems you are bound to see the existing flaws! This was worked around by doing everything in one make invocation. The end-result is that some kernel builds will finish twice as quickly! Pinephone Modem support improvements Simply put, the modem has been verified to work with LTE data. With that said, there's more to it. End-users shouldn't have to care about a deeply-rooted /sys fs path to turn the modem off or on. This is why the modem-control service has been added. It mirrors the modem's state using bindsTo and wantedBy. With this service, the modem is better integrated with systemd, but more importantly the user can stop and start it using systemctl, rather than to dig for a particular less user-friendly path. Calls and SM

## Cross-compiling with musl Toolchains

DevFeed: [Cross-compiling with musl Toolchains](<https://devfeed.tech/articles/cross-compiling-with-musl-toolchains-27450.md>)

Original publisher: [Read original article](<https://ariya.io/2020/06/cross-compiling-with-musl-toolchains/>)

Published: 2020-06-22T12:37:59Z

Content type: tutorial

Language: en

Sources: [Ariya Hidayat](<https://devfeed.tech/sources/ariya-hidayat.md>)

Topics: [Cross-Compilation](<https://devfeed.tech/topics/cross-compilation.md>), [toolchains](<https://devfeed.tech/topics/toolchains.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Zig](<https://devfeed.tech/topics/zig.md>), [C](<https://devfeed.tech/topics/c.md>), [qemu](<https://devfeed.tech/topics/qemu.md>), [ci](<https://devfeed.tech/topics/ci.md>), [make](<https://devfeed.tech/topics/make.md>)

Tags: [c](<https://devfeed.tech/tags/c.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [continuous-integration](<https://devfeed.tech/tags/continuous-integration.md>), [cross-compilation](<https://devfeed.tech/tags/cross-compilation.md>), [docker](<https://devfeed.tech/tags/docker.md>), [linux](<https://devfeed.tech/tags/linux.md>), [make](<https://devfeed.tech/tags/make.md>), [mips](<https://devfeed.tech/tags/mips.md>), [qemu](<https://devfeed.tech/tags/qemu.md>), [toolchains](<https://devfeed.tech/tags/toolchains.md>), [windows](<https://devfeed.tech/tags/windows.md>), [x86](<https://devfeed.tech/tags/x86.md>)

### AI overview

A tutorial on using static musl-based toolchains to cross-compile command-line programs for multiple targets, including MIPS and Windows, from a Linux x86-64 host. It also covers testing non-native binaries with QEMU and migrating FastLZ continuous integration to musl.cc.

### Source excerpt

When working on command-line utilities which can be useful for various platforms, from Windows on x86 to Linux on MIPS, the existence of a cross-compilation is highly attractive. A number of different binaries can be constructed conveniently from a single, typically powerful host system.

## Laravel v6.15.0 released

DevFeed: [Laravel v6.15.0 released](<https://devfeed.tech/articles/laravel-v6-15-0-released-3842.md>)

Original publisher: [Read original article](<https://laravel.com/blog/laravel-v6-15-0-released>)

Author: Laravel Team

Published: 2020-02-11T19:34:00Z

Content type: release

Language: en

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

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

Tags: [github](<https://devfeed.tech/tags/github.md>), [laravel](<https://devfeed.tech/tags/laravel.md>), [make](<https://devfeed.tech/tags/make.md>), [release](<https://devfeed.tech/tags/release.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>)

### AI overview

Laravel v6.15.0 was released on February 11, 2020. The release notes list additions, fixes, and changes involving events, Make support, Artisan tables, migration commands, console traits, CommonMark, and related functionality.

### Source excerpt

Laravel v6.15.0 is released in 2020/02/11, here are the changes we`ve merged into this release.

## Clang on Windows

DevFeed: [Clang on Windows](<https://devfeed.tech/articles/clang-on-windows-27445.md>)

Original publisher: [Read original article](<https://ariya.io/2020/01/clang-on-windows/>)

Published: 2020-01-05T22:46:09Z

Content type: tutorial

Language: en

Sources: [Ariya Hidayat](<https://devfeed.tech/sources/ariya-hidayat.md>)

Topics: [c/c++](<https://devfeed.tech/topics/c-c-plus-plus.md>), [Windows](<https://devfeed.tech/topics/windows.md>), [Package manager](<https://devfeed.tech/topics/package-manager.md>), [make](<https://devfeed.tech/topics/make.md>), [Azure](<https://devfeed.tech/topics/azure.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>)

Tags: [azure](<https://devfeed.tech/tags/azure.md>), [build](<https://devfeed.tech/tags/build.md>), [c](<https://devfeed.tech/tags/c.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [cache](<https://devfeed.tech/tags/cache.md>), [clang](<https://devfeed.tech/tags/clang.md>), [continuous-integration](<https://devfeed.tech/tags/continuous-integration.md>), [make](<https://devfeed.tech/tags/make.md>), [pacman](<https://devfeed.tech/tags/pacman.md>), [windows](<https://devfeed.tech/tags/windows.md>)

### AI overview

A tutorial on using MSYS2 to install and run Clang on Windows for building 32-bit and 64-bit C/C++ applications. It also describes integrating the toolchain with Azure Pipelines and caching downloaded packages.

### Source excerpt

Thanks to the MSYS2 project, now there is an easy way to utilize Clang to build C/C++ application on Windows. This works equally well for both 32-bit and 64-bit programs.

[Next page](<https://devfeed.tech/topics/make.md?cursor=WyIyMDIwLTAxLTA1VDIyOjQ2OjA5KzAwOjAwIiwgIjA4Zjc0Zjg4LTZjODUtNGNlYi04MTM0LTZhMjg3MTUwMzdhMyJd>)