The Curious Engineer

All blogs / DevOps / SRE / infrastructure

From Development to Production on Nick Janetakis

nickjanetakis.com

If I'm not building or deploying web apps, then I'm writing about what I've learned along the way. From development to production.

DevOps / SRE / infrastructureLinux / UnixDev tools / editors / IDEs

Posts
612 from 30 May 2023 to 27 Oct 2026
Posting
weekly (50 in the last year)
Kind
personal blog
Feed
https://nickjanetakis.com/atom.xml

2026 41

  1. Docker Captain's Summit in Mexico
  2. Configure Walker So You Can Move It with Your Mouse in niri
  3. Combine Multiple Videos Together with FFmpeg Without Re-Encoding
  4. Replace Docker Access Tokens in GitHub Actions with an OIDC Connection
  5. Lock Your Mouse Cursor to a Specific Monitor with niri
  6. Parse Wildcard Arguments in Bash
  7. The Real Reason I Like niri and Vim
  8. Instantly Scale Your Monitors with niri
  9. Checklist Before Formatting Windows
  10. Using Your Monitor as a Key Light with Bash and a Wallpaper Tool
  11. Getting PagerDuty's Latest vCard with curl and awk
  12. SMART Stats for Your SSD and HDD on Linux, macOS and Windows
  13. How to Back Up PostgreSQL in Docker (Local, S3, and Plakar)
  14. Customize Tumbler's Thumbnail Entries on Arch Linux
  15. Watch Out for Data Loss When Redirecting to a File in a Shell Script
  16. Install Docker on Arch Linux with and Without Docker Desktop
  17. Visually Create Video Clips with mpv, FFmpeg and a Lua Extension
  18. Prevent Kdenlive from Producing Millions of Log Lines on Linux
  19. tmux: Swapping Windows and Rotating Panes
  20. 8 Useful Ways to Configure Your Zsh History
  21. Remap a Second Mod Key in niri's Config Without Extra Tools
  22. Locked Out of Sudo on Arch Linux? Skip the 10 Minute Wait
  23. DotFriedRice: niri / Arch Desktop Environment with Modern CLI Tools
  24. Walking Through a Minimal Arch Linux Set Up with archinstall
  25. Create Bootable Arch USB on Linux / macOS with cat (Rufus on Windows)
  26. Combine Tmux, btop and a GPU Monitoring Tool for System Monitoring
  27. Differentiate Between an Empty or Unset String Variable with Bash — Nick Janetakis
  28. Custom dmenu / fzf Picker to Set Your Timezone with Geolocation — Nick Janetakis
  29. Bash Nameref: Mutate Function Arguments (Pointer-Like Behavior) — Nick Janetakis
  30. Awesome Git Diffs with Delta, fzf and a Little Shell Scripting — Nick Janetakis
  31. Quickly Get Your Local and Public IP Address from the Command Line — Nick Janetakis
  32. A Shell Alias for Getting Outdated Packages in Arch, Debian and macOS — Nick Janetakis
  33. mpv Is the MVP of Video and Image Viewing — Nick Janetakis
  34. Fix Input Device Is Not a TTY with Docker Compose in CI — Nick Janetakis
  35. Using Command Groups to Sort Multiple Commands in a Shell Script — Nick Janetakis
  36. Day to Day Window Management Workflows and Why I Picked niri — Nick Janetakis
  37. Wayland Compatible Annotated Screenshots with slurp, grim and satty — Nick Janetakis
  38. Trigger Your GPG Passphrase and Clear Your Agent's Cache — Nick Janetakis
  39. Screen Sharing with niri, Including Specific Regions with OBS — Nick Janetakis
  40. How Is niri This Good? Live Demo + Config — Nick Janetakis
  41. GPU Memory Allocation Bugs with NVIDIA on Linux and Wayland Adventures — Nick Janetakis

