<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Mihai Bojin — Blog</title><description>I keep critical systems reliable and build the teams behind them. I write about system design, reliability, infrastructure as code, Go, and Java.</description><link>https://mihaibojin.com</link><language>en</language><item><title>Simple scheduled workloads using Google Cloud</title><link>https://mihaibojin.com/projects/golang/scheduled-jobs-in-gcp</link><guid isPermaLink="true">https://mihaibojin.com/projects/golang/scheduled-jobs-in-gcp</guid><description>A short tutorial on scheduling workloads using Infrastructure-as-Code with GCP, Docker, and Terraform</description><pubDate>Mon, 13 Jun 2022 00:00:00 GMT</pubDate><category>Google Cloud</category><category>Docker</category><category>Golang</category><category>IaaC</category><category>Terraform</category><category>gcloud</category></item><item><title>Balancing best practices when your time is limited</title><link>https://mihaibojin.com/projects/golang/best-practices-vs-time</link><guid isPermaLink="true">https://mihaibojin.com/projects/golang/best-practices-vs-time</guid><description>The key to shipping toy projects is to choose the most impactful best-practices that will save you time and pain in the future.</description><pubDate>Wed, 08 Jun 2022 00:00:00 GMT</pubDate><category>Best practices</category><category>Time</category><category>Golang</category><category>Terraform</category></item><item><title>Build products, skip the non-functional requirements</title><link>https://mihaibojin.com/blog/building-products-vs-non-functional-requirements</link><guid isPermaLink="true">https://mihaibojin.com/blog/building-products-vs-non-functional-requirements</guid><description>I asked myself, am I overengineering my pet projects? Are you!?</description><pubDate>Sun, 17 Apr 2022 00:00:00 GMT</pubDate><category>Engineering</category><category>Product</category><category>Non Functional</category></item><item><title>Aiming for object-oriented design elegance</title><link>https://mihaibojin.com/application-settings/oop-design</link><guid isPermaLink="true">https://mihaibojin.com/application-settings/oop-design</guid><description>Figuring out a design that is a joy to use in production.</description><pubDate>Tue, 15 Mar 2022 00:00:00 GMT</pubDate><category>OOP</category><category>Java</category><category>class design</category></item><item><title>Subscribing to concurrent property updates</title><link>https://mihaibojin.com/application-settings/subscribing-to-concurrent-updates</link><guid isPermaLink="true">https://mihaibojin.com/application-settings/subscribing-to-concurrent-updates</guid><description>Dealing with update events while the underlying value is concurrently and repeatedly updated.</description><pubDate>Tue, 26 Oct 2021 00:00:00 GMT</pubDate><category>concurrency</category><category>Java</category><category>open-source</category><category>subscribers</category></item><item><title>Microbenchmarking Java code with JMH</title><link>https://mihaibojin.com/application-settings/micro-benchmarking-java-code-with-jmh</link><guid isPermaLink="true">https://mihaibojin.com/application-settings/micro-benchmarking-java-code-with-jmh</guid><description>Setting up the JMH Gradle plugin and writing your first micro-benchmark</description><pubDate>Thu, 23 Sep 2021 00:00:00 GMT</pubDate><category>Benchmark</category><category>Java</category><category>Gradle</category><category>JMH</category></item><item><title>An update on efficient multi-layered key ownership</title><link>https://mihaibojin.com/application-settings/system-design/algorithms-for-effective-key-ownership</link><guid isPermaLink="true">https://mihaibojin.com/application-settings/system-design/algorithms-for-effective-key-ownership</guid><description>Digging deeper into the algorithms required to establish key ownership and efficiently retrieve values in a concurrent application!</description><pubDate>Tue, 21 Sep 2021 00:00:00 GMT</pubDate><category>algorithms</category><category>ownership</category><category>concurrency</category><category>isolation level</category><category>read uncommitted</category><category>Java</category><category>open-source</category></item><item><title>Hosting my site on Vercel</title><link>https://mihaibojin.com/personal-site/hosting-on-vercel</link><guid isPermaLink="true">https://mihaibojin.com/personal-site/hosting-on-vercel</guid><description>I moved my site from Gatsby Cloud to Vercel.  Read the instructions and how to configure a NodeJS version for the build step.</description><pubDate>Thu, 09 Sep 2021 00:00:00 GMT</pubDate><category>Vercel</category><category>Hosting</category><category>Personal Site</category><category>Gatsby Cloud</category></item><item><title>System Design goal: efficient property reads from multiple sources</title><link>https://mihaibojin.com/application-settings/system-design/read-key-from-multiple-sources</link><guid isPermaLink="true">https://mihaibojin.com/application-settings/system-design/read-key-from-multiple-sources</guid><description>Choosing the right component design and data structures for reading and selecting a property&apos;s effective value, thread-safe.</description><pubDate>Mon, 06 Sep 2021 00:00:00 GMT</pubDate><category>System Design</category><category>Java</category><category>thread-safe</category><category>data structures</category><category>Properties</category><category>Settings</category></item><item><title>Create a new open-source Java project using the Gradle build tool</title><link>https://mihaibojin.com/application-settings/starting-an-open-source-java-project-with-gradle</link><guid isPermaLink="true">https://mihaibojin.com/application-settings/starting-an-open-source-java-project-with-gradle</guid><description>How to set up a brand new Java project using Gradle</description><pubDate>Thu, 02 Sep 2021 00:00:00 GMT</pubDate><category>Java</category><category>Gradle</category><category>Build</category><category>open-source</category><category>Errorprone</category><category>NullAway</category><category>javadoc</category><category>junit</category></item><item><title>Designing a library for reading layered application settings in Java</title><link>https://mihaibojin.com/application-settings/reading-application-settings-in-java</link><guid isPermaLink="true">https://mihaibojin.com/application-settings/reading-application-settings-in-java</guid><description>A series about writing a Java library for layering properties from multiple sources and allowing clients to efficiently receive updates.</description><pubDate>Sun, 29 Aug 2021 00:00:00 GMT</pubDate><category>Settings</category><category>Properties</category><category>Java</category></item><item><title>Crossposting articles from Gatsby to Medium, Dev.to, and Hashnode</title><link>https://mihaibojin.com/personal-site/crossposting-articles-from-gatsby</link><guid isPermaLink="true">https://mihaibojin.com/personal-site/crossposting-articles-from-gatsby</guid><description>Syndicate your content to other sites to increase your audience and engage more people.</description><pubDate>Sat, 21 Aug 2021 00:00:00 GMT</pubDate><category>Crosspost</category><category>GatsbyJS</category><category>Medium</category><category>DevTo</category></item><item><title>Configuring social sharing cards in GatsbyJS</title><link>https://mihaibojin.com/personal-site/social-sharing-cards</link><guid isPermaLink="true">https://mihaibojin.com/personal-site/social-sharing-cards</guid><description>Set up social sharing cards for your site to have your pages nicely displayed when shared on social media.</description><pubDate>Wed, 11 Aug 2021 22:00:00 GMT</pubDate><category>Social Sharing Cards</category><category>Tutorial</category><category>Introductory</category><category>Twitter</category><category>GatsbyImage</category><category>GatsbyJS</category><category>StaticImage</category><category>childImageSharp</category></item><item><title>Debugging social sharing cards</title><link>https://mihaibojin.com/personal-site/debugging-social-cards</link><guid isPermaLink="true">https://mihaibojin.com/personal-site/debugging-social-cards</guid><description>I figured out why the social sharing cards on my site stopped working and then I fixed the problem.</description><pubDate>Wed, 11 Aug 2021 00:00:00 GMT</pubDate><category>Social Sharing Cards</category><category>Twitter</category><category>Personal Site</category><category>GatsbyJS</category></item><item><title>Reverse a singly linked list</title><link>https://mihaibojin.com/coding-puzzles/linked-list/reverse-singly-linked-list</link><guid isPermaLink="true">https://mihaibojin.com/coding-puzzles/linked-list/reverse-singly-linked-list</guid><description>Given a reference to the head of a singly linked list, reverse it and return a reference to the head of the reversed list.</description><pubDate>Tue, 27 Jul 2021 00:00:00 GMT</pubDate><category>LinkedLists</category><category>DataStructures</category><category>Coding</category><category>Puzzles</category></item><item><title>My personal site (version 1.0)</title><link>https://mihaibojin.com/personal-site/v1</link><guid isPermaLink="true">https://mihaibojin.com/personal-site/v1</guid><description>Reflecting on building my personal site from scratch, in my spare time, over the past couple of months.</description><pubDate>Sat, 24 Jul 2021 00:00:00 GMT</pubDate><category>Personal Site</category><category>Version 1.0</category><category>v1</category><category>GatsbyJS</category></item><item><title>Setting up path redirects in GatsbyJS</title><link>https://mihaibojin.com/personal-site/path-redirects-in-gatsbyjs</link><guid isPermaLink="true">https://mihaibojin.com/personal-site/path-redirects-in-gatsbyjs</guid><description>Permanently redirect paths in Gatsby, but also Netlify, by defining rules in a _redirect file.</description><pubDate>Fri, 23 Jul 2021 00:00:00 GMT</pubDate><category>Redirect</category><category>GatsbyJS</category><category>Netlify</category><category>SEO</category><category>Personal Site</category></item><item><title>Search Engine Optimization with GatsbyJS</title><link>https://mihaibojin.com/personal-site/seo-on-gatsbyjs</link><guid isPermaLink="true">https://mihaibojin.com/personal-site/seo-on-gatsbyjs</guid><description>An introductory tutorial about Seach Engine Optimization (SEO) in Gatsby</description><pubDate>Thu, 01 Jul 2021 00:00:00 GMT</pubDate><category>SEO</category><category>Search Engine Optimization</category><category>GatsbyJS</category><category>Google</category><category>Personal Site</category></item><item><title>Blogging with GatsbyJS</title><link>https://mihaibojin.com/personal-site/blog-on-gatsbyjs</link><guid isPermaLink="true">https://mihaibojin.com/personal-site/blog-on-gatsbyjs</guid><description>How to blog on GatsbyJS for any audience, using Remark, Prism, and other plugins</description><pubDate>Tue, 29 Jun 2021 00:00:00 GMT</pubDate><category>Blogging</category><category>Plugin</category><category>GatsbyJS</category><category>Remark</category><category>Personal Site</category></item><item><title>Dynamic page generation in GatsbyJS</title><link>https://mihaibojin.com/personal-site/dynamic-page-generation-gatsbyjs</link><guid isPermaLink="true">https://mihaibojin.com/personal-site/dynamic-page-generation-gatsbyjs</guid><description>Avoid copy-pasting HTML in favor of using layouts, components, and GraphQL variables!</description><pubDate>Wed, 23 Jun 2021 00:00:00 GMT</pubDate><category>GatsbyJS</category><category>GraphQL</category><category>Page generation</category><category>Personal Site</category></item><item><title>Sum of two elements (2sum)</title><link>https://mihaibojin.com/coding-puzzles/arrays/sum-of-two-elements</link><guid isPermaLink="true">https://mihaibojin.com/coding-puzzles/arrays/sum-of-two-elements</guid><description>Given an array of integers and an integer target, return indices of the two numbers such that they add up to the target.</description><pubDate>Sun, 20 Jun 2021 00:00:00 GMT</pubDate><category>TwoSum</category><category>Arrays</category><category>Puzzles</category></item><item><title>Building a newsletter with ConvertKit</title><link>https://mihaibojin.com/personal-site/newsletter-convertkit</link><guid isPermaLink="true">https://mihaibojin.com/personal-site/newsletter-convertkit</guid><description>I am building an email list and starting a newsletter. I chose ConvertKit because it&apos;s made by Indie Hackers for...</description><pubDate>Sun, 20 Jun 2021 00:00:00 GMT</pubDate><category>Newsletter</category><category>ConvertKit</category><category>SPF</category><category>DKIM</category><category>DMARC</category><category>Terraform</category><category>Cloudflare</category><category>email</category><category>GatsbyJS</category><category>Personal Site</category></item><item><title>Privacy-friendly analytics in GatsbyJS</title><link>https://mihaibojin.com/personal-site/privacy-friendly-analytics-in-gatsbyjs</link><guid isPermaLink="true">https://mihaibojin.com/personal-site/privacy-friendly-analytics-in-gatsbyjs</guid><description>I set up my Gatsby site to only track users who want to be tracked, using a cookie consent banner to ask for their permission...</description><pubDate>Thu, 17 Jun 2021 00:00:00 GMT</pubDate><category>Analytics</category><category>Cookie Consent</category><category>GatsbyJS</category><category>Privacy</category><category>GDPR</category><category>Tutorial</category><category>Personal Site</category></item><item><title>Poll: what tech do you use to build personal sites in 2021?</title><link>https://mihaibojin.com/personal-site/publishing-stack-twitter-poll</link><guid isPermaLink="true">https://mihaibojin.com/personal-site/publishing-stack-twitter-poll</guid><description>I paid for advertising to see what tech stack people use in 2021. Here are the results...</description><pubDate>Wed, 16 Jun 2021 00:00:00 GMT</pubDate><category>Twitter</category><category>Poll</category><category>Ads</category><category>GatsbyJS</category><category>Personal Site</category></item><item><title>Great web design as a software engineer with TailwindUI</title><link>https://mihaibojin.com/personal-site/great-design-for-developers-with-tailwind-ui</link><guid isPermaLink="true">https://mihaibojin.com/personal-site/great-design-for-developers-with-tailwind-ui</guid><description>As a software developer, creating good web design is not one of my core skills. TailwindUI changed all that for me. Read more to find out why...</description><pubDate>Tue, 15 Jun 2021 00:00:00 GMT</pubDate><category>Web Design</category><category>TailwindUI</category><category>Personal Site</category></item><item><title>Building my site with GatsbyJS and TailwindCSS</title><link>https://mihaibojin.com/personal-site/gatsbyjs-and-tailwindcss-tech-stack</link><guid isPermaLink="true">https://mihaibojin.com/personal-site/gatsbyjs-and-tailwindcss-tech-stack</guid><description>Setting up a simple responsive website with Gatsby, Tailwind, and Remark.</description><pubDate>Mon, 14 Jun 2021 00:00:00 GMT</pubDate><category>GatsbyJS</category><category>TailwindCSS</category><category>Prettier</category><category>Remark</category><category>fonts</category><category>Personal Site</category></item><item><title>Structured Data for the Semantic Web with JSON-LD</title><link>https://mihaibojin.com/personal-site/structured-semantic-data-with-json-ld</link><guid isPermaLink="true">https://mihaibojin.com/personal-site/structured-semantic-data-with-json-ld</guid><description>How to add semantic data to your web site&apos;s articles with JSON for Linking Data (JSON+LD).</description><pubDate>Sun, 13 Jun 2021 00:00:00 GMT</pubDate><category>JSON-LD</category><category>Structured Data</category><category>Semantic Web</category><category>Personal Site</category></item><item><title>The Software Engineering Generalist</title><link>https://mihaibojin.com/ic/software-engineering-generalist</link><guid isPermaLink="true">https://mihaibojin.com/ic/software-engineering-generalist</guid><description>What does it mean to be a generalist and how can you become one?</description><pubDate>Tue, 08 Jun 2021 00:00:00 GMT</pubDate><category>software developer</category><category>software engineer</category><category>generalist</category></item><item><title>Why do I write?</title><link>https://mihaibojin.com/personal-site/why-do-i-write</link><guid isPermaLink="true">https://mihaibojin.com/personal-site/why-do-i-write</guid><description>My motivation behind setting up a personal site and writing about software engineering</description><pubDate>Sun, 30 May 2021 00:00:00 GMT</pubDate><category>Software Development</category><category>Personal Site</category><category>Journal</category></item><item><title>Building a personal site in 2021</title><link>https://mihaibojin.com/personal-site/building-a-personal-site</link><guid isPermaLink="true">https://mihaibojin.com/personal-site/building-a-personal-site</guid><description>Read about my journey to building a personal site, from scratch, in 2021</description><pubDate>Sat, 29 May 2021 00:00:00 GMT</pubDate><category>Journal</category><category>Personal Site</category></item></channel></rss>