41554 blogs · [ { "id": "01a087a7-39be-70ed-85a9-f1144440e8b1", "title": "Using Agenix with devShells", "url": "https://www.mitchellhanberg.com/using-agenix-with-devshells/", "published_at": "2025-06-16T05:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f11444d12da7", "title": "Compiling C with Zig", "url": "https://www.mitchellhanberg.com/compiling-c-with-zig/", "published_at": "2025-06-13T05:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f114454d577c", "title": "Using Agenix with Home Manager", "url": "https://www.mitchellhanberg.com/using-agenix-with-home-manager/", "published_at": "2025-06-09T05:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f11445815d2a", "title": "Getting Started with Agenix", "url": "https://www.mitchellhanberg.com/getting-started-with-agenix/", "published_at": "2025-06-02T05:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1144653f2b8", "title": "Code BEAM America 2025", "url": "https://www.mitchellhanberg.com/code-beam-america-2025/", "published_at": "2025-03-11T05:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f11446c65094", "title": "I've Joined the Official Elixir LSP Team", "url": "https://www.mitchellhanberg.com/ive-joined-the-official-elixir-lsp-team/", "published_at": "2024-08-21T05:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f114473e4027", "title": "Validate and Transform Your Data with Schematic", "url": "https://www.mitchellhanberg.com/validate-and-transform-your-data-with-schematic/", "published_at": "2024-07-12T05:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f11447f00400", "title": "Pet Peeves", "url": "https://www.mitchellhanberg.com/pet-peeves/", "published_at": "2024-06-19T05:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f11448a031d5", "title": "Create Your Own Neovim Distribution", "url": "https://www.mitchellhanberg.com/create-your-own-neovim-distribution/", "published_at": "2024-06-05T05:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f11448d85a8e", "title": "Modern Format on Save in Neovim", "url": "https://www.mitchellhanberg.com/modern-format-on-save-in-neovim/", "published_at": "2024-03-14T12:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f114496b25ce", "title": "Ergonomic Remote Development", "url": "https://www.mitchellhanberg.com/ergonomic-remote-development/", "published_at": "2023-11-07T13:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1144a06da25", "title": "OTP Process Abstractions with proc_lib", "url": "https://www.mitchellhanberg.com/otp-process-abstractions-with-proc-lib/", "published_at": "2023-05-22T05:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1144a1c3b25", "title": "Credo Language Server and the birth of elixir-tools", "url": "https://www.mitchellhanberg.com/credo-language-server-and-the-birth-of-elixir-tools/", "published_at": "2023-04-18T05:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1144aa779ae", "title": "Introducing lazyasdf: An Elixir-based TUI for the asdf version manager", "url": "https://www.mitchellhanberg.com/introducing-lazyasdf-a-tui-for-the-asdf-version-manager/", "published_at": "2023-03-06T06:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1144b60018b", "title": "The Comprehensive Guide to Elixir's List Comprehension", "url": "https://www.mitchellhanberg.com/the-comprehensive-guide-to-elixirs-for-comprehension/", "published_at": "2022-06-02T05:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1144b640e5b", "title": "How EEx Turns Your Template Into HTML", "url": "https://www.mitchellhanberg.com/how-eex-turns-your-template-into-html/", "published_at": "2022-04-11T05:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1144b977233", "title": "How I Handle Static Assets in my Phoenix apps", "url": "https://www.mitchellhanberg.com/how-i-handle-static-assets-in-my-phoenix-apps/", "published_at": "2021-06-07T05:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1144bfb3836", "title": "How to Set Up Neovim for Elixir Development", "url": "https://www.mitchellhanberg.com/how-to-set-up-neovim-for-elixir-development/", "published_at": "2021-06-02T13:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1144c32e2e5", "title": "Announcing Temple v0.6!", "url": "https://www.mitchellhanberg.com/announcing-temple-v06/", "published_at": "2021-05-25T14:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1144c87dc14", "title": "Temple, AST, and Protocols", "url": "https://www.mitchellhanberg.com/temple-ast-and-protocols/", "published_at": "2021-04-12T14:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1144d743186", "title": "How to Deploy a Phoenix App to Gigalixir in 20 Minutes", "url": "https://www.mitchellhanberg.com/how-to-deploy-a-phoenix-app-to-gigalixir-in-20-minutes/", "published_at": "2020-11-06T14:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1144db0beb8", "title": "Better Terminal Git Diffs", "url": "https://www.mitchellhanberg.com/better-terminal-git-diffs/", "published_at": "2020-08-12T13:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1144e3ca779", "title": "CI/CD with Phoenix, GitHub Actions, and Gigalixir", "url": "https://www.mitchellhanberg.com/ci-cd-with-phoenix-github-actions-and-gigalixir/", "published_at": "2020-03-03T14:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1144eb482ac", "title": "Setting up my new computer", "url": "https://www.mitchellhanberg.com/setting-up-my-new-computer/", "published_at": "2020-03-02T14:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1144ee04499", "title": "Introducing Temple: An elegant HTML library for Elixir and Phoenix", "url": "https://www.mitchellhanberg.com/introducing-temple-an-elegant-html-library-for-elixir-and-phoenix/", "published_at": "2019-07-12T13:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1144f8362a3", "title": "Implementing link following with OAuth", "url": "https://www.mitchellhanberg.com/implementing-link-following-with-oauth/", "published_at": "2019-04-07T13:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f114507feade", "title": "Tools I use for mobile web development", "url": "https://www.mitchellhanberg.com/tools-i-use-for-mobile-web-development/", "published_at": "2019-04-04T13:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f114516c3042", "title": "Experiment in the REPL", "url": "https://www.mitchellhanberg.com/experiment-in-the-repl/", "published_at": "2019-02-19T16:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f11451903a6e", "title": "Tips for Reading More", "url": "https://www.mitchellhanberg.com/tips-for-reading-more/", "published_at": "2019-02-14T18:30:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f11452179432", "title": "Creating Responsive Popovers with Popper.js", "url": "https://www.mitchellhanberg.com/creating-responsive-popovers-with-popper.js/", "published_at": "2019-02-11T14:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1145257b0cd", "title": "Conducting Good Retrospectives", "url": "https://www.mitchellhanberg.com/post/2018/11/09/conducting-good-retrospectives/", "published_at": "2018-11-10T02:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f114526f184d", "title": "Reducers: Exploring State Management in React (Part 2)", "url": "https://www.mitchellhanberg.com/post/2018/10/24/reducers-exploring-state-management-in-react/", "published_at": "2018-10-24T03:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f11452cc906d", "title": "How to use Elixir LS with Vim", "url": "https://www.mitchellhanberg.com/post/2018/10/18/how-to-use-elixir-ls-with-vim/", "published_at": "2018-10-18T12:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f114531033eb", "title": "Announcing PlanetEx: an open source blog aggregator written in Elixir", "url": "https://www.mitchellhanberg.com/post/2018/10/01/announcing-planetex-an-open-source-blog-aggregator-written-in-elixir/", "published_at": "2018-10-01T17:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1145370e9aa", "title": "Elixir in Action: Book Review", "url": "https://www.mitchellhanberg.com/post/2018/09/19/elixir-in-action-book-review/", "published_at": "2018-09-19T13:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f11454152450", "title": "How to Subscribe to SharePoint RSS Feeds Without NTLM Authentication", "url": "https://www.mitchellhanberg.com/post/2018/08/19/how-to-subscribe-to-sharepoint-rss-feeds-without-ntlm-authentication/", "published_at": "2018-08-19T01:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f11454f0c2d7", "title": "Metaprogramming Elixir: Book Review", "url": "https://www.mitchellhanberg.com/post/2018/08/18/metaprogramming-elixir-book-review/", "published_at": "2018-08-18T13:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1145561d659", "title": "Container Components: Exploring State Management in React (Part I)", "url": "https://www.mitchellhanberg.com/post/2018/07/25/exploring-state-management-in-react-container-components/", "published_at": "2018-07-25T04:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f11455aeb6a9", "title": "Building with Elm at SEP:Makes", "url": "https://www.mitchellhanberg.com/post/2018/03/08/building-elm-at-sep-makes/", "published_at": "2018-03-08T14:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f11455f9dd14", "title": "Integrate and Deploy React with Phoenix", "url": "https://www.mitchellhanberg.com/post/2018/02/22/integrate-and-deploy-react-with-phoenix/", "published_at": "2018-02-22T13:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f11456104315", "title": "Version Your Dotfiles for Great Good", "url": "https://www.mitchellhanberg.com/post/2018/01/29/version-your-dotfiles-for-great-good/", "published_at": "2018-01-29T14:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f114566060b8", "title": "Implementing API Authentication with Guardian in Phoenix", "url": "https://www.mitchellhanberg.com/post/2017/11/28/implementing-api-authentication-with-guardian/", "published_at": "2017-11-28T14:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f11457336c4c", "title": "Scheduling Cron Jobs on Heroku with Ruby on Rails", "url": "https://www.mitchellhanberg.com/post/2017/10/25/cron-jobs-on-heroku/", "published_at": "2017-10-25T13:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f11457de7092", "title": "Encoding Ecto Validation Errors in Phoenix 1.3", "url": "https://www.mitchellhanberg.com/post/2017/10/23/encoding-ecto-validation-errors-in-phoenix/", "published_at": "2017-10-23T13:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f114588edb65", "title": "Installing Erlang and Elixir with asdf", "url": "https://www.mitchellhanberg.com/post/2017/10/05/installing-erlang-and-elixir-using-asdf/", "published_at": "2017-10-05T15:30:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1145923990f", "title": "Habits of Successful Projects", "url": "https://www.mitchellhanberg.com/post/2017/10/03/habits-of-successful-projects/", "published_at": "2017-10-03T12:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f114598ec05c", "title": "First Dive into Development for VR", "url": "https://www.mitchellhanberg.com/post/2017/04/11/vr-first-steps/", "published_at": "2017-04-11T13:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1145a3bdcfe", "title": "Leaving Your Legacy", "url": "https://www.mitchellhanberg.com/post/2017/03/09/leaving-your-legacy/", "published_at": "2017-03-09T14:00:00+00:00" }, { "id": "01a087a7-39be-70ed-85a9-f1145a95f331", "title": "If You Don't Have Anything Valuable To Say... Say It Anyways", "url": "https://www.mitchellhanberg.com/post/2017/02/28/first-post/", "published_at": "2017-02-28T14:00:00+00:00" } ] posts Claim your blog
Back to mitchellhanberg.com
Blog · corpus.blog/blogs/mitchellhanberg.com/posts

mitchellhanberg.com

mitchellhanberg.com

2025

2024

2023

2022

2021

2020

2019

2018

2017