2025 51

  1. Linux Dev / Productivity Environment on Windows with WSL 2 and Docker — Nick Janetakis
  2. Fix Open Terminal Failed Error with tmux — Nick Janetakis
  3. Assign an AHK Global Hotkey to Send Text or Copy It to Your Clipboard — Nick Janetakis
  4. Why Is Video Editing So Bad on Linux Compared to Windows with Camtasia? — Nick Janetakis
  5. Using sed to Print Specific Lines in a File — Nick Janetakis
  6. Docker Captain's Summit in Istanbul — Nick Janetakis
  7. Pipe or Redirect Case Statement Result in a Shell Script — Nick Janetakis
  8. Redirect Multiple Commands or an Entire Script to a File — Nick Janetakis
  9. Bash + Awk + fzf to Manage Arch Packages — Nick Janetakis
  10. Docker Hub Immutable Tags — Nick Janetakis
  11. Get Install Size of a Package with Pacman and Apt — Nick Janetakis
  12. Build Docker Images in a Git Repo but Only Committed Changes — Nick Janetakis
  13. How to Fix Neovim Markdown Preview Failing to Open in WSL 2 — Nick Janetakis
  14. Use git push origin HEAD to Quickly Push the Checked Out Branch — Nick Janetakis
  15. Custom File Type Syntax Highlighting with Neovim — Nick Janetakis
  16. My Neovim / LazyVim Config and Demo — Nick Janetakis
  17. Why I Switched from Vim to Neovim / LazyVim and How I Did It — Nick Janetakis
  18. Prevent Tmux from Starting a Login Shell by Default — Nick Janetakis
  19. CLI Tools That Support Previews, Dry Runs or Non-Destructive Actions — Nick Janetakis
  20. Using a Dedicated Hadolint Config File — Nick Janetakis
  21. Things to Think About When Dockerizing Your App — Nick Janetakis
  22. Modify Lualine in Neovim to Show Word Count and Reading Time — Nick Janetakis
  23. Stage Specific Lines Using Git Add Patch (Edit) — Nick Janetakis
  24. Why I Like Using Docker Compose in Production — Nick Janetakis
  25. Read /proc/net/tcp If ss, nc, netstat, telnet and curl Aren't Installed — Nick Janetakis
  26. Undo, Remove or Revert Specific Git Commits — Nick Janetakis
  27. Search for Emojis Using ripgrep or grep with a Regex — Nick Janetakis
  28. Switching pip to uv in a Dockerized Flask / Django App — Nick Janetakis
  29. Fix Garbled Copied Text with Tmux-Yank in WSL 2 — Nick Janetakis
  30. Networking Basics with Docker Compose — Nick Janetakis
  31. How to Find Your WSL 2 Profile ID (GUID) — Nick Janetakis
  32. Your OS' Keyboard Repeat Delay and Rate Settings Are Worth Changing — Nick Janetakis
  33. Switching VcXsrv for WSLg to Get Clipboard Sharing in WSL 2 — Nick Janetakis
  34. Add ANSI Colors to Your Shell Scripts Using echo, printf and heredocs — Nick Janetakis
  35. Converting My 500+ Page Blog from Jekyll to Hugo — Nick Janetakis
  36. Hooking Up fzf with zsh Tab Complete and Filtering Related History — Nick Janetakis
  37. Running Commands in All tmux Sessions, Windows and Panes — Nick Janetakis
  38. Shrink Your Docker Images by ~50% with Multi-Stage Builds — Nick Janetakis
  39. Capitalize the First Letter in a String or Make It Lowercase in Bash — Nick Janetakis
  40. Put All of Your Tmux Configs and Plugins in a .config/tmux Directory — Nick Janetakis
  41. Using Extended Globbing for Patterns in Bash — Nick Janetakis
  42. 3 Ways to Get a File's Extension When Writing a Shell Script — Nick Janetakis
  43. Insert Text Above / Below a Match with sed — Nick Janetakis
  44. git diff Can Be Used Outside of a Git Repo and It Has Useful Features — Nick Janetakis
  45. Processing Lines of Output in a Loop with Your Shell Can Be Slow — Nick Janetakis
  46. Plutus Is a Command Line Income and Expense Tracker — Nick Janetakis
  47. Docker Tip #102: Tracing a Docker Image's Dockerfile — Nick Janetakis
  48. Combine grep and sed to Recursively Replace Text in a Pattern of Files — Nick Janetakis
  49. Only Return the First Match with Grep — Nick Janetakis
  50. Find and Replace Strings with Bash — Nick Janetakis
  51. Disable Your Keyboard So You Can Clean It — Nick Janetakis

