# Back End - Austin Gil

Riding bikes, writing poetry, righting software

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

## How to Use User Location in Applications and Assess Its Limitations

DevFeed: [How to Use User Location in Applications and Assess Its Limitations](<https://devfeed.tech/articles/the-cake-user-location-is-a-lie-17715.md>)

Original publisher: [Read original article](<https://austingil.com/user-location-is-a-lie/>)

Author: Austin

Published: 2024-07-25T14:10:28Z

Content type: article

Language: en

Sources: [Back End - Austin Gil](<https://devfeed.tech/sources/back-end-austin-gil.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [back-end](<https://devfeed.tech/tags/back-end.md>), [business-logic](<https://devfeed.tech/tags/business-logic.md>), [coding](<https://devfeed.tech/tags/coding.md>), [compliance](<https://devfeed.tech/tags/compliance.md>), [development](<https://devfeed.tech/tags/development.md>), [edge-compute](<https://devfeed.tech/tags/edge-compute.md>), [front-end](<https://devfeed.tech/tags/front-end.md>), [geolocation](<https://devfeed.tech/tags/geolocation.md>), [html](<https://devfeed.tech/tags/html.md>), [ip](<https://devfeed.tech/tags/ip.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [js](<https://devfeed.tech/tags/js.md>), [location](<https://devfeed.tech/tags/location.md>), [location-based](<https://devfeed.tech/tags/location-based.md>), [privacy](<https://devfeed.tech/tags/privacy.md>), [programming](<https://devfeed.tech/tags/programming.md>), [software](<https://devfeed.tech/tags/software.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

This article examines location-based programming, including use cases such as regional language, currency, store locators, weather data, and geofencing. It distinguishes user-experience, application-logic, and policy or compliance concerns, then discusses four ways to obtain location: user reporting, device heuristics, IP address, and edge compute.

### Source excerpt

A post discussing the nuances around location-based programming. Various ways to access user location, how they can fail, and what to do about it.

## AI for Web Devs: Faster Responses with HTTP Streaming

DevFeed: [AI for Web Devs: Faster Responses with HTTP Streaming](<https://devfeed.tech/articles/ai-for-web-devs-faster-responses-with-http-streaming-17708.md>)

Original publisher: [Read original article](<https://austingil.com/ai-for-web-devs-streaming/>)

Author: Austin

Published: 2023-10-24T19:51:38Z

Content type: tutorial

Language: en

Sources: [Back End - Austin Gil](<https://devfeed.tech/sources/back-end-austin-gil.md>)

Topics: [Streaming](<https://devfeed.tech/topics/streaming.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [Qwik](<https://devfeed.tech/topics/qwik.md>), [web applications](<https://devfeed.tech/topics/web-applications.md>), [OpenAI](<https://devfeed.tech/topics/openai.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [back-end](<https://devfeed.tech/tags/back-end.md>), [coding](<https://devfeed.tech/tags/coding.md>), [development](<https://devfeed.tech/tags/development.md>), [front-end](<https://devfeed.tech/tags/front-end.md>), [http](<https://devfeed.tech/tags/http.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [js](<https://devfeed.tech/tags/js.md>), [openai](<https://devfeed.tech/tags/openai.md>), [programming](<https://devfeed.tech/tags/programming.md>), [qwik](<https://devfeed.tech/tags/qwik.md>), [software](<https://devfeed.tech/tags/software.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [web](<https://devfeed.tech/tags/web.md>), [web-applications](<https://devfeed.tech/tags/web-applications.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

This tutorial explains how to add HTTP streaming to an AI-powered Qwik application. It discusses the limitations of Qwik route actions for standard streaming and uses middleware and a standard Response object to support incremental responses.

### Source excerpt

Adding HTTP streaming to AI applications can improve perceived performance. This post covers the server side and client side requirements.

## AI for Web Devs: Your First API Request to OpenAI

DevFeed: [AI for Web Devs: Your First API Request to OpenAI](<https://devfeed.tech/articles/ai-for-web-devs-your-first-api-request-to-openai-17706.md>)

Original publisher: [Read original article](<https://austingil.com/ai-for-web-devs-first-http-request/>)

Author: Austin

Published: 2023-09-19T11:53:28Z

Content type: tutorial

Language: en

Sources: [Back End - Austin Gil](<https://devfeed.tech/sources/back-end-austin-gil.md>)

Topics: [OpenAI](<https://devfeed.tech/topics/openai.md>), [Qwik](<https://devfeed.tech/topics/qwik.md>), [API](<https://devfeed.tech/topics/api.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [API keys](<https://devfeed.tech/topics/api-keys.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [api](<https://devfeed.tech/tags/api.md>), [api-keys](<https://devfeed.tech/tags/api-keys.md>), [artificial-intelligence](<https://devfeed.tech/tags/artificial-intelligence.md>), [back-end](<https://devfeed.tech/tags/back-end.md>), [coding](<https://devfeed.tech/tags/coding.md>), [development](<https://devfeed.tech/tags/development.md>), [front-end](<https://devfeed.tech/tags/front-end.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [html](<https://devfeed.tech/tags/html.md>), [http](<https://devfeed.tech/tags/http.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [js](<https://devfeed.tech/tags/js.md>), [json](<https://devfeed.tech/tags/json.md>), [openai](<https://devfeed.tech/tags/openai.md>), [programming](<https://devfeed.tech/tags/programming.md>), [qwik](<https://devfeed.tech/tags/qwik.md>), [software](<https://devfeed.tech/tags/software.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

A tutorial on integrating OpenAI API responses into a Qwik web application. It covers generating and protecting API keys, making a chat endpoint request with fetch, handling the JSON response, and beginning an interactive form.

### Source excerpt

Make API request to OpenAI with fetch and Qwik forms, protect API keys with Qwik actions, and hide secrets with environment variables.

## AI for Web Devs: Project Introduction & Setup

DevFeed: [AI for Web Devs: Project Introduction & Setup](<https://devfeed.tech/articles/ai-for-web-devs-project-introduction-setup-17707.md>)

Original publisher: [Read original article](<https://austingil.com/ai-for-web-devs-set-up/>)

Author: Austin

Published: 2023-09-12T14:31:00Z

Content type: tutorial

Language: en

Sources: [Back End - Austin Gil](<https://devfeed.tech/sources/back-end-austin-gil.md>)

Topics: [Qwik](<https://devfeed.tech/topics/qwik.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [OpenAI](<https://devfeed.tech/topics/openai.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Node.js](<https://devfeed.tech/topics/node-js.md>), [npm](<https://devfeed.tech/topics/npm.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [artificial-intelligence](<https://devfeed.tech/tags/artificial-intelligence.md>), [back-end](<https://devfeed.tech/tags/back-end.md>), [coding](<https://devfeed.tech/tags/coding.md>), [development](<https://devfeed.tech/tags/development.md>), [front-end](<https://devfeed.tech/tags/front-end.md>), [html](<https://devfeed.tech/tags/html.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [js](<https://devfeed.tech/tags/js.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [npm](<https://devfeed.tech/tags/npm.md>), [openai](<https://devfeed.tech/tags/openai.md>), [programming](<https://devfeed.tech/tags/programming.md>), [qwik](<https://devfeed.tech/tags/qwik.md>), [software](<https://devfeed.tech/tags/software.md>), [tooling](<https://devfeed.tech/tags/tooling.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

This tutorial series introduction explains how to prepare a Qwik web application for integrating OpenAI AI services. It covers the project goals, prerequisites, required Node.js and npm versions, OpenAI API access, and bootstrapping a Qwik app with the CLI.

### Source excerpt

In this blog post, we start bootstrapping a web development project using Qwik and get things ready to incorporate AI tooling from OpenAI.

## File Upload Security and Malware Protection

DevFeed: [File Upload Security and Malware Protection](<https://devfeed.tech/articles/file-upload-security-and-malware-protection-17709.md>)

Original publisher: [Read original article](<https://austingil.com/file-upload-security-and-malware-protection/>)

Author: Austin

Published: 2023-05-23T14:37:08Z

Content type: tutorial

Language: en

Sources: [Back End - Austin Gil](<https://devfeed.tech/sources/back-end-austin-gil.md>)

Topics: [Security](<https://devfeed.tech/topics/security.md>), [Node.js](<https://devfeed.tech/topics/node-js.md>), [Nuxt.js](<https://devfeed.tech/topics/nuxt.md>)

Tags: [back-end](<https://devfeed.tech/tags/back-end.md>), [coding](<https://devfeed.tech/tags/coding.md>), [development](<https://devfeed.tech/tags/development.md>), [edge-compute](<https://devfeed.tech/tags/edge-compute.md>), [files](<https://devfeed.tech/tags/files.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [malware](<https://devfeed.tech/tags/malware.md>), [malware-protection](<https://devfeed.tech/tags/malware-protection.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [nuxt](<https://devfeed.tech/tags/nuxt.md>), [programming](<https://devfeed.tech/tags/programming.md>), [recommendations](<https://devfeed.tech/tags/recommendations.md>), [security](<https://devfeed.tech/tags/security.md>), [software](<https://devfeed.tech/tags/software.md>), [uploads](<https://devfeed.tech/tags/uploads.md>), [validation](<https://devfeed.tech/tags/validation.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

This tutorial explains how to secure web file uploads using OWASP recommendations. It covers extension validation and malware scanning in an application with a Nuxt.js backend using Node.js request handling.

### Source excerpt

In this article, we implement several of the OWASP recommendations for file upload security. We also dive into malware scanning solutions.

## CDNs: Speed Up Performance by Reducing Latency

DevFeed: [CDNs: Speed Up Performance by Reducing Latency](<https://devfeed.tech/articles/cdns-speed-up-performance-by-reducing-latency-17710.md>)

Original publisher: [Read original article](<https://austingil.com/file-uploads-cdn/>)

Author: Austin

Published: 2023-05-01T14:57:05Z

Content type: tutorial

Language: en

Sources: [Back End - Austin Gil](<https://devfeed.tech/sources/back-end-austin-gil.md>)

Topics: [Latency](<https://devfeed.tech/topics/latency.md>), [Cache](<https://devfeed.tech/topics/cache.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [cloud-infrastructure](<https://devfeed.tech/topics/cloud-infrastructure.md>), [cloud-computing](<https://devfeed.tech/topics/cloud-computing.md>)

Tags: [akamai](<https://devfeed.tech/tags/akamai.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [back-end](<https://devfeed.tech/tags/back-end.md>), [cache](<https://devfeed.tech/tags/cache.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [cloud-computing](<https://devfeed.tech/tags/cloud-computing.md>), [coding](<https://devfeed.tech/tags/coding.md>), [development](<https://devfeed.tech/tags/development.md>), [latency](<https://devfeed.tech/tags/latency.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [performance](<https://devfeed.tech/tags/performance.md>), [programming](<https://devfeed.tech/tags/programming.md>), [software](<https://devfeed.tech/tags/software.md>), [speed](<https://devfeed.tech/tags/speed.md>), [uploads](<https://devfeed.tech/tags/uploads.md>), [web](<https://devfeed.tech/tags/web.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

This tutorial explains how content delivery networks reduce latency for files stored in object storage. It describes caching copies near users and reports a reduction in one Japan-based request from 1.1 seconds to 0.2 seconds when served through a CDN.

### Source excerpt

This post covers what CDNs are, how they work, and why you need one. I also show you how to connect Akamai CDN to Object Storage.

## Stream File Uploads to S3 Object Storage and Reduce Costs

DevFeed: [Stream File Uploads to S3 Object Storage and Reduce Costs](<https://devfeed.tech/articles/stream-file-uploads-to-s3-object-storage-and-reduce-costs-17714.md>)

Original publisher: [Read original article](<https://austingil.com/upload-to-s3/>)

Author: Austin

Published: 2023-04-07T14:54:17Z

Content type: tutorial

Language: en

Sources: [Back End - Austin Gil](<https://devfeed.tech/sources/back-end-austin-gil.md>)

Topics: [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>), [Node.js](<https://devfeed.tech/topics/node-js.md>), [cloud-infrastructure](<https://devfeed.tech/topics/cloud-infrastructure.md>), [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [back-end](<https://devfeed.tech/tags/back-end.md>), [cloud-computing](<https://devfeed.tech/tags/cloud-computing.md>), [coding](<https://devfeed.tech/tags/coding.md>), [cost](<https://devfeed.tech/tags/cost.md>), [development](<https://devfeed.tech/tags/development.md>), [hosting](<https://devfeed.tech/tags/hosting.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [object-storage](<https://devfeed.tech/tags/object-storage.md>), [programming](<https://devfeed.tech/tags/programming.md>), [s3](<https://devfeed.tech/tags/s3.md>), [software](<https://devfeed.tech/tags/software.md>), [uploads](<https://devfeed.tech/tags/uploads.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

A tutorial on uploading files from a Node.js application to S3-compatible Object Storage. It explains how object storage can centralize uploads, support distributed or serverless architectures, avoid application-server disk limits, and reduce storage costs.

### Source excerpt

Learn how to upload files directly to S3-compatible Object Storage from your Node application to improve availability and reduce costs.

## Handling File Uploads on the Backend in Node.js (& Nuxt)

DevFeed: [Handling File Uploads on the Backend in Node.js (& Nuxt)](<https://devfeed.tech/articles/handling-file-uploads-on-the-backend-in-node-js-nuxt-17711.md>)

Original publisher: [Read original article](<https://austingil.com/file-uploads-in-node/>)

Author: Austin

Published: 2023-03-28T19:23:32Z

Content type: tutorial

Language: en

Sources: [Back End - Austin Gil](<https://devfeed.tech/sources/back-end-austin-gil.md>)

Topics: [Node.js](<https://devfeed.tech/topics/node-js.md>), [Nuxt.js](<https://devfeed.tech/topics/nuxt.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [back-end](<https://devfeed.tech/tags/back-end.md>), [backend](<https://devfeed.tech/tags/backend.md>), [coding](<https://devfeed.tech/tags/coding.md>), [development](<https://devfeed.tech/tags/development.md>), [files](<https://devfeed.tech/tags/files.md>), [guide](<https://devfeed.tech/tags/guide.md>), [http](<https://devfeed.tech/tags/http.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [js](<https://devfeed.tech/tags/js.md>), [node](<https://devfeed.tech/tags/node.md>), [node-js](<https://devfeed.tech/tags/node-js.md>), [nuxt](<https://devfeed.tech/tags/nuxt.md>), [programming](<https://devfeed.tech/tags/programming.md>), [software](<https://devfeed.tech/tags/software.md>), [streams](<https://devfeed.tech/tags/streams.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [uploads](<https://devfeed.tech/tags/uploads.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

A tutorial on handling file uploads on the backend with Node.js and Nuxt.js. It explains how uploaded request data is received as chunks and streams, and introduces approaches for processing and saving the files.

### Source excerpt

Learn about the low-level concepts for dealing with multipart/form-data in Node.js and how to save file uploads to disk with a high-level solution.

## Conditional API Responses For JavaScript vs. HTML Forms

DevFeed: [Conditional API Responses For JavaScript vs. HTML Forms](<https://devfeed.tech/articles/conditional-api-responses-for-javascript-vs-html-forms-17712.md>)

Original publisher: [Read original article](<https://austingil.com/http-javascript-vs-html/>)

Author: Austin

Published: 2023-01-03T15:31:38Z

Content type: tutorial

Language: en

Sources: [Back End - Austin Gil](<https://devfeed.tech/sources/back-end-austin-gil.md>)

Topics: [Nuxt.js](<https://devfeed.tech/topics/nuxt.md>), [API](<https://devfeed.tech/topics/api.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Forms](<https://devfeed.tech/topics/forms.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [back-end](<https://devfeed.tech/tags/back-end.md>), [backend](<https://devfeed.tech/tags/backend.md>), [building](<https://devfeed.tech/tags/building.md>), [coding](<https://devfeed.tech/tags/coding.md>), [development](<https://devfeed.tech/tags/development.md>), [edge-compute](<https://devfeed.tech/tags/edge-compute.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [html](<https://devfeed.tech/tags/html.md>), [http](<https://devfeed.tech/tags/http.md>), [idea](<https://devfeed.tech/tags/idea.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [js](<https://devfeed.tech/tags/js.md>), [programming](<https://devfeed.tech/tags/programming.md>), [software](<https://devfeed.tech/tags/software.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

A tutorial on detecting whether an HTTP request came from an HTML form or JavaScript in a Nuxt.js backend API. It explains returning redirects for form submissions and JSON for JavaScript requests, supporting progressive enhancement when JavaScript fails.

### Source excerpt

Learn how to build backend APIs that support progressive enhancement by detecting if a request was submitted with HTML forms or JavaScript.

## Under-Engineered Productivity \> Over-Engineered Distractions

DevFeed: [Under-Engineered Productivity \> Over-Engineered Distractions](<https://devfeed.tech/articles/under-engineered-productivity-over-engineered-distractions-17713.md>)

Original publisher: [Read original article](<https://austingil.com/under-engineered-productivity-over-engineered-distraction/>)

Author: Austin

Published: 2022-10-04T18:13:25Z

Content type: tutorial

Language: en

Sources: [Back End - Austin Gil](<https://devfeed.tech/sources/back-end-austin-gil.md>)

Topics: [WordPress](<https://devfeed.tech/topics/wordpress.md>), [Linode](<https://devfeed.tech/topics/linode.md>), [Server](<https://devfeed.tech/topics/server.md>), [Website](<https://devfeed.tech/topics/website.md>)

Tags: [back-end](<https://devfeed.tech/tags/back-end.md>), [developer](<https://devfeed.tech/tags/developer.md>), [development](<https://devfeed.tech/tags/development.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [linode](<https://devfeed.tech/tags/linode.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [server](<https://devfeed.tech/tags/server.md>), [technical](<https://devfeed.tech/tags/technical.md>), [wordpress](<https://devfeed.tech/tags/wordpress.md>)

### AI overview

The article argues that developers should avoid over-engineering personal blogs when their goal is writing. It demonstrates launching a WordPress website on Linode, including creating a server instance and pointing a DNS A record to its IP address.

### Source excerpt

My tip for personal blogs is to avoid technical distractions. This article shows how to do so by setting up WordPress on Linode with just a few clicks.