41554 blogs · [ { "id": "01a0b68b-4cea-724b-ae27-dbd763a606fc", "title": "Shannon Crabill", "url": "http://www.shannoncrabill.com", "published_at": "2026-09-07T05:20:44+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd1db6aa4", "title": "Solotober 2025: Recap", "url": "https://shannoncrabill.com/posts/solotober-2025-recap/", "published_at": "2025-11-02T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd6d045b1", "title": "Vibe Coding? In this economy?", "url": "https://shannoncrabill.com/posts/vibe-coding-in-this-economy/", "published_at": "2025-10-16T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd24cd371", "title": "Solotober 2025", "url": "https://shannoncrabill.com/posts/solotober-2025/", "published_at": "2025-09-29T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad530628d350", "title": "Link: Notes from the Dev: Using Emmet for Faster HTML Email Coding", "url": "https://shannoncrabill.com/posts/link-notes-from-the-dev-using-emmet-for-faster-html-email-coding/", "published_at": "2022-08-28T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fda5df6f9", "title": "Notes from the Dev: Using Emmet for Faster HTML Email Coding", "url": "https://shannoncrabill.com/posts/notes-from-the-dev/", "published_at": "2022-08-28T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52fd6968de", "title": "Focused Breathing", "url": "https://shannoncrabill.com/posts/focused-breathing/", "published_at": "2021-01-11T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd04fdcd6", "title": "Automatically Open the Current Directory in VS Code From Terminal", "url": "https://shannoncrabill.com/posts/shell-command-open-directory-in-vscode/", "published_at": "2020-12-28T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52fb662a43", "title": "Engineering Blogs to Follow", "url": "https://shannoncrabill.com/posts/engineering-blogs-to-follow/", "published_at": "2020-12-27T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad5303e4e873", "title": "Keyframes", "url": "https://shannoncrabill.com/posts/keyframe-animations/", "published_at": "2020-12-20T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52ff1359c9", "title": "Orphan Branches in Git", "url": "https://shannoncrabill.com/posts/git-orphan-branches/", "published_at": "2020-12-14T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd4a66782", "title": "Doing the `.split()` with Javascript", "url": "https://shannoncrabill.com/posts/split-javascript-method/", "published_at": "2020-12-05T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f69f6182", "title": "Base64 Encoding", "url": "https://shannoncrabill.com/posts/base64-encoding-mac-terminal/", "published_at": "2020-11-28T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52fc56a45c", "title": "Planning Your Escape from Tutorial Hell", "url": "https://shannoncrabill.com/posts/escape-from-tutorial-hell/", "published_at": "2020-11-22T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52fe4ea508", "title": "Free APIs", "url": "https://shannoncrabill.com/posts/free-apis/", "published_at": "2020-11-15T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad53090ebbfa", "title": "Open Graph for Personal Projects", "url": "https://shannoncrabill.com/posts/open-graph/", "published_at": "2020-11-08T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f7a3121d", "title": "Count How Many Days Until Halloween with Javascript Date Objects", "url": "https://shannoncrabill.com/posts/countdown-to-date-javascript-date-objects/", "published_at": "2020-11-01T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f73b1d9c", "title": "A Beginner's Guide to Managing React State with Hooks", "url": "https://shannoncrabill.com/posts/beginners-guide-manage-state-react-hook/", "published_at": "2020-10-25T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd3f1bd16", "title": "Switching Themes Based on the Current Month", "url": "https://shannoncrabill.com/posts/switching-themes-based-on-the-current-month/", "published_at": "2020-10-18T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fca7c19bb", "title": "Opting Out of Hacktoberfest", "url": "https://shannoncrabill.com/posts/opting-out-of-hacktoberfest/", "published_at": "2020-10-11T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd9ede4be", "title": "You Don't Have to Participate in Hacktoberfest", "url": "https://shannoncrabill.com/posts/you-dont-have-to-participate-in-hacktoberfest/", "published_at": "2020-10-01T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad5303eea0db", "title": "In Defense of Tutorial Hell (and How to Escape It)", "url": "https://shannoncrabill.com/posts/in-defense-of-tutorial-hell-and-how-to-escape-it/", "published_at": "2020-09-24T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fcb3ca2b8", "title": "Queer Eye Text Effect in HTML & CSS", "url": "https://shannoncrabill.com/posts/queer-eye-text-effect-html-css/", "published_at": "2020-09-20T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd3cd862c", "title": "Switching from Sqlite3 to Postgres", "url": "https://shannoncrabill.com/posts/switching-from-sqlite3-to-postgres/", "published_at": "2020-09-13T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd8dd7711", "title": "Why Poodles Are the Best and Worst Dogs Ever", "url": "https://shannoncrabill.com/posts/why-poodles-are-the-best-and-worst-dogs-ever/", "published_at": "2020-09-04T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fda7d9553", "title": "Web Page Redirects with .htaccess and Apache", "url": "https://shannoncrabill.com/posts/web-page-redirects-with-htaccess-and-apache/", "published_at": "2020-09-04T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd09d2354", "title": "Social Media Preview Images for Your GitHub Projects", "url": "https://shannoncrabill.com/posts/social-media-preview-image-github/", "published_at": "2020-08-30T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad530312a223", "title": "Drab to Fab: Makeover Your Project README In 3 Steps", "url": "https://shannoncrabill.com/posts/improve-your-project-readme/", "published_at": "2020-08-22T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f60cba0a", "title": "Amending Git Commits", "url": "https://shannoncrabill.com/posts/amending-git-commits/", "published_at": "2020-08-15T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fce775ed9", "title": "Nominee: Ruby on Rails Thinker of the Year", "url": "https://shannoncrabill.com/posts/ruby-on-rails-thinker-of-the-year/", "published_at": "2020-08-13T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f826573a", "title": "Approaching Problems like a Software Engineer", "url": "https://shannoncrabill.com/posts/approaching-problems-like-a-software-engineer/", "published_at": "2020-08-08T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad5301398f73", "title": "Custom Data Attribute", "url": "https://shannoncrabill.com/posts/html-custom-data-attribute/", "published_at": "2020-08-02T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd7b32cf0", "title": "vh & vw", "url": "https://shannoncrabill.com/posts/vh-and-vw-units/", "published_at": "2020-07-25T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad5306bf3a72", "title": "Link: Sending Quality Emails as a One Person Email Team", "url": "https://shannoncrabill.com/posts/link-sending-quality-emails-as-a-one-person-email-team/", "published_at": "2020-07-17T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f4e7d026", "title": "Coding Everyday Is Fun—Until It Isn't.", "url": "https://shannoncrabill.com/posts/coding-everyday-is-fun-until-it-isnt/", "published_at": "2020-06-28T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f327344e", "title": "Link: Auditing Your Email Design System", "url": "https://shannoncrabill.com/posts/auditing-your-email-design-system/", "published_at": "2020-05-25T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f86cc87e", "title": "Bubble Wrap", "url": "https://shannoncrabill.com/posts/bubble-wrap/", "published_at": "2020-05-19T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd04dc1b8", "title": "Scoville, fun with peppers and gradients", "url": "https://shannoncrabill.com/posts/scoville/", "published_at": "2020-05-18T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad5308f58723", "title": "Oh Hex! Building a Random Hex Generator with Javascript", "url": "https://shannoncrabill.com/posts/oh-hex-random-hex-color-generator/", "published_at": "2020-05-17T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f1b8f812", "title": "7 Days 7 Websites", "url": "https://shannoncrabill.com/posts/7-days-7-websites/", "published_at": "2020-05-16T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fcb738cfd", "title": "Abstracting Button Events in React", "url": "https://shannoncrabill.com/posts/react-abstracting-click-events/", "published_at": "2020-04-26T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad53022b3087", "title": "Link: How to Use Emojis and Special Characters in Your Subject Line or Preheader Text", "url": "https://shannoncrabill.com/posts/how-to-use-emojis-and-special-characters-in-your-subject-line-or-preheader-text/", "published_at": "2020-04-23T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fcc73b746", "title": "Creating Associated Objects in Single Page Applications", "url": "https://shannoncrabill.com/posts/ruby-on-rails-api-single-page-javascript-application/", "published_at": "2020-02-24T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fcd48803d", "title": "Singular or Plural? A Cheatsheet for Ruby on Rails Generators", "url": "https://shannoncrabill.com/posts/ruby-on-rails-singular-or-plural-generator-cheat-sheet/", "published_at": "2020-02-02T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fcd958e5e", "title": "Using .inject to Find the Most Popular Item in a Has_Many, Through Relationship", "url": "https://shannoncrabill.com/posts/ruby-on-rails-has-many-through-most-popular/", "published_at": "2020-01-29T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fcf3626ec", "title": "Debugging Has Many, Through Relationships in Ruby on Rails", "url": "https://shannoncrabill.com/posts/ruby-on-rails-debugging-model-associations/", "published_at": "2019-12-16T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd0f10f2e", "title": "Building a Wine Journal Application with Sinatra", "url": "https://shannoncrabill.com/posts/sinatra-crud-application/", "published_at": "2019-10-13T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad5302d5dcc8", "title": "Hiding Sensitive Information with Environmental Variables in Ruby", "url": "https://shannoncrabill.com/posts/hiding-sensitive-information-with-environmental-variables-in-ruby/", "published_at": "2019-10-11T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad530617e87c", "title": "Link: Featured on the Ladybug Podcast", "url": "https://shannoncrabill.com/posts/link-featured-on-the-ladybug-podcast/", "published_at": "2019-10-10T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f58cf178", "title": "CLI Have No Idea What I'm Doing: Planning (and Building) My First CLI Application", "url": "https://shannoncrabill.com/posts/cli-application-planning/", "published_at": "2019-08-11T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd5775acd", "title": "Taking Note", "url": "https://shannoncrabill.com/posts/taking-notes-as-a-developer/", "published_at": "2019-07-15T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f2f52776", "title": "Asking for Help as a Developer", "url": "https://shannoncrabill.com/posts/asking-for-help-as-a-developer/", "published_at": "2019-06-26T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f93380fb", "title": "Documenting for Open Source", "url": "https://shannoncrabill.com/posts/documenting-for-open-source-write-the-docs-2019/", "published_at": "2019-02-23T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f154642d", "title": "The One Where 2018 Comes To An End", "url": "https://shannoncrabill.com/posts/2018/", "published_at": "2019-01-01T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad53082fed56", "title": "I Cried After Completing my Nanodegree And It Was Worth It—My Udacity Journey", "url": "https://shannoncrabill.com/posts/my-udacity-journey/", "published_at": "2018-11-18T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd64ebfe8", "title": "The One with the Color Picker in Chrome DevTools", "url": "https://shannoncrabill.com/posts/the-one-with-the-color-picker-in-chrome-devtools/", "published_at": "2018-11-17T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f9edf384", "title": "The One Where I Did an AMA on Email Development", "url": "https://shannoncrabill.com/posts/email-development-ama/", "published_at": "2018-11-16T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad5309c8a2c0", "title": "The One Where I Did an AMA on Open Source", "url": "https://shannoncrabill.com/posts/open-source-ama/", "published_at": "2018-09-26T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd5ff16bf", "title": "The One About Twitter Tech Chats", "url": "https://shannoncrabill.com/posts/twitter-tech-chats/", "published_at": "2018-09-25T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52ffc91cf0", "title": "Talk: Guide Your Team with an Email Playbook", "url": "https://shannoncrabill.com/posts/guide-your-team-with-an-email-playbook-litmuslive-2018/", "published_at": "2018-09-17T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd88e91ed", "title": "Talk: What I’ve learned as an Email Developer", "url": "https://shannoncrabill.com/posts/what-ive-learned-as-an-email-developer-momscancode-2018/", "published_at": "2018-09-10T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad5307895ff9", "title": "Talk: What I Learned From Managing My First Open Source Project on Github", "url": "https://shannoncrabill.com/posts/managing-open-source-on-github-codeland-2018/", "published_at": "2018-05-01T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f42f5c71", "title": "#CNC2018 “Code More” Mission #1: Goals, Assumptions, Risks", "url": "https://shannoncrabill.com/posts/cnc2018-code-more-mission-one/", "published_at": "2018-01-29T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f525b162", "title": "#CNC2018 \"Code More\" Pre-Mission", "url": "https://shannoncrabill.com/posts/cnc2018-code-more-pre-mission/", "published_at": "2018-01-20T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd335c7c6", "title": "It's Official! I'll be Speaking at Codeland!", "url": "https://shannoncrabill.com/posts/speaker-announcement-codeland-2018/", "published_at": "2017-12-21T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fcfe89557", "title": "The One About Self-Care", "url": "https://shannoncrabill.com/posts/self-care-taking-a-break/", "published_at": "2017-11-20T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd9ccffc3", "title": "The One Where I Attended WordCamp Baltimore", "url": "https://shannoncrabill.com/posts/wordcamp-baltimore-2017/", "published_at": "2017-10-25T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad5300403fe1", "title": "The One About Hacktoberfest", "url": "https://shannoncrabill.com/posts/hacktoberfest-2017/", "published_at": "2017-10-20T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fd5b9ee17", "title": "Top Tech Conferences I'm Watching Right Now", "url": "https://shannoncrabill.com/posts/tech-conferences/", "published_at": "2017-10-11T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad5303580aec", "title": "The One Where I Tweeted About Imposter Syndrome", "url": "https://shannoncrabill.com/posts/imposter-syndrome/", "published_at": "2017-09-28T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad5305864ded", "title": "The One Where I Learned Javascript (An Update)", "url": "https://shannoncrabill.com/posts/learning-javascript-update/", "published_at": "2017-09-02T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad5304b08e75", "title": "The One Where I Learned Javascript", "url": "https://shannoncrabill.com/posts/learning-javascript/", "published_at": "2017-08-06T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f3ae743e", "title": "Choosing an Email Platform: 6 Top Design Requirements to Consider", "url": "https://shannoncrabill.com/posts/choosing-an-email-platform/", "published_at": "2017-08-01T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52fcd97510", "title": "The One with the Cover Letter", "url": "https://shannoncrabill.com/posts/edx-colwri2-2-week-3-journal/", "published_at": "2017-06-22T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52faab1552", "title": "The One with the Tone", "url": "https://shannoncrabill.com/posts/edx-colwri2-2-week-2-journal/", "published_at": "2017-06-11T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f9e82376", "title": "The One Where I Signed Up for an edX Course", "url": "https://shannoncrabill.com/posts/edx-colwri2-2-week-1-journal/", "published_at": "2017-06-08T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f279bbcc", "title": "The One Where I Went To Adobe Summit", "url": "https://shannoncrabill.com/posts/adobe-summit-digital-marketing-2017/", "published_at": "2017-03-26T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad5300ea0a1f", "title": "Hello world!", "url": "https://shannoncrabill.com/posts/hello-world/", "published_at": "2017-02-21T00:00:00+00:00" }, { "id": "01a087df-1fc3-739f-8a59-ad52f8cb5047", "title": "Podcast: The Ins and Outs of Email Design and Development", "url": "https://shannoncrabill.com/posts/design-edu-today-email-design-development/", "published_at": "2016-10-25T00:00:00+00:00" }, { "id": "01a087df-1fc4-7055-8734-da9fcc5d8228", "title": "Portfolio", "url": "https://shannoncrabill.com/posts/portfolio/", "published_at": null } ] posts Claim your blog
Back to Home • Shannon Crabill
Blog · corpus.blog/blogs/shannoncrabill.com/posts

Home • Shannon Crabill

shannoncrabill.com

2026

2025

2022

2021

2020

2019

2018

2017

2016

Undated