2024 53

  1. Undo Git Commit Amend So You Can Make a Separate Commit — Nick Janetakis
  2. Check If Files Are Modified or Untracked Using git ls-files — Nick Janetakis
  3. Docker Tip #101: Fix Exec Format Error Due to CPU Architecture Mismatch — Nick Janetakis
  4. Call a Dynamically Created Function Name in a Shell Script — Nick Janetakis
  5. Stop tmux-yank from Scrolling Down After Copying Text with Your Mouse — Nick Janetakis
  6. Using git bisect to Help Find Which Commit Broke Something — Nick Janetakis
  7. A Number of Build a SAAS App with Flask Course Updates — Nick Janetakis
  8. BenQ RD320U 32 inch 4k Monitor for Programming — Nick Janetakis
  9. Using Nested Default Variable Values in a Shell Script — Nick Janetakis
  10. Customize ls Output to Not Show the Date — Nick Janetakis
  11. Open WSL 2 Files and Directories with Windows Programs — Nick Janetakis
  12. Benefits of Running Your CI Tests on a Daily Schedule — Nick Janetakis
  13. Docker Tip #100: Should You Use Image Digests in Your Dockerfile? — Nick Janetakis
  14. Replace Kustomize commonLabels, patchesJson6902 and patchesStrategicMerge — Nick Janetakis
  15. Using NGINX Regex Capture Groups to Redirect URL Paths — Nick Janetakis
  16. Debugging a Container Error When It Produces No Log Output — Nick Janetakis
  17. Inspect the Stats and Get a Status Report of Your Celery Workers — Nick Janetakis
  18. Open Multiple Files at Once with FZF and Vim — Nick Janetakis
  19. Solving Random Business Problems with Command Line Tools — Nick Janetakis
  20. Docker Tip #99: Prefer Using compose.yaml over docker-compose.yml — Nick Janetakis
  21. Grade Your Docker Images with Docker Scout Health Scores — Nick Janetakis
  22. Filter ripgrep's Results When You Don't Have a Git Repo — Nick Janetakis
  23. Show Trailing Whitespace in Markdown Files with vim-better-whitespace — Nick Janetakis
  24. Using Curl to Create a Telnet Connection — Nick Janetakis
  25. Check If a String Contains a Substring in Bash — Nick Janetakis
  26. Display the Search Count in Vim's Status Bar — Nick Janetakis
  27. What Was the First Docker Captain's Summit Like? — Nick Janetakis
  28. Docker Tip #98: Nested Variable Interpolation with Docker Compose v2 — Nick Janetakis
  29. Creating Dynamic Variables in Bash — Nick Janetakis
  30. The Butterfly Effect of Having a Technical Blog for 9+ Years — Nick Janetakis
  31. Randomly Order Lines on the Command Line with sort or shuf — Nick Janetakis
  32. Doing Calculations on the Command Line with the bc Tool and Your Shell — Nick Janetakis
  33. Mount Secure Build-Time Secrets with Docker and Docker Compose — Nick Janetakis
  34. Setting Up the Password Store (Pass) App to Work with Android 13+ — Nick Janetakis
  35. clear vs CTRL + L in Your Shell — Nick Janetakis
  36. It's OK to Sleep — Nick Janetakis
  37. Output, Assign, Pipe and Redirect a Heredoc in a Shell Script — Nick Janetakis
  38. 120+ Skills I Use in an SRE / Platform / DevOps Developer Position — Nick Janetakis
  39. Setting Up a TCP Listener and Connecting to It with Netcat — Nick Janetakis
  40. Connect to a Service Running on Your Docker Host from a Container — Nick Janetakis
  41. My Origin Story with Docker and Why I'm Using It 10 Years Later — Nick Janetakis
  42. Git Diff 2 Different Commits, Tags or Branches — Nick Janetakis
  43. Docker Tip #97: Save and Load Docker Images from a Zip File — Nick Janetakis
  44. Create Read-Only AKA Immutable Variables in Bash — Nick Janetakis
  45. Wait for Input in a Graphical Code Editor in a Shell Script — Nick Janetakis
  46. Build Git Tagged Multi-Arch Docker Images with GitHub Actions — Nick Janetakis
  47. Build Multi-CPU Architecture Docker Images with Buildx — Nick Janetakis
  48. Hiding User Input in a Shell Script — Nick Janetakis
  49. Never Underestimate Support and Knowing your Customer — Nick Janetakis
  50. Color Your Shell Prompt Red If the Last Command Threw an Error — Nick Janetakis
  51. Difference between Double Ampersand and Semicolon in a Shell Script — Nick Janetakis
  52. Troubleshooting Steps for When a Vim Plugin Is Not Working — Nick Janetakis
  53. Docker Tip #96: See How Long a Container Ran For — Nick Janetakis

2023 31

  1. Automate Suspending Kubernetes Cron Jobs with find and sed — Nick Janetakis
  2. Getting Celery to Work with Python 3.12 and Flask 3.0 — Nick Janetakis
  3. Get the MD5 Hash of a File with OpenSSL — Nick Janetakis
  4. Git Cherry Pick Examples to Apply Hot Fixes and Security Patches — Nick Janetakis
  5. Help Find and Remove Hard Coded Passwords and Secrets in a Project — Nick Janetakis
  6. Count All Git Commits in a Repo — Nick Janetakis
  7. Customize FZF's CTRL + T Binding with FZF_CTRL_T_OPTS to Preview Files — Nick Janetakis
  8. Validate File Types by Reading the First Few Bytes of a File — Nick Janetakis
  9. Get Video Duration in Seconds Using FFmpeg / FFprobe — Nick Janetakis
  10. Install the Latest Version of Docker Compose v2 — Nick Janetakis
  11. Delete Lines That Match a Pattern or the Opposite Pattern Using sed — Nick Janetakis
  12. Expand Tilde to Home Directory When Reading User Input in Bash — Nick Janetakis
  13. Modifying Shell Arguments with the set Command — Nick Janetakis
  14. Ignore Sudo in a Shell Script If You're Running as Root — Nick Janetakis
  15. Reduce Docker Images by 20 MB by Verifying APT Packages without gnupg — Nick Janetakis
  16. Never Underestimate Making Pull Requests to Update Documentation — Nick Janetakis
  17. Beware of Dangling Backslashes in RUN Commands in Your Dockerfile — Nick Janetakis
  18. Binding to Low Ports as a Non-root User with Docker and Kubernetes — Nick Janetakis
  19. Delete Empty Directories on the Command Line with Find — Nick Janetakis
  20. Optional depends_on with Docker Compose v2.20.2+ — Nick Janetakis
  21. Docker Tip #95: Check If Your App Is Running in Docker or Kubernetes — Nick Janetakis
  22. Monitor the Output of a Program for Changes Using the Watch Command — Nick Janetakis
  23. Wrap Text to X Characters on the Command Line with fold or fmt — Nick Janetakis
  24. What I Learned about Payment Systems While Working at a Pizza Place — Nick Janetakis
  25. Deleting Specific Lines in a File with sed or yq — Nick Janetakis
  26. Pretty Print JSON in Your Terminal with jq or Python — Nick Janetakis
  27. Creating Checklists for High Stakes Changes — Nick Janetakis
  28. How to Use Pass Which Is a Command Line Password Manager — Nick Janetakis
  29. Required vs Optional Environment Variables for Safer Deploys — Nick Janetakis
  30. How to Approach Solving a Difficult or Vague Programming Problem — Nick Janetakis
  31. Flask Nested Blueprints Example — Nick Janetakis

