41554 blogs · [ { "id": "01a087c8-b384-72a6-8053-b83bcf07d157", "title": "Write Blogs So LLMs Have Something to Read", "url": "https://pragmaticpineapple.com/write-blogs-so-llms-have-something-to-read/", "published_at": "2025-02-18T00:00:00+00:00" }, { "id": "01a087c8-b385-729e-b7a9-dd9cde407374", "title": "Stress-Free Website Testing for Instagram and Facebook In-App Browsers", "url": "https://pragmaticpineapple.com/stress-free-website-testing-for-instagram-and-facebook-in-app-browsers/", "published_at": "2024-04-20T00:00:00+00:00" }, { "id": "01a087c8-b385-729e-b7a9-dd9cdf0d3dba", "title": "Ultimate Vim Vue Setup", "url": "https://pragmaticpineapple.com/ultimate-vim-vue-setup/", "published_at": "2024-02-18T00:00:00+00:00" }, { "id": "01a087c8-b385-729e-b7a9-dd9cdf17814e", "title": "Deploying and Configuring Lighthouse CI Server", "url": "https://pragmaticpineapple.com/deploying-and-configuring-lightouse-ci-server/", "published_at": "2023-10-17T00:00:00+00:00" }, { "id": "01a087c8-b385-729e-b7a9-dd9cdfda3403", "title": "Using Server-Sent Events (SSE) to Stream Data in Rails", "url": "https://pragmaticpineapple.com/using-server-sent-events-to-stream-data-in-rails/", "published_at": "2023-07-25T00:00:00+00:00" }, { "id": "01a087c8-b385-729e-b7a9-dd9ce0b9f05e", "title": "Control Your Dev Processes with Overmind", "url": "https://pragmaticpineapple.com/control-your-dev-processes-with-overmind/", "published_at": "2023-07-18T00:00:00+00:00" }, { "id": "01a087c8-b385-729e-b7a9-dd9ce1592241", "title": "How to Upload Files in Angular", "url": "https://pragmaticpineapple.com/how-to-upload-files-in-angular/", "published_at": "2023-07-07T00:00:00+00:00" }, { "id": "01a087c8-b385-729e-b7a9-dd9ce222ef94", "title": "How to Upload File in React", "url": "https://pragmaticpineapple.com/how-to-upload-file-in-react/", "published_at": "2023-06-02T00:00:00+00:00" }, { "id": "01a087c8-b385-729e-b7a9-dd9ce2b46ba3", "title": "A Guide to Handling Errors in Preact", "url": "https://pragmaticpineapple.com/a-guide-to-handling-errors-in-preact/", "published_at": "2023-05-03T00:00:00+00:00" }, { "id": "01a087c8-b385-729e-b7a9-dd9ce346d76b", "title": "How to Sync Your Storybook Design System Into Figma", "url": "https://pragmaticpineapple.com/how-to-sync-your-storybook-design-system-into-figma/", "published_at": "2023-03-16T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f34829e80", "title": "Building Websites with JamStack: A Look at the Benefits and Limitations", "url": "https://pragmaticpineapple.com/building-websites-with-jamstack-a-look-at-the-benefits-and-limitations/", "published_at": "2023-02-13T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f355ae02d", "title": "8 Free Hosting Services for Your React App", "url": "https://pragmaticpineapple.com/8-free-react-app-hosting-services/", "published_at": "2022-12-29T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f365503a7", "title": "Adding custom HTML and CSS to GitHub README", "url": "https://pragmaticpineapple.com/adding-custom-html-and-css-to-github-readme/", "published_at": "2022-12-13T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f3691fbac", "title": "A Guide to Service Workers", "url": "https://pragmaticpineapple.com/a-guide-to-service-workers/", "published_at": "2022-11-02T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f37014333", "title": "What's New in Next.js 13", "url": "https://pragmaticpineapple.com/whats-new-in-nextjs-13/", "published_at": "2022-11-02T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f377af946", "title": "How to Preview localhost Website on Mobile Phone", "url": "https://pragmaticpineapple.com/how-to-preview-localhost-website-on-mobile-phone/", "published_at": "2022-10-02T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f37c5149f", "title": "A Guide to Intersection Observer", "url": "https://pragmaticpineapple.com/intersection-observer-guide/", "published_at": "2022-08-31T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f386893ec", "title": "Create a URL shortener with Cloudflare Workers", "url": "https://pragmaticpineapple.com/creating-url-shortener-cloudflare-workers/", "published_at": "2022-08-26T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f38ecc4d1", "title": "How to Handle Errors in React", "url": "https://pragmaticpineapple.com/how-to-hande-errors-in-react/", "published_at": "2022-06-15T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f3932ba47", "title": "What's New in React 18", "url": "https://pragmaticpineapple.com/whats-new-in-react-18/", "published_at": "2022-04-13T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f3a16546b", "title": "DevOps JavaScript - Intro to Writing Scripts With zx", "url": "https://pragmaticpineapple.com/devops-javascript-intro-to-writing-scripts-with-zx/", "published_at": "2022-03-15T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f3a6ebd91", "title": "Add Newsletter Subscription Form to React Website", "url": "https://pragmaticpineapple.com/add-newsletter-subscription-form-to-react-website/", "published_at": "2022-01-23T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f3ab9b9d2", "title": "How to Migrate Your Blog from Gatsby to Next.js", "url": "https://pragmaticpineapple.com/how-to-migrate-your-blog-from-gatsby-to-nextjs/", "published_at": "2022-01-12T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f3b3d7537", "title": "Smoothly Reverting CSS Animations", "url": "https://pragmaticpineapple.com/smoothly-reverting-css-animations/", "published_at": "2021-12-20T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f3b94e04e", "title": "Gentle Guide to Get Started With tmux", "url": "https://pragmaticpineapple.com/gentle-guide-to-get-started-with-tmux/", "published_at": "2021-08-16T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f3c419a00", "title": "General Ruby on Rails Problems and Takeaways", "url": "https://pragmaticpineapple.com/general-ruby-on-rails-problems-and-takeaways/", "published_at": "2021-07-07T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f3cc871a1", "title": "5 Essential Tips for Testing JavaScript UIs", "url": "https://pragmaticpineapple.com/5-essential-tips-for-testing-javascript-uis/", "published_at": "2021-06-30T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f3cd510d0", "title": "4 Useful fzf Tricks for Your Terminal", "url": "https://pragmaticpineapple.com/four-useful-fzf-tricks-for-your-terminal/", "published_at": "2021-06-21T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f3d61f91c", "title": "Three Ways To Avoid Duplicate Sidekiq Jobs", "url": "https://pragmaticpineapple.com/three-ways-to-avoid-duplicate-sidekiq-jobs/", "published_at": "2021-05-12T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f3dfe367a", "title": "Reducing Boilerplate With Vim Templates", "url": "https://pragmaticpineapple.com/reducing-boilerplate-with-vim-templates/", "published_at": "2021-05-05T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f3e0c4f8b", "title": "Ruby on Rails Controller Patterns and Anti-patterns", "url": "https://pragmaticpineapple.com/ruby-on-rails-controller-anti-patterns-and-patterns/", "published_at": "2021-04-14T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f3ecc0c5c", "title": "Why Write Rails View Tests", "url": "https://pragmaticpineapple.com/why-write-rails-view-tests/", "published_at": "2021-03-30T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f3f288a10", "title": "7 Ways to Debug Jest Tests in Terminal", "url": "https://pragmaticpineapple.com/7-ways-to-debug-jest-tests-in-terminal/", "published_at": "2021-03-15T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f3ff7ade6", "title": "render_async Adds Support for Rails Turbo", "url": "https://pragmaticpineapple.com/render-async-adds-support-for-rails-turbo/", "published_at": "2021-02-23T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f4098d54d", "title": "Ruby on Rails View Patterns and Anti-patterns", "url": "https://pragmaticpineapple.com/ruby-on-rails-view-anti-patterns-and-patterns/", "published_at": "2021-02-10T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f4122861d", "title": "Add Updated At To Your Gatsby Blog", "url": "https://pragmaticpineapple.com/add-updated-at-to-your-gatsby-blog/", "published_at": "2021-02-08T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f41471253", "title": "Ethical Programming - Is It Worth It?", "url": "https://pragmaticpineapple.com/ethical-programming-is-it-worth-it/", "published_at": "2020-12-15T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f421b7324", "title": "Ruby on Rails Model Anti-patterns and Patterns", "url": "https://pragmaticpineapple.com/rails-model-anti-patterns-and-patterns/", "published_at": "2020-11-18T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f4273a4ec", "title": "Improving Vim Workflow With fzf", "url": "https://pragmaticpineapple.com/improving-vim-workflow-with-fzf/", "published_at": "2020-11-17T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f42d1f120", "title": "Reloading Rails Partials on Demand with render_async", "url": "https://pragmaticpineapple.com/reloading-rails-partials-on-demand-with-render-async/", "published_at": "2020-10-27T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f42d8779f", "title": "Rails Concerns: To Concern Or Not To Concern", "url": "https://pragmaticpineapple.com/rails-concers-to-concern-or-not-to-concern/", "published_at": "2020-09-16T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f43d74c16", "title": "Setting Up Gatsby Blog From Scratch", "url": "https://pragmaticpineapple.com/setting-up-gatsby-blog-from-scratch/", "published_at": "2020-08-14T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f44d2a4a7", "title": "Introduction to Ruby on Rails Patterns and Anti-patterns", "url": "https://pragmaticpineapple.com/introduction-to-ruby-on-rails-patterns-and-anti-patterns/", "published_at": "2020-08-05T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f45599edc", "title": "Why Should You Learn Vim in 2020", "url": "https://pragmaticpineapple.com/why-should-you-learn-vim-in-2020/", "published_at": "2020-08-05T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f45a7831f", "title": "render_async 2.1.7 Lets You Retry Requests With Delay", "url": "https://pragmaticpineapple.com/render-async-2-1-7-lets-you-retry-requests-with-delay/", "published_at": "2020-08-03T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f45ee4d34", "title": "How Did Vim Become So Popular", "url": "https://pragmaticpineapple.com/how-did-vim-become-so-popular/", "published_at": "2020-06-29T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f4673c388", "title": "Do Not Follow JavaScript Trends", "url": "https://pragmaticpineapple.com/do-not-follow-javascript-trends/", "published_at": "2020-06-16T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f470ccd43", "title": "JavaScript Growing Pains: From 0 to 13,000 Dependencies", "url": "https://pragmaticpineapple.com/javascript-growing-pains-from-0-to-13000-dependencies/", "published_at": "2020-05-14T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f47d39ea5", "title": "render_async 2.1.6 released", "url": "https://pragmaticpineapple.com/render-async-2-1-6-released/", "published_at": "2020-05-10T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f481d514e", "title": "Ultimate Vim TypeScript Setup", "url": "https://pragmaticpineapple.com/ultimate-vim-typescript-setup/", "published_at": "2020-05-05T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f48cef03e", "title": "Ride Down Into JavaScript Dependency Hell", "url": "https://pragmaticpineapple.com/ride-down-into-javascript-dependency-hell/", "published_at": "2020-04-09T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f48e3025d", "title": "render_async Fires Events By Default", "url": "https://pragmaticpineapple.com/render-async-fires-events-by-default/", "published_at": "2020-03-25T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f498a10e7", "title": "Effective Profiling in Google Chrome", "url": "https://pragmaticpineapple.com/effective-profiling-in-google-chrome/", "published_at": "2020-02-20T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f4a049481", "title": "Getting Started with Svelte and Rails 6", "url": "https://pragmaticpineapple.com/getting-started-with-svelte-and-rails-6/", "published_at": "2019-10-27T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f4a6bf892", "title": "Rails HTML Polling Without Writing JavaScript?", "url": "https://pragmaticpineapple.com/rails-html-polling-without-javascript/", "published_at": "2019-05-14T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f4b1ceeee", "title": "Losing .bind(this) in React", "url": "https://pragmaticpineapple.com/losing-bind-this-in-react/", "published_at": "2018-01-13T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f4b97662f", "title": "Speeding Up Rendering Rails Pages with render_async", "url": "https://pragmaticpineapple.com/speeding-up-rails-pages-with-render-async/", "published_at": "2017-06-08T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f4c1c461f", "title": "Building and Deploying Microservices with AWS Lambda and Semaphore", "url": "https://pragmaticpineapple.com/building-and-deploying-microservices-with-aws-lambda-and-semaphore/", "published_at": "2015-12-22T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f4c8a1226", "title": "How to Deploy a Node.js Application to Elastic Beanstalk with Semaphore", "url": "https://pragmaticpineapple.com/how-to-deploy-a-node-js-application-to-elastic-beanstalk-with-semaphore/", "published_at": "2015-12-09T00:00:00+00:00" }, { "id": "01a087c8-b386-7276-aec3-aa1f4d2ed68a", "title": "How to Deploy a Ruby on Rails Application to Elastic Beanstalk with Semaphore", "url": "https://pragmaticpineapple.com/how-to-deploy-a-ruby-on-rails-application-to-elastic-beanstalk-with-semaphore/", "published_at": "2015-10-20T00:00:00+00:00" } ] posts Claim your blog
Back to pragmaticpineapple.com
Blog · corpus.blog/blogs/pragmaticpineapple.com/posts

pragmaticpineapple.com

pragmaticpineapple.com

2025

2024

2023

2022

2021

2020

2019

2018

2017

2015