41554 blogs · [ { "id": "01a087a7-6f83-71ed-8dde-1ccb5bcd9648", "title": "Rejoicing in His coming", "url": "https://mjswensen.com/blog/rejoicing-in-his-coming/", "published_at": "2025-12-28T18:15:00+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb5c1e129c", "title": "Clean + Format: a UX pattern for high-quality user input fields", "url": "https://mjswensen.com/blog/clean-format-a-ux-pattern-for-high-quality-user-input-fields/", "published_at": "2024-08-07T03:42:50+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb5cb875a4", "title": "The single most important factor that differentiates front-end frameworks", "url": "https://mjswensen.com/blog/the-single-most-important-factor-that-differentiates-front-end-frameworks/", "published_at": "2023-06-11T05:14:49+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb5cc0d37d", "title": "How to set up a WireGuard VPN for personal use", "url": "https://mjswensen.com/blog/how-to-set-up-a-wireguard-vpn-for-personal-use/", "published_at": "2023-03-19T00:04:28+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb5ce48885", "title": "Cascade layers, subgrid, and container queries: What's new in CSS", "url": "https://mjswensen.com/blog/cascade-layers-subgrid-and-container-queries-whats-new-in-css/", "published_at": "2022-05-07T01:25:47+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb5dd42f2b", "title": "Extending object-like types with interfaces in TypeScript", "url": "https://mjswensen.com/blog/extending-object-like-types-with-interfaces-in-typescript/", "published_at": "2022-04-03T00:09:22+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb5ea438e6", "title": "How to develop over HTTPS on localhost", "url": "https://mjswensen.com/blog/how-to-develop-over-https-on-localhost/", "published_at": "2022-03-11T15:16:41+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb5ea6506f", "title": "Mastering mapped types in TypeScript", "url": "https://mjswensen.com/blog/mastering-mapped-types-in-typescript/", "published_at": "2022-02-18T20:17:28+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb5ee1539d", "title": "How to set up a simple web server development container for VS Code", "url": "https://mjswensen.com/blog/simple-web-server-development-container-vs-code/", "published_at": "2022-01-26T16:18:46+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb5f317082", "title": "Using tsm as a shebang interpreter in TypeScript", "url": "https://mjswensen.com/blog/using-tsm-as-a-shebang-interpreter-in-typescript/", "published_at": "2022-01-24T14:52:48+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb6020199f", "title": "Using SVG vs. Canvas: A short guide", "url": "https://mjswensen.com/blog/using-svg-vs-canvas/", "published_at": "2021-05-31T12:21:29+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb60f56df5", "title": "What's new in TypeScript 4.2?", "url": "https://mjswensen.com/blog/whats-new-in-typescript-4-2/", "published_at": "2021-05-07T12:09:43+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb61983846", "title": "The case for using frameworks", "url": "https://mjswensen.com/blog/the-case-for-using-frameworks/", "published_at": "2021-04-30T11:58:08+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb6254d4d4", "title": "How polymorphic JavaScript functions affect performance", "url": "https://mjswensen.com/blog/how-polymorphic-javascript-functions-affect-performance/", "published_at": "2021-03-30T13:32:23+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb628ddca1", "title": "Creating compound components in React and Angular", "url": "https://mjswensen.com/blog/creating-compound-components-in-react-and-angular/", "published_at": "2021-03-15T13:23:09+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb63719eff", "title": "Should you drop support for IE 11?", "url": "https://mjswensen.com/blog/should-you-drop-support-for-internet-explorer-11/", "published_at": "2021-03-02T16:02:44+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb6423be61", "title": "How to Make an .ico File Using the macOS Terminal", "url": "https://mjswensen.com/blog/how-to-make-ico-file-macos-cli/", "published_at": "2021-02-11T13:03:36+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb643848b9", "title": "You Might Not Need Sass: Modern CSS Techniques", "url": "https://mjswensen.com/blog/you-might-not-need-sass-modern-css-techniques/", "published_at": "2020-09-15T12:46:12+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb644fcc31", "title": "The Book of Mormon: An Ancient Guide to Modern Times", "url": "https://mjswensen.com/blog/the-book-of-mormon-an-ancient-guide-to-modern-times/", "published_at": "2020-07-08T12:24:00+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb650d21c1", "title": "Building Stripe.com's Tabbed Preview Widget From Scratch in 30 Minutes", "url": "https://mjswensen.com/blog/building-stripe-tabbed-preview-widget-from-scratch-in-30-min/", "published_at": "2020-04-09T12:39:00+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb65de2a5c", "title": "Playing the Numbers: A Millennial Engineer's Probabilistic Approach to Believing in God", "url": "https://mjswensen.com/blog/playing-the-numbers/", "published_at": "2019-12-18T12:48:00+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb668b214a", "title": "From Electron to Progressive Web App", "url": "https://mjswensen.com/blog/from-electron-to-progressive-web-app/", "published_at": "2019-03-24T02:29:00+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb66b05d0c", "title": "Zen and the Art of Software Engineering", "url": "https://mjswensen.com/blog/zen-and-the-art-of-software-engineering/", "published_at": "2017-03-25T00:58:00+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb673147b7", "title": "GitHub Pages vs. GitLab Pages", "url": "https://mjswensen.com/blog/github-pages-vs-gitlab-pages/", "published_at": "2016-07-01T03:59:00+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb682da68f", "title": "Keeping Our Testimonies Up-to-date", "url": "https://mjswensen.com/blog/keeping-our-testimonies-up-to-date/", "published_at": "2016-05-15T15:25:00+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb683c1385", "title": "How to Learn From Mistakes", "url": "https://mjswensen.com/blog/how-to-learn-from-mistakes/", "published_at": "2015-12-26T23:29:00+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb6930a048", "title": "Static Sites Are Awesome", "url": "https://mjswensen.com/blog/static-sites-are-awesome/", "published_at": "2015-09-19T21:41:00+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb69922e28", "title": "Blissful Static Site Development with Jekyll, BrowserSync, and tmux", "url": "https://mjswensen.com/blog/blissful-static-site-development-with-jekyll-browsersync-and-tmux/", "published_at": "2015-06-20T05:44:34+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb6a71f575", "title": "Key Takeaways to Common CSS Questions", "url": "https://mjswensen.com/blog/key-takeaways-to-common-css-questions/", "published_at": "2015-06-12T14:42:13+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb6aaca04b", "title": "Practical Use Cases For The :empty Pseudo-class", "url": "https://mjswensen.com/blog/practical-use-cases-for-the-empty-pseudo-class/", "published_at": "2015-05-12T04:17:54+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb6b2dfb72", "title": "The Power of Education: Truly Thinking", "url": "https://mjswensen.com/blog/the-power-of-education-truly-thinking/", "published_at": "2015-04-27T20:42:18+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb6b721f76", "title": "How Personal Revelation Helps Us Prepare For Eternal Life", "url": "https://mjswensen.com/blog/how-personal-revelation-helps-us-prepare-for-eternal-life/", "published_at": "2015-04-10T13:30:19+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb6b97a2d1", "title": "Why Code Snobs Are Invaluable", "url": "https://mjswensen.com/blog/why-code-snobs-are-invaluable/", "published_at": "2015-01-30T20:50:44+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb6bc6c631", "title": "How Well Do You Know Your Programming Language?", "url": "https://mjswensen.com/blog/how-well-do-you-know-your-programming-language/", "published_at": "2014-08-16T05:48:17+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb6c7015ea", "title": "Configurations for a Friendlier tmux Status Bar", "url": "https://mjswensen.com/blog/friendlier-tmux-status-bar/", "published_at": "2014-08-09T23:22:00+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb6cef173a", "title": "Options For Git Status in Shell Prompt", "url": "https://mjswensen.com/blog/git-status-prompt-options/", "published_at": "2014-08-08T04:01:00+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb6d11eaa1", "title": "How the Gospel of Christ Relates to Those Who Passed On Without It", "url": "https://mjswensen.com/blog/how-the-gospel-of-christ-relates-to-those-who-passed-on-without-it/", "published_at": "2014-06-08T17:50:00+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb6deb0fa2", "title": "What Really Matters", "url": "https://mjswensen.com/blog/what-really-matters/", "published_at": "2014-04-24T14:29:00+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb6eaf18a7", "title": "Lucidpress: Publishing for Web and Print", "url": "https://mjswensen.com/blog/lucidpress/", "published_at": "2013-12-30T21:21:00+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb6ee7c5ff", "title": "Basic Beliefs of the Church of Jesus Christ", "url": "https://mjswensen.com/blog/basic-beliefs-of-the-church-of-jesus-christ/", "published_at": "2013-11-03T15:13:00+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb6f8d4420", "title": "CSS-only Text Gradients", "url": "https://mjswensen.com/blog/css-only-text-gradients/", "published_at": "2013-10-08T01:52:00+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb7026efc2", "title": "The Psychology Behind Open Source", "url": "https://mjswensen.com/blog/the-psychology-behind-open-source/", "published_at": "2013-10-03T15:30:00+00:00" }, { "id": "01a087a7-6f83-71ed-8dde-1ccb710b6560", "title": "Git", "url": "https://mjswensen.com/blog/git/", "published_at": "2013-08-26T14:10:00+00:00" } ] posts Claim your blog
Back to mjswensen.com
Blog · corpus.blog/blogs/mjswensen.com/posts

mjswensen.com

mjswensen.com

2025

2024

2023

2022

2021

2020

2019

2017

2016

2015

2014

2013

26 Aug 2013