artyom.devhttps://artyom.dev/2022-07-18T20:36:20+00:00Serving web content directly from a ZIP filehttps://artyom.dev/zipserver2022-07-03T14:18:18+00:002022-07-03T21:44:57+00:00The composability of the Go standard library enables some interesting scenarios for serving static assets on the web.Go fonts for the webhttps://artyom.dev/gofontweb2022-07-02T21:31:51+00:002022-07-03T19:38:19+00:00If you like Go fonts and want to have them on your site backed by the go web server, now it's easier than ever.Concurrency Management Pattern in Gohttps://artyom.dev/goroutine-control2022-04-27T10:23:21+00:002022-04-27T18:11:26+00:00In 2014 I posted an answer to a StackOverflow question “Always have x number of goroutines running at any time.” Here I refine my solution with a real-world pattern I rely on to control coordinated goroutine concurrency in Go.Running services on Fargate without giving them public Internet accesshttps://artyom.dev/aws-fargate-no-internet-access2022-04-19T18:47:21+00:002022-04-27T10:14:37+00:00This post enumerates some critical points on running containerized services on AWS Fargate with restricted access to the public Internet.Using monaco editor for HTML form textareahttps://artyom.dev/form-textarea-monaco.md2021-09-02T19:14:47+00:002021-09-02T19:14:47+00:00For one of my personal projects I wanted to have a more convenient way to edit markdown in an HTML form, than the plain text. I ended up with using the Monaco Editor that powers VS Code, as the form editor.How to record a screencast with an overlay from the web camera on macOShttps://artyom.dev/screencast-webcam-overlay.md2021-04-01T15:56:43+00:002021-04-01T15:56:43+00:00It is possible to create a screen recording on macOS with your camera feed overlaid somewhere in the corner without using any third party apps or services like https://www.loom.com.Constructing and Pushing Docker Images without Dockerhttps://artyom.dev/push-docker-image-without-docker.md2021-03-14T15:01:51+00:002021-03-14T15:01:51+00:00Once upon a time, I ran into a particular use case: I wanted to build and push a Docker image without using docker binary or any similar tool.Creating time lapse videos with Raspberry Pi camerahttps://artyom.dev/rpi-timelapse.md2020-05-04T11:19:45+00:002020-05-04T11:19:45+00:00The command below shoots series of photos every 2.5 seconds for 1 hour:How to Notarize Go binary for macOShttps://artyom.dev/notarizing-go-binaries-for-macos.md2020-02-12T15:29:38+00:002020-02-12T15:29:38+00:00Starting with macOS Catalina (10.15), Apple requires downloaded binaries to be notarized, or the Gatekeeper service does not allow to run them.How to install WireGuard on Amazon Linux 2https://artyom.dev/amazon-linux2-wireguard.md2020-02-05T05:09:29+00:002020-02-05T05:09:29+00:00Amazon Linux 2 doesn't have WireGuard packaged yet, nevertheless, installing it is possible: the official install page lists this resource as location for Fedora ≤ 31 packages. Among additional repository sources that page lists "Epel for CentOS 7", this is the one working for Amazon Linux 2:How to install OpenVPN on Amazon Linux 2https://artyom.dev/amazon-linux2-openvpn.md2020-01-15T17:38:42+00:002020-01-15T17:38:42+00:00To install OpenVPN on Amazon Linux 2 from packages, first enable epel repository topic:How to make a Go program print its own versionhttps://artyom.dev/go-program-version.md2019-07-16T10:52:41+00:002022-04-25T20:49:31+00:00Since version 1.12 Go includes runtime/debug.BuildInfo type which represents build information read from the running binary.How to use s3 select in AWS SDK for Gohttps://artyom.dev/s3-select.md2019-06-26T20:38:56+00:002022-04-25T20:48:08+00:00Consider that you have some compressed JSON data stored in an s3 bucket, for example, an event log — stream of JSON objects, one per line. You may, at some point, need to select a subset of such records based on their attribute.Evolution of main.go filehttps://artyom.dev/maingo.md2019-06-26T20:38:56+00:002022-06-07T20:50:58+00:00I happen to write a lot of command line tools in Go. Below are few useful strategies I came up over time.Migrating to ZSH from Bashhttps://artyom.dev/zsh.md2019-06-26T20:38:56+00:002022-07-18T20:32:23+00:00Recent news that upcoming macOS 10.15 will use zsh as its default shell nudged me once again to look at it. I thought about giving ZSH a chance few times in the past, but was always intimidated by the prospect of migrating an already convenient bash setup to it, also dominating use of oh-my-zsh across my friends and coworkers gave an impression that zsh is impossible to use without such monstrous extensions.