Undated 436

  1. Detect if a shell script is being executed or sourced
  2. Using trap to run a command after your shell script exits
  3. Clearing and restoring your current and saved shell history with zsh
  4. How would you improve this shell script
  5. Check when a server was shutdown or reboot with who uptime and last
  6. Create parent directories with curl using the create dirs flag
  7. A few examples of using brace expansion with bash
  8. Recursively print files with their path using find cat or tail
  9. Moving a bunch of shell alias functions into their own script files
  10. Git restore all unstaged and untracked files back to their latest commit
  11. Parse command line positional arguments and flags with bash
  12. Splitting strings by a delimiter with ifs and bash string replace
  13. Create video clips with ffmpeg in seconds
  14. Django 4 1 html templates are cached by default with debug true
  15. Lessons learned from rerolling 60 production credentials
  16. Using a custom ssh key to access a private git repo
  17. Using curl with multiline json data
  18. Quickly check if an online image is really transparent or not
  19. Associative arrays in bash aka key value dictionaries
  20. An alias to create shell scripts
  21. A guide for running rails in docker
  22. A few examples of using the tee command
  23. Switching from an rsa ssh key to ed25519 on ubuntu 2204
  24. Passing exported env vars into a docker container without an env file
  25. How to secure your notes and home network when using a company laptop
  26. A dropdown menu using stimulus and tailwindcss with escape key support
  27. Install docker in wsl 2 without docker desktop
  28. Delete old or unused local git branches using grep and xargs
  29. Self host and preview emails locally with mailcatcher open source
  30. Automatically sort your python imports in flask and django with isort
  31. How i almost took down production due to a near empty config file
  32. Adding docker compose logs to your ci pipeline is worth it
  33. Search all of your git history for code and commits with 2 commands
  34. Running docker containers as a non root user with a custom uid and gid
  35. Allow 2 users to be able to share a linux directory with 2755 vs 0755
  36. Using dockers v2 api to get a list of tags with the help of jq
  37. Docker tip 94 docker compose v2 and profiles are the best thing ever
  38. Docker tip 93 remove the env file property from postgres and redis
  39. Finding an ansible bug on apt pinning and installing docker compose v2
  40. Test specific http status code responses with httpstatus
  41. Counting all git commits from all authors and more with git shortlog
  42. Beware of piping echo into base64 on the command line
  43. Git diff has a quiet flag to halt a script if a file was updated
  44. Create an ip address allow list with cidr block support in python
  45. Using the cut command to parse a csv file by delimiters and characters
  46. Pick 1 of 2 items randomly with a weighted percent in python and ruby
  47. Add a git branch to your prompt with a few lines fo shell scriptingt
  48. Git diff staged will diff files you have staged vs what is commit
  49. Docker tip 92 rolling back to a previous docker desktop version
  50. Reselect your last selection in vim with gv
  51. Measuring redis network latency and the stability of your server
  52. Using a google app password to send emails in development with flask
  53. Prevent unset variables in your shell bash scripts with set nounset
  54. Shellcheck x flag lets you source files without sc1091 warnings
  55. From a written problem to pseudo code to working code python
  56. How i quickly find answers to problems and research new things
  57. Test if your shell scripts are posix compliant with shellcheck
  58. Squashing git commits locally without rebasing or merging a branch
  59. Respecting the cd or exit pattern suggested by shellcheck sc2164
  60. Failing in public when doing open source is not the end of the world
  61. Docker tip 91 exec into a container as root without sudo or a password
  62. Get better at reading documentation specifications and requirements
  63. Toggle boolean vim settigs with inv or an exclamation point
  64. Splitting out web app health check urls for basic and database checks
  65. A custom vim mapping to copy a buffers file path to your clipboard
  66. Docker tip 90 docker compose up is faster than stop up
  67. Using curl to check an ssl certificate expiration date and details
  68. Customizing topbar to add a delay before showing page loading progress
  69. Run parallel background commands in linux and wait until they complete
  70. Creating a twelve factor app with docker that also works on kubernetes
  71. Live coding a pull request on the terraform eks module documentation
  72. When to use long word or short letter command line flags
  73. Creating an esbuild plugin to efficiently copy static files
  74. Format paragraphs to 80 characters with vim no plugins needed
  75. Rails 7 switch webpacker with esbuild while using tailwind and docker
  76. Lcurl is a script to visit a site every x seconds using curl
  77. Get the last argument of the last run command in your shell with dollar underscore
  78. Fix a lets encrypt related expired root certificate on an old server
  79. Taking an indefinite break from the running in production podcast
  80. Live coding an update to my build a saas app with flask course
  81. Using browser bookmarks and tab groups to automate daily routines
  82. Docker tip 89 lint your dockerfile with hadolint
  83. Disable line numbers in ferns sidebar within vim
  84. Configuring a kind cluster with nginx ingress using terraform and helm
  85. Overcoming analysis paralysis as a software developer
  86. Remapping x and del in vim to not overwrite your clipboard
  87. Using string interpolation inside of phoenix heex template tags
  88. Docker tip 88 switching mysql to mariadb for arm 64 m1 support
  89. Using bash set x to help debug why a script is not working
  90. Start your tmuxt window and pane index count at 1 instead of 0
  91. Change your vim cursor from a block to line in normal and insert mode
  92. Temporarily ignore a shell alias by using a backslash
  93. Using fzf to preview text files on the command line and within vim
  94. Fixing an ansible lint no handler error in a multi condition task
  95. Live coding refactoring docker related files in a fastapi app
  96. I recently switched to zsh and created a dotfiles install script
  97. Why you should put braces around your variables when shell scripting
  98. Using envsubst to merge environment variables into config files
  99. Reviewing tailkit 300 tailwind components and giving away 2 copies
  100. Docker tip 87 run multiple docker compose files with the f flag
  101. A live demo of maintaining 6 open source docker example web apps
  102. What to do if you forgot to use sudo on the command line and vim
  103. Using ffmpeg to get an mp3s duration and 4 ways to get the file size
  104. Best practices around production ready web apps with docker compose
  105. A shell script to keep a bunch of dockerized example apps up to date
  106. Fix flask 2 warnings in flask login flask wtf and flask debugtoolbar
  107. Save and restore tmux sessions across reboots with tmux resurrect
  108. Bash aliases to prepare recording videos
  109. Comparing 3 ways to import multiple things from the same python module
  110. Shell script accepting user input heredocs in place edits and more
  111. 100 ways to solve a specific programming problem in 50 languages
  112. Reclaiming tons of diskspace by compacting your docker desktop wsl 2 vm
  113. Sort and reverse sort a selection of text or file in vim
  114. Tailwind jit compiler makes tailwind plus webpack faster in development
  115. Change a git commit in the past with amend and rebase interactive
  116. Using vims autocmd to set a custom file type for specific files
  117. Replacing make with a shell script for running your projects tasks
  118. Using vim test to run your tests with and without docker
  119. A python script to increment file names starting at a specific number
  120. How to record great sounding high quality audio at home
  121. Wrapping text in html tags with vim macros vim surround and pandoc
  122. Moving lines up and down in vim without using the clipboard
  123. A terminal tmux vim and fzf theme switching script written in python
  124. Making a human friendly changelog by following keep a changelog tips
  125. 3 practical examples of using bash while and until loops
  126. Improve tailwindcss 2 and webpack startup and reload times in dev
  127. For the time being 16gb of ram for web development works really well
  128. Using python and youtubes api to get comments from a youtube video
  129. Always on top lets you pin a window to the foreground
  130. Flask db helps you migrate seed and reset your sql database
  131. Signing and verifying git commits on the command line and github
  132. Creating and managing a gpg key pair
  133. Setting a custom webhook endpoint api version using stripe s api
  134. Using configuring and customizing vim spell check
  135. Grepping for characters you might accidentally added with vim
  136. Why i prefer running nginx on my docker host instead of in a container
  137. Talking with 52 devs about building deploying web apps and tech stacks
  138. 1 hour talk on creating a command line development environment
  139. Giving a text based slide presentation in vim without plugins
  140. Use twitters api and a few command line tools to pick a random reply
  141. A simple python web server to echo back http headers and data
  142. Generate a random secure password on the command line with pwgen
  143. Switching from nerdtree to fern for a vim tree view plugin
  144. At first i thought someone was trying to scam me out of my domain name
  145. Automatic mysql and postgresql backups with a shell script and cron job
  146. Using aws rekognition and python to identify objects and test in images
  147. Live coding a shell script to toggle dark mode for terminal tools
  148. Why your web server should log to stdout especially with docker
  149. Detecting if a directory is mounted or not useful for backup scripts
  150. 3 gotchas with wsl 2 around disk space memory usage and performance
  151. Open a file with multiple columns scrolled to specific lines with vim
  152. Create a health check url in your web app and monitor its uptime
  153. Transforming an idea from your brain into an open source project
  154. Using diff process substitution and pipes to solve a real problem
  155. Displaying database results across multiple columns with 1 line of css
  156. A linux dev environment on windows with wsl 2 docker desktop and more
  157. Wait until your dockerized database is ready before continuing
  158. Diff selections files directories and git history with vim
  159. Improving your page load speeds on any site with turbolinks
  160. Linting and improving your bash scripts with shellcheck
  161. Docker tip 86 always make your entrypoint scripts executable
  162. Using vim built in complete menu for autocompleting words
  163. Creating laser focused git commits using git add patch
  164. Taking advantage of using snippets with ultisnips and vim snippets
  165. Configuring gunicorn for development and production with env variables
  166. Sunsetting an open source project
  167. A docker compose override file can help avoid compose file duplication
  168. Evaluating and improving the quality of your code as a solo developer
  169. Using sed range patterns grep and tr to parse a changelog file
  170. An open source and fully offline browser based kanban board
  171. Maintaining an open source project from handling issues to releases
  172. Why and how i use vim plug to manage my vim plugins
  173. Fixing vim error e464 ambiguous use of user defined command
  174. Formatting seconds into hh mm ss with elixir and python
  175. Docker tip 85 define healthcheck in your docker compose file
  176. Live demo how to begin writing tests in an untested code base
  177. A few advantages of using webpack in your next project
  178. Organize your text based notes from the command line with this script
  179. Getting the html5 audio element working with jekyll in development
  180. Avoiding insert delay related problems around deleting with vim and tmux
  181. I use nerdtree in vim but it is usually not for opening files
  182. As developers it is ok to call it quits and make compromises sometimes
  183. Using python to help generate personalized email templates
  184. Lessons learned from building a podcast platform in 2 weekends
  185. Running in production podcast do you want to become a guest
  186. Make your static files production ready with flask static digest
  187. Add social share buttons to your static site without tracking
  188. You might not need a vim plugin to visualize line indents
  189. Resize and see how big any window is using a free tool called sizer
  190. Using flask blueprints to help organize and maintain your code base
  191. Listing docker tags on the command line using a bash alias
  192. Configuring wsltty which is my favorite windows wsl terminal
  193. Implementing 3 different website features with jekyll using includes
  194. I occasionally use affiliate links on my site
  195. Why the amazon basics keyboard is my favorite keyboard
  196. Upgrading a dockerized flask app from python 2 7 to python 3 7
  197. How i used the lxml library to parse xml 20x faster in python
  198. Docker tip 84 fixing obscure docker desktop daemon errors
  199. Learning a new web framework with question driven development
  200. 4 use cases for when to use celery in a flask application
  201. Find and replace text in 1 or more files using vim fzf and ripgrep
  202. Docker tip 83 stop docker containers by name pattern
  203. It is not a waste of time to learn a few languages or frameworks
  204. A python cli tool to help diff web framework versions
  205. Providing feedback to open source projects in a positive way
  206. Using tmux sessions windows panes and vim buffers together
  207. Manage and create diagrams of your sql database for free with dbeaver
  208. Protecting your code and ip when doing contract or freelance work
  209. Docker tip 82 using yaml anchors and x properties in docker compose
  210. Design your web uis faster by planning out each different state
  211. Learning a new and unfamiliar code base
  212. Live demo of planning a real world web application from scratch
  213. Calculate invoice amounts with bash as a freelance developer
  214. Docker tip 81 searching the docker hub on the command line
  215. Getting copy paste to work in wsl with tmux and terminal vim
  216. Writing and previewing markdown in real time with vim 8
  217. Using unix tools and bash to convert blog post titles part 2
  218. Using unix tools and bash to convert blog post titles part 1
  219. Getting productive with vim in a week without hating it
  220. Remap and set global hotkeys on windows 10 with auto hotkey
  221. Docker tip 80 waiting for detached containers to finish
  222. Launching wsl programs from a right click windows menu
  223. Docker tip 79 saving a postgres database in a docker image
  224. Vim is saving me hours of work when writing books and courses
  225. Docker tip 78 using compatibility mode to set memory and cpu limits
  226. I tried linux as my main dev environment but was forced back to windows
  227. Docker tip 77 installing docker on debian unstable
  228. Docker tip 76 where to put docker compose projects on a server
  229. Docker tip 75 how to avoid node modules in your volume mounts
  230. Docker tip 74 curl vs pip for installing docker compose
  231. Docker tip 73 connecting to a remote docker daemon
  232. A linux dev environment on windows with wsl docker tmux and vscode
  233. Conemu vs hyper vs terminus vs mobaxterm terminator vs ubuntu wsl
  234. Docker tip 72 when your dockerized apps suddenly stop working
  235. Generating fake data in development to populate your database
  236. Optimize your programming decisions for the 95 percent not the 5 percent
  237. My favorite vscode extensions and settings
  238. Docker tip 71 running local and ci tests for your applications
  239. Switching from conemu to hyper as a windows terminal
  240. Allowing for errors in bash when you have set e defined
  241. Docker tip 70 gain access to the mobylinux vm on windows or macos
  242. Docker tip 69 avoid running out of disk space from container logs
  243. How to transfer a domain name with zero downtime
  244. Here is why you should quote your variables in bash
  245. Debugging an idempotency related user group issue with ansible
  246. Docker tip 68 its ok not to use docker for everything
  247. Refactoring elixir code if cond and pattern matching
  248. Using print statements are a handy way to debug and explore code
  249. Fuzzy search your bash history in style with fzf
  250. Microservices are something you grow into not begin with
  251. Coming back to cloud field day for the second time
  252. Docker tip 67 incorrect username or password when pulling images
  253. Behind the scenes of debugging an error that i couldnt google
  254. Docker tip 66 fixing error response from daemon invalid mode
  255. How playing video games can teach you real life skills
  256. Docker tip 65 get your docker hosts ip address from in a container
  257. Executing code after an error occurs with bash when using set e
  258. Docker tip 64 dealing with unexplained docker errors
  259. Dealing with database migrations in a brand new project
  260. Docker tip 63 difference between an array and string based cmd
  261. Benchmarking debian vs alpine as a base docker image
  262. Docker tip 62 using 2 dockerfiles in the same compose project
  263. Using phoenix with webpack and docker
  264. Docker tip 61 difference betweeen docker create start and run
  265. Dealing with lock files when using ruby node and elixir with docker
  266. Docker tip 60 what really happens when you run docker compose up
  267. Best practices when it comes to writing docker related files
  268. Docker tip 59 difference between exposing and publishing ports
  269. Temporarily edit text on any website
  270. Docker tip 58 output all of your containers env variables
  271. 80 characters per line is a standard worth sticking to even today
  272. Docker tip 57 using build and image in the same docker compose service
  273. Enabling the flask interactive debugger in development with gunicorn
  274. Docker tip 56 volume mounting ssh keys into a docker container
  275. Running native applications in a browser with droplet computing
  276. Docker tip 55 creating read only containers
  277. Waking up to 1gb of free disk space on your primary ssd
  278. Docker tip 54 fixing connection reset by peer or similar errors
  279. A recycled ip address caused me to pirate 390000 books by accident
  280. Docker tip 53 difference between a registry repository and image
  281. How to get programming jobs when you have no experience
  282. Docker tip 52 referencing containers and images by their short ids
  283. Keeping yourself on track and avoiding burnout as a programmer
  284. Insert multiple cursors at the start of every line with vscode
  285. Docker tip 51 which docker compose api version should you use
  286. Using gnucash as a freelancer to track finances and prepare taxes
  287. Docker tip 50 running an insecure docker registry
  288. The cloud field day experience as a first time delegate
  289. Docker tip 49 important a database sql file with docker compose
  290. Theorycrafting a plan to improve public speaking
  291. Docker tip 48 list all changes performed in a container
  292. Flask libraries for building awesome real world restful apis
  293. Docker tip 47 build time vs run time env variables
  294. Enable http2 with nginx on debian jessie stretch and ubuntu 16
  295. Docker tip 46 using workdir to cleanup your dockerfile
  296. Was web development better back in the early 2000s
  297. Docker tip 45 docker compose stop vs down
  298. How to start and finish any web app project
  299. Docker tip 44 show total disk space used by docker
  300. Breaking down problems by prepending a dom element with jquery
  301. Docker tip 43 using the docker compose config command
  302. Setting up a python development environment with and without docker
  303. Docker tip 42 using docker for long running and one off tasks
  304. Why i have started to move my domains from internetbs to namesilo
  305. Docker tip 41 should you use virtualenv or rvm in your docker images
  306. Automatic offline file backups with bash and rsync
  307. Docker tip 40 running cron jobs on the host vs in a container
  308. Boosting software developer productivity with a clipboard manager
  309. Docker tip 39 installing docker ce on redhat rhel 7x
  310. Fixing exec format errors with docker entrypoint scripts on windows
  311. Docker tip 38 how to revoke your docker hub login token
  312. Access documentation from your code editor with dash or zeal
  313. Docker tip 37 what do links do in docker compose
  314. What is devops
  315. Docker tip 36 the difference between run and cmd in a dockerfile
  316. 2017 recap books read podcasts and goals
  317. Docker tip 35 connect to a database running on your docker host
  318. Should your next project be built as a serverless app
  319. Docker tip 34 should you use docker compose in production
  320. Docker swarm vs kubernetes which one should you learn
  321. Docker tip 33 should you use the volume or mount flag
  322. Switching to vscode from sublime text
  323. Docker tip 32 automatically clean up after docker daily
  324. 15 useful flask extensions and libraries that i use in every project
  325. Docker tip 31 how to remove dangling docker images
  326. Run the first edition of unix 1972 with docker
  327. Docker tip 30 running docker compose from a different directory
  328. Using wsl and mobaxterm to create a linux dev environment on windows
  329. Docker tip 29 containers cant access the internet check iptables
  330. Would socrates use docker today
  331. Docker tip 28 named volumes vs path based volumes
  332. Solve programming problems with rubber duck debugging
  333. Docker tip 27 setting a password on redis without a custom config
  334. Server side templates vs rest api and javascript front end
  335. Docker tip 26 alias and function shortcuts for common commands
  336. Setting up docker for windows and wsl to work flawlessly
  337. Docker tip 25 adding metadata to your docker images with labels
  338. How to accept email based payments for free as a freelancer
  339. Docker tip 24 docker ps vs docker container ls
  340. 4 major benefits of walking as a software developer
  341. Docker tip 23 docker compose vs docker stack
  342. Docker community edition vs enterprise edition and their release cycle
  343. Docker tip 22 checking the exit code of stopped containers
  344. Lets encrypt vs cloudflare for https
  345. Docker tip 21 measure your docker containers resources
  346. Ngrok lvhme nipio a trilogy for local development and testing
  347. Docker tip 20 running docker without sudo on linux
  348. Build your own 8x4 foot whiteboard for 15 dollars instead of 200
  349. Docker tip 19 how to ignore files from your docker images
  350. Configuring your code editor for docker
  351. Docker tip 18 please pin your docker image versions
  352. It doesnt matter what web framework you use just pick one
  353. Docker tip 17 breaking up long lines in your dockerfile
  354. 2 ways to name things better in programming
  355. Docker tip 16 redirect a containers file onto your docker host
  356. Differences between a dockerfile docker image and docker container
  357. Docker tip 15 opening and closing ports to the outside world
  358. Securing your website with https is more important than ever
  359. Docker tip 14 using docker doesnt mean going all in with automation
  360. How to move a site to a different domain without downtime or 404s
  361. Docker tip 13 get docker for windows and virtualbox working together
  362. A review of the https with lets encrypt course by mikael m
  363. How to convince your boss or manager to use docker
  364. Lessons learned from creating content on 2 sites instead of 1
  365. Docker tip 12 a much better development experience with volumes
  366. Should you use the docker toolbox or docker for mac windows
  367. Docker tip 11 solving docker problems as a docker beginner
  368. Automate installing docker and docker compose with ansible
  369. Docker tip 10 project structure with multiple dockerfiles and docker compose
  370. Get to know dockers ecosystem
  371. Docker tip 9 installing popular packages on alpine
  372. The 3 biggest wins when using alpine as a base docker image
  373. Docker tip 8 overriding your dockerfiles cmd
  374. Why i got started with docker
  375. Docker tip 7 the difference between run and cmd
  376. The tools i use
  377. Do you need to be a linux wizard to use docker in development
  378. Docker tip 6 installing docker on a chromebook
  379. How to quickly learn a new programming language or framework
  380. What does build ship and run any app anywhere really mean
  381. Docker tip 5 the benefits of using the same base docker image for all images
  382. Docker and ansible solve 2 different problems and they can be used together
  383. Docker tip 4 does your docker image os need to match your host os
  384. Understanding how the docker daemon and docker cli work together
  385. Docker tip 3 chain your docker run instructions to shrink your images
  386. 5 steps to take before moving your applications into docker
  387. Docker tip 2 the difference between copy and add in a dockerile
  388. Comparing virtual machines vs docker containers
  389. Docker tip 1 docker containers are isolated processes not virtual machines
  390. Docker empowers you by letting you use the best tools for the job
  391. The moby project is not docker trying to switch their brand
  392. Frustrated with programming language version managers ditch them for docker
  393. Debugging lets encrypt errors sometimes its not your fault
  394. Is docker worth learning
  395. Where did i go and whats happening next
  396. How to overcome procrastination with a 3 pronged attack
  397. How to pick a good monitor for software development
  398. Ancient babylonians may have invented irc 2000 years ago
  399. Who else wants to boost their productivity with tmux
  400. How to start a successful freelance business as a software developer
  401. Have you hit the point of diminishing returns as a developer
  402. Plain text and google keep is a killer combo for notes and organization
  403. Discover a new world of sound by upgrading your headphones
  404. Configure your code editor to be a very productive writing tool
  405. Are you a computer scientist or a code monkey
  406. I almost rage bought a macbook pro
  407. Breaking down problems is the number 1 software developer skill
  408. Learn how to schedule your time
  409. Transform a toshiba chromebook cb35 into a linux development environment with galliumos
  410. See how virtual desktops let you get more done in less time
  411. Schedules arent a constraint on life they let you live it
  412. Dockerize a rails 5 postgres redis sidekiq action cable app with docker compose
  413. Planning a trip to boston here is what i did for 5 days
  414. Fix missing csrf token issues with flask
  415. Dockerize a flask celery and redis application with docker compose
  416. Build a saas app with flask free sample videos
  417. Save yourself from years of turmoil by using docker today
  418. Alpine based docker images make a difference in real world apps
  419. 25 sublime text 3 packages for polyglot programmers
  420. Why sublime text 3 is still my preferred code editor
  421. Results after using a standing desk for 3 months
  422. Build a saas app with flask is getting a complete make over soon
  423. Recent changes to udemys pricing
  424. Managing your passwords on the command line in linux with pass
  425. Create an awesome linux development environment in windows with vmware
  426. Build a home made standing desk for 50 dollars in 10 easy steps
  427. Sennheiser hd 201 vs sennheiser hd 202 for budget death metal headphones
  428. Less than 24 hours on udemy as an instructor and i am close to leaving
  429. Interested in a docker course
  430. Deploy web apps with docker
  431. Build a saas app with flask part 5
  432. Build a saas app with flask part 4
  433. Manage your assets with flask webpack
  434. Build a saas app with flask part 3
  435. Build a saas app with flask part 2
  436. Build a saas app with flask part 1