<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Brian Demers</title>
    <link>https://blog.bdemers.io/</link>
    <description>Recent content on Brian Demers</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 25 Sep 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://blog.bdemers.io/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Testing on Thin Ice: Chipping Away at Test Unpredictability</title>
      <link>https://blog.bdemers.io/presentations/2025/sfjug-testing-on-thin-ice/</link>
      <pubDate>Thu, 25 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2025/sfjug-testing-on-thin-ice/</guid>
      <description>&lt;p&gt;Ever tried to catch melting snowflakes? That&amp;rsquo;s the challenge of dealing with flaky tests - those annoying, unpredictable tests that fail randomly and pass when rerun. In this talk, we&amp;rsquo;ll slide down the slippery slope of why flaky tests are more than just a nuisance. They&amp;rsquo;re time-sinks, morale crushers, and silent code quality killers.&lt;/p&gt;&#xA;&lt;p&gt;We&amp;rsquo;ll skate across real-life scenarios to understand how flaky tests can freeze your development in its tracks, and why sweeping them under the rug is like ignoring a crack in the ice. From delayed releases to lurking bugs, the stakes are high, and the costs are real.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testing on Thin Ice: Chipping Away at Test Unpredictability</title>
      <link>https://blog.bdemers.io/presentations/2025/dpe-summit-testing-on-thin-ice/</link>
      <pubDate>Tue, 23 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2025/dpe-summit-testing-on-thin-ice/</guid>
      <description>&lt;p&gt;Ever tried to catch melting snowflakes? That&amp;rsquo;s the challenge of dealing with flaky tests - those annoying, unpredictable tests that fail randomly and pass when rerun. In this talk, we&amp;rsquo;ll slide down the slippery slope of why flaky tests are more than just a nuisance. They&amp;rsquo;re time-sinks, morale crushers, and silent code quality killers.&lt;/p&gt;&#xA;&lt;p&gt;We&amp;rsquo;ll skate across real-life scenarios to understand how flaky tests can freeze your development in its tracks, and why sweeping them under the rug is like ignoring a crack in the ice. From delayed releases to lurking bugs, the stakes are high, and the costs are real.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SBOMs Are Not Enough</title>
      <link>https://blog.bdemers.io/presentations/2025/sboms-are-not-enough-jcon/</link>
      <pubDate>Tue, 13 May 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2025/sboms-are-not-enough-jcon/</guid>
      <description>&lt;p&gt;Software Bill of Materials (SBOMs) have emerged as a critical component of software supply chain security, promising transparency about the dependencies in our applications. But are they delivering on that promise? While SBOMs provide a snapshot of the components included in software, they often fail to address a vital piece of the puzzle: the tools, libraries, and configurations actually used to build it.&lt;/p&gt;&#xA;&lt;p&gt;In this talk, we’ll explore the varying degrees of SBOM quality and expose the gaps that can undermine their utility. By understanding what SBOMs are—and what they aren’t—we’ll uncover the risks of relying on incomplete or inaccurate data and discuss complementary strategies for achieving a truly transparent and secure build process. Attendees will leave with a deeper appreciation of how SBOMs fit into the broader supply chain security landscape and actionable insights for bridging the gaps.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testing on Thin Ice: Chipping Away at Test Unpredictability</title>
      <link>https://blog.bdemers.io/presentations/2025/devnexus-testing-on-thin-ice/</link>
      <pubDate>Thu, 06 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2025/devnexus-testing-on-thin-ice/</guid>
      <description>&lt;p&gt;Ever tried to catch melting snowflakes? That&amp;rsquo;s the challenge of dealing with flaky tests - those annoying, unpredictable tests that fail randomly and pass when rerun. In this talk, we&amp;rsquo;ll slide down the slippery slope of why flaky tests are more than just a nuisance. They&amp;rsquo;re time-sinks, morale crushers, and silent code quality killers.&lt;/p&gt;&#xA;&lt;p&gt;We&amp;rsquo;ll skate across real-life scenarios to understand how flaky tests can freeze your development in its tracks, and why sweeping them under the rug is like ignoring a crack in the ice. From delayed releases to lurking bugs, the stakes are high, and the costs are real.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Use the Maven Wrapper to optimize your build workflow</title>
      <link>https://blog.bdemers.io/blog/2024/use-the-maven-wrapper-to-optimize-your-build-workflow/</link>
      <pubDate>Mon, 07 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2024/use-the-maven-wrapper-to-optimize-your-build-workflow/</guid>
      <description>&lt;p&gt;If you’re a Java developer, the Maven Wrapper is a simple tool that transparently manages your Maven installation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Five ways to speed up your Maven builds</title>
      <link>https://blog.bdemers.io/blog/2024/five-ways-to-speed-up-your-apache-maven-builds/</link>
      <pubDate>Tue, 01 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2024/five-ways-to-speed-up-your-apache-maven-builds/</guid>
      <description>&lt;p&gt;Get five low-effort strategies for accelerating your Maven builds so you can spend more time doing what you love most—writing code!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Maven Dependency Hell: Five Tips to Get Out</title>
      <link>https://blog.bdemers.io/blog/2024/five-ways-dependency-hell-maven/</link>
      <pubDate>Tue, 16 Jul 2024 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2024/five-ways-dependency-hell-maven/</guid>
      <description>&lt;p&gt;Learn how to better manage your Apache Maven dependencies and avoid the dreaded dependency hell.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to speed up Apache Maven Builds with a Build Cache</title>
      <link>https://blog.bdemers.io/blog/2024/how-to-speed-up-maven-builds-with-a-build-cache/</link>
      <pubDate>Mon, 03 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2024/how-to-speed-up-maven-builds-with-a-build-cache/</guid>
      <description>&lt;p&gt;Unlock faster Maven builds! Discover how a build cache can slash your build times and streamline your development workflow. Step-by-step guide included.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Developer Productivity Engineering: What&#39;s in it for Java Developers?</title>
      <link>https://blog.bdemers.io/presentations/2024/jcon-dpe-for-java-devs/</link>
      <pubDate>Thu, 16 May 2024 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2024/jcon-dpe-for-java-devs/</guid>
      <description>&lt;p&gt;Developer Productivity Engineering (DPE) is the Next Big Thing in Software Development. But what is it? How will it foster Developer Joy? And how can you introduce it to your organization?&lt;/p&gt;&#xA;&lt;p&gt;It may surprise you to learn that we developers are a patient, tolerant species. People pay us to do what we enjoy - write code and create working applications. In return, we will put up with all sorts of blockages and toil that get in the way of this - long build times, flaky tests, hard-to-debug toolchain failures, etc.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Apache Maven 102: Best Practices</title>
      <link>https://blog.bdemers.io/presentations/2024/jcon-maven-102/</link>
      <pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2024/jcon-maven-102/</guid>
      <description>&lt;p&gt;Know enough about Maven to get by, but not enough to thrive? Then this talk is for you. We will review the basics and then dive into the best practices for both Maven single and multi-module projects. You will also walk away with enough knowledge to troubleshoot your builds. Apache Maven is still the defacto build tool in the Java world.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testing on Thin Ice: Chipping Away at Test Unpredictability</title>
      <link>https://blog.bdemers.io/presentations/2024/jcon-testing-on-thin-ice/</link>
      <pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2024/jcon-testing-on-thin-ice/</guid>
      <description>&lt;p&gt;Ever tried to catch melting snowflakes? That&amp;rsquo;s the challenge of dealing with flaky tests - those annoying, unpredictable tests that fail randomly and pass when rerun. In this talk, we&amp;rsquo;ll slide down the slippery slope of why flaky tests are more than just a nuisance. They&amp;rsquo;re time-sinks, morale crushers, and silent code quality killers.&lt;/p&gt;&#xA;&lt;p&gt;We&amp;rsquo;ll skate across real-life scenarios to understand how flaky tests can freeze your development in its tracks, and why sweeping them under the rug is like ignoring a crack in the ice. From delayed releases to lurking bugs, the stakes are high, and the costs are real.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Apache Maven 102: Best Practices</title>
      <link>https://blog.bdemers.io/presentations/2024/maven-102-devnexus/</link>
      <pubDate>Wed, 10 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2024/maven-102-devnexus/</guid>
      <description>&lt;p&gt;Know enough about Maven to get by, but not enough to thrive? Then this talk is for you. We will review the basics and then dive into the best practices for both Maven single and multi-module projects. You will also walk away with enough knowledge to troubleshoot your builds. Apache Maven is still the defacto build tool in the Java world.&lt;/p&gt;</description>
    </item>
    <item>
      <title>5 Ways to Improve Your Maven Projects Using Build Scans</title>
      <link>https://blog.bdemers.io/presentations/2024/maven-build-scans-devnexus/</link>
      <pubDate>Tue, 09 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2024/maven-build-scans-devnexus/</guid>
      <description>&lt;p&gt;We have all struggled with builds at some point. Build Scans offers solutions to some of the most common challenges Java developers face, including debugging failed builds, identifying performance issues, and managing dependencies more efficiently.&lt;/p&gt;&#xA;&lt;p&gt;We’ll cover how using Build Scans will help you make your builds faster and foster better collaboration within teams by making sharing build insights easier. We’ll also examine the build processes of open-source projects to showcase valuable lessons learned.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Breeding 10x Developers with Developer Productivity Engineering</title>
      <link>https://blog.bdemers.io/presentations/2024/gdg-southlake-breeding-10x-devs/</link>
      <pubDate>Wed, 28 Feb 2024 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2024/gdg-southlake-breeding-10x-devs/</guid>
      <description>&lt;p&gt;Sasquatch. Yeti. The Loch Ness Monster. The 10x Developer. You may think of these as mythical creatures that can’t possibly exist, but the 10x Organization is very real. In this session, Gradle’s Brian Demers will explain how a dedicated Developer Productivity Engineering (DPE) organization can breed 10x Developers. By reducing the toil, friction, and frustration of slow builds, flaky tests, and other avoidable failures, a DPE team enables a level of developer productivity that you may have thought impossible. Brian will help you explore DPE technologies, including build and test acceleration, failure analytics, and easily analyzed build records to show how to create an environment in which 10x Developers not only exist, but thrive.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Security and Productivity - Pick Two with Reproducible builds</title>
      <link>https://blog.bdemers.io/presentations/2024/boston-security-and-productivity-reproducible-builds/</link>
      <pubDate>Thu, 11 Jan 2024 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2024/boston-security-and-productivity-reproducible-builds/</guid>
      <description>&lt;p&gt;Reproducible builds are crucial for ensuring software integrity but can be challenging to achieve. On the other hand, build caches provide a way to speed up builds by reusing previously-built artifacts and dependencies.&lt;/p&gt;&#xA;&lt;p&gt;This talk will explore how reproducible builds and build caches can work together to create a more efficient, secure, and enjoyable development workflow. We will discuss the benefits and challenges of reproducible builds and build caches and provide practical tips for implementation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Breeding 10x Developers with Developer Productivity Engineering</title>
      <link>https://blog.bdemers.io/presentations/2023/gradle-breeding-10x-devs/</link>
      <pubDate>Thu, 30 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2023/gradle-breeding-10x-devs/</guid>
      <description>&lt;p&gt;Sasquatch. Yeti. The Loch Ness Monster. The 10x Developer. You may think of these as mythical creatures that can’t possibly exist, but the 10x Organization is very real. In this session, Gradle’s Brian Demers will explain how a dedicated Developer Productivity Engineering (DPE) organization can breed 10x Developers. By reducing the toil, friction, and frustration of slow builds, flaky tests, and other avoidable failures, a DPE team enables a level of developer productivity that you may have thought impossible. Brian will help you explore DPE technologies, including build and test acceleration, failure analytics, and easily analyzed build records to show how to create an environment in which 10x Developers not only exist, but thrive.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Security and Productivity - Pick Two with Reproducible builds</title>
      <link>https://blog.bdemers.io/presentations/2023/jcon-security-and-productivity-reproducible-builds/</link>
      <pubDate>Tue, 21 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2023/jcon-security-and-productivity-reproducible-builds/</guid>
      <description>&lt;p&gt;Reproducible builds are crucial for ensuring software integrity but can be challenging to achieve. On the other hand, build caches provide a way to speed up builds by reusing previously-built artifacts and dependencies.&lt;/p&gt;&#xA;&lt;p&gt;This talk will explore how reproducible builds and build caches can work together to create a more efficient, secure, and enjoyable development workflow. We will discuss the benefits and challenges of reproducible builds and build caches and provide practical tips for implementation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Breeding 10x Developers with Developer Productivity Engineering</title>
      <link>https://blog.bdemers.io/presentations/2023/nyjavasig-dpe-for-java-devs/</link>
      <pubDate>Thu, 16 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2023/nyjavasig-dpe-for-java-devs/</guid>
      <description>&lt;p&gt;Sasquatch. Yeti. The Loch Ness Monster. The 10x Developer. You may think of these as mythical creatures that can’t possibly exist, but the 10x Organization is very real. In this session, Gradle’s Brian Demers will explain how a dedicated Developer Productivity Engineering (DPE) organization can breed 10x Developers. By reducing the toil, friction, and frustration of slow builds, flaky tests, and other avoidable failures, a DPE team enables a level of developer productivity that you may have thought impossible. Brian will help you explore DPE technologies, including build and test acceleration, failure analytics, and easily analyzed build records to show how to create an environment in which 10x Developers not only exist, but thrive.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Developer Productivity Engineering: What&#39;s in it for Java Developers?</title>
      <link>https://blog.bdemers.io/presentations/2023/gsjug-dpe-for-java-devs/</link>
      <pubDate>Tue, 14 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2023/gsjug-dpe-for-java-devs/</guid>
      <description>&lt;p&gt;Developer Productivity Engineering (DPE) is the Next Big Thing in Software Development. But what is it? How will it foster Developer Joy? And how can you introduce it to your organization?&lt;/p&gt;&#xA;&lt;p&gt;It may surprise you to learn that we developers are a patient, tolerant species. People pay us to do what we enjoy - write code and create working applications. In return, we will put up with all sorts of blockages and toil that get in the way of this - long build times, flaky tests, hard-to-debug toolchain failures, etc.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Apache Maven 102: Best Practices</title>
      <link>https://blog.bdemers.io/presentations/2023/maven-102/</link>
      <pubDate>Sun, 08 Oct 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2023/maven-102/</guid>
      <description>&lt;p&gt;Know enough about Maven to get by, but not enough to thrive? Then this talk is for you. We will review the basics and then dive into the best practices for both Maven single and multi-module projects. You will also walk away with enough knowledge to troubleshoot your builds. Apache Maven is still the defacto build tool in the Java world.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Breeding 10x Developers with Developer Productivity Engineering</title>
      <link>https://blog.bdemers.io/presentations/2023/tampa-jug-breeding-10x-devs/</link>
      <pubDate>Thu, 14 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2023/tampa-jug-breeding-10x-devs/</guid>
      <description>&lt;p&gt;Sasquatch. Yeti. The Loch Ness Monster. The 10x Developer. You may think of these as mythical creatures that can’t possibly exist, but the 10x Organization is very real. In this session, Gradle’s Brian Demers will explain how a dedicated Developer Productivity Engineering (DPE) organization can breed 10x Developers. By reducing the toil, friction, and frustration of slow builds, flaky tests, and other avoidable failures, a DPE team enables a level of developer productivity that you may have thought impossible. Brian will help you explore DPE technologies, including build and test acceleration, failure analytics, and easily analyzed build records to show how to create an environment in which 10x Developers not only exist, but thrive.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Security and Productivity - Pick Two with Reproducible builds</title>
      <link>https://blog.bdemers.io/presentations/2023/security-and-productivity-reproducible-builds/</link>
      <pubDate>Thu, 10 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2023/security-and-productivity-reproducible-builds/</guid>
      <description>&lt;p&gt;Reproducible builds are crucial for ensuring software integrity but can be challenging to achieve. On the other hand, build caches provide a way to speed up builds by reusing previously-built artifacts and dependencies.&lt;/p&gt;&#xA;&lt;p&gt;This talk will explore how reproducible builds and build caches can work together to create a more efficient, secure, and enjoyable development workflow. We will discuss the benefits and challenges of reproducible builds and build caches and provide practical tips for implementation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Breeding 10x Developers with Developer Productivity Engineering</title>
      <link>https://blog.bdemers.io/presentations/2023/detroit-jug-breeding-10x-devs/</link>
      <pubDate>Tue, 18 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2023/detroit-jug-breeding-10x-devs/</guid>
      <description>&lt;p&gt;Sasquatch. Yeti. The Loch Ness Monster. The 10x Developer. You may think of these as mythical creatures that can’t possibly exist, but the 10x Organization is very real. In this session, Gradle’s Brian Demers will explain how a dedicated Developer Productivity Engineering (DPE) organization can breed 10x Developers. By reducing the toil, friction, and frustration of slow builds, flaky tests, and other avoidable failures, a DPE team enables a level of developer productivity that you may have thought impossible. Brian will help you explore DPE technologies, including build and test acceleration, failure analytics, and easily analyzed build records to show how to create an environment in which 10x Developers not only exist, but thrive.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to report a vulnerability: Responsible Disclosure for Developers</title>
      <link>https://blog.bdemers.io/presentations/2023/how-to-report-a-vulnerability/</link>
      <pubDate>Wed, 21 Jun 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2023/how-to-report-a-vulnerability/</guid>
      <description>&lt;p&gt;Ever seen a security-related issue that you felt should be reported? Unsure of how reporting security issue is different than a regular bug? Developers of any level should know how to report a vulnerability.&lt;/p&gt;&#xA;&lt;p&gt;In this talk, we will talk about what CVEs are, some general vulnerability classifications, look at a few common ways you can report security issues, as well as look at a few common mistakes.&lt;/p&gt;&#xA;&lt;p&gt;This talk is geared toward non-security professionals.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testing is Confidence - A Developer&#39;s Perspective</title>
      <link>https://blog.bdemers.io/presentations/2023/testing-is-confidence/</link>
      <pubDate>Mon, 19 Jun 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/presentations/2023/testing-is-confidence/</guid>
      <description>&lt;p&gt;We all know testing is important, but many of us still struggle with the difference between unit tests and integration tests and build cycles that take too long.&lt;/p&gt;&#xA;&lt;p&gt;This talk will discuss, why we write tests, the different types of tests, and some best practices. Everything discussed will be language agnostic and discuss some common problems and solutions I’ve seen different shops, big and small.&lt;/p&gt;&#xA;&lt;p&gt;The audience should walk away with a new appreciation for fast and clean builds.&lt;/p&gt;</description>
    </item>
    <item>
      <title>From Hour-Long Builds to Streamlined Productivity: The Spring Boot Journey</title>
      <link>https://blog.bdemers.io/blog/2023/from-hour-long-builds-to-streamlined-productivity-the-spring-boot-journey/</link>
      <pubDate>Fri, 02 Jun 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2023/from-hour-long-builds-to-streamlined-productivity-the-spring-boot-journey/</guid>
      <description>&lt;p&gt;Learn how the Spring Boot team mastered their complex build processes, tackled flaky tests, and significantly improved their build times to enhance developer productivity.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Add Auth to Any App with OAuth2 Proxy</title>
      <link>https://blog.bdemers.io/blog/2022/add-auth-to-any-app-with-oauth2-proxy/</link>
      <pubDate>Thu, 14 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2022/add-auth-to-any-app-with-oauth2-proxy/</guid>
      <description>&lt;p&gt;Tutorial: Use OAuth2 Proxy to add auth for you web apps and REST APIs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Authenticate from the Command Line with Java</title>
      <link>https://blog.bdemers.io/blog/2022/java-cli-device-grant/</link>
      <pubDate>Mon, 11 Apr 2022 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2022/java-cli-device-grant/</guid>
      <description>&lt;p&gt;Tutorial: Build a Java application with JBang that uses the OAuth 2.0 Device Grant and log in with a code.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Three Ways to Run Your Java Locally with HTTPS</title>
      <link>https://blog.bdemers.io/blog/2022/local-https-java/</link>
      <pubDate>Mon, 31 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2022/local-https-java/</guid>
      <description>&lt;p&gt;This post describes three different options to get your local Java app running securely with TLS in no time, whether you need it publicly available or not.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Five Anti-Patterns with Secrets in Java</title>
      <link>https://blog.bdemers.io/blog/2021/antipatterns-secrets-java/</link>
      <pubDate>Tue, 14 Dec 2021 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2021/antipatterns-secrets-java/</guid>
      <description>&lt;p&gt;Learn how to better manage and protect your passwords and API keys!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Security.txt: Make Vulnerabilities Easier to Report</title>
      <link>https://blog.bdemers.io/blog/2021/intro-security-txt/</link>
      <pubDate>Tue, 19 Oct 2021 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2021/intro-security-txt/</guid>
      <description>&lt;p&gt;We all know that all software has bugs and that security is hard, but somehow we are still surprised when we see new vulnerabilities.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Session Clustering for OAuth 2.0 Applications</title>
      <link>https://blog.bdemers.io/blog/2021/oauth-sessions-with-java/</link>
      <pubDate>Thu, 30 Sep 2021 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2021/oauth-sessions-with-java/</guid>
      <description>&lt;p&gt;A common OAuth 2.0 question we get: &amp;ldquo;How do I deal with OAuth in a load-balanced application?&amp;rdquo; The short answer: There&amp;rsquo;s nothing specific about session clustering for OAuth. The longer answer is—you likely still need to worry about cluster session management. This post will discuss how an OAuth login relates to your application&amp;rsquo;s session. And we&amp;rsquo;ll build a simple, secure, load-balanced application to demonstrate.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spring Native in Action with the Okta Spring Boot Starter</title>
      <link>https://blog.bdemers.io/blog/2021/spring-native-in-action/</link>
      <pubDate>Thu, 16 Sep 2021 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2021/spring-native-in-action/</guid>
      <description>&lt;p&gt;This video is a recording of a live Twitch stream wherein Brian Demers and Matt Raible (from Okta) work with Josh Long (from Spring) to make Okta&amp;rsquo;s Spring Boot starter work with Spring Native.&lt;/p&gt;</description>
    </item>
    <item>
      <title>&#34;Basic Authentication&#34; in Five Minutes</title>
      <link>https://blog.bdemers.io/blog/2021/basic-auth-in-five-minutes/</link>
      <pubDate>Tue, 10 Aug 2021 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2021/basic-auth-in-five-minutes/</guid>
      <description>&lt;p&gt;Learn what &amp;ldquo;Basic Authentication&amp;rdquo; is, how it&amp;rsquo;s used, and what the HTTP Request looks like!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Developers Guide to GPG and YubiKey</title>
      <link>https://blog.bdemers.io/blog/2021/microprofile-content-negotiation/</link>
      <pubDate>Wed, 04 Aug 2021 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2021/microprofile-content-negotiation/</guid>
      <description>&lt;p&gt;Content negotiation allows for an HTTP server to respond to different types of clients. Many modern clients expect a JSON response, but there may be a need to format responses differently, maybe XML for older clients or a binary format for newer ones. Content negotiation is the mechanism used to solve that problem and others, such as dealing with multiple languages and even compressing HTTP requests.&lt;/p&gt;&#xA;&lt;p&gt;In this post, I&amp;rsquo;ll walk through building a simple Java MicroProfile application and explain how content negotiation works.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Developers Guide to GPG and YubiKey</title>
      <link>https://blog.bdemers.io/blog/2021/developers-guide-to-gpg/</link>
      <pubDate>Wed, 07 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2021/developers-guide-to-gpg/</guid>
      <description>&lt;p&gt;Setting up a new YubiKey as a second factor is easy—your browser walks you through the entire process. However, setting up a YubiKey to sign your Git commits and Secure Shell (SSH) authentication is a very different experience. In this post, I&amp;rsquo;ll walk through configuring a YubiKey and highlight some of the things I&amp;rsquo;ve learned along the way.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Chocolatey Chat with Rob Reynolds &#43; Okta DevRel</title>
      <link>https://blog.bdemers.io/blog/2021/chocolatey-with-rob-reynolds/</link>
      <pubDate>Thu, 11 Mar 2021 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2021/chocolatey-with-rob-reynolds/</guid>
      <description>&lt;p&gt;Join the Okta DevRel team as we talk about what&amp;rsquo;s coming for Chocolatey on Windows, CI/CD, CLI integrations, and more!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Learning the Okta CLI</title>
      <link>https://blog.bdemers.io/blog/2021/learning-the-okta-cli/</link>
      <pubDate>Thu, 14 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2021/learning-the-okta-cli/</guid>
      <description>&lt;p&gt;Brian Demers and Micah Silverman teach Lee Brandt how to use the Okta CLI.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Beginner&#39;s Guide to JWTs</title>
      <link>https://blog.bdemers.io/blog/2020/beginners-guide-to-jwt/</link>
      <pubDate>Mon, 21 Dec 2020 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2020/beginners-guide-to-jwt/</guid>
      <description>&lt;p&gt;JSON Web Tokens (JWT) are used everywhere (even places they shouldn&amp;rsquo;t be). This post will cover the basics of what you need to know about JWT and the related specifications in the &lt;strong&gt;J&lt;/strong&gt;avascript &lt;strong&gt;O&lt;/strong&gt;bject &lt;strong&gt;S&lt;/strong&gt;igning and &lt;strong&gt;E&lt;/strong&gt;ncryption (JOSE) family.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JWT vs Opaque Access Tokens: Use Both With Spring Boot</title>
      <link>https://blog.bdemers.io/blog/2020/spring-boot-remote-vs-local-tokens/</link>
      <pubDate>Fri, 07 Aug 2020 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2020/spring-boot-remote-vs-local-tokens/</guid>
      <description>&lt;p&gt;The topic of validating an OAuth 2.0 access tokens comes up frequently on this blog. Often we talk about how to validate JSON Web Token (JWT) based access tokens; however, this is NOT part of the OAuth 2.0 specification. JWTs are so commonly used that Spring Security supported them before adding support for remotely validating tokens (which is part of the OAuth 2.0 specification.)&lt;/p&gt;&#xA;&lt;p&gt;In this post, you will build a simple application that takes advantage of both types of validation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Arm Up Your Java: Performance Benchmarks</title>
      <link>https://blog.bdemers.io/blog/2020/java-arm-performance/</link>
      <pubDate>Wed, 05 Aug 2020 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2020/java-arm-performance/</guid>
      <description>&lt;p&gt;Arm processors have been in the news lately, and it&amp;rsquo;s causing confusion and worries about processor performance for some folks. After Apple announced its plan to switch to Arm-based processors, I heard people (incorrectly!) speculating the performance would be similar to a Raspberry Pi. Java on Arm is nothing new, but we are seeing increased Arm investment from cloud vendors. Amazon recently updated its Arm offerings, and Microsoft is working on porting the JVM to Arm64 for Windows (no doubt for future Azure support).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Introducing JPaseto: Security Tokens For Java</title>
      <link>https://blog.bdemers.io/blog/2020/introducing-jpaseto-security-tokens-for-java/</link>
      <pubDate>Thu, 23 Jul 2020 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2020/introducing-jpaseto-security-tokens-for-java/</guid>
      <description>&lt;p&gt;PASETO is a new security token format designed to be easy to use and free from the issues inherent with JSON Web Token (JWT) related specifications. Platform Agnostic SEcurity TOkens (PASETO) is a draft RFC spec created by &lt;a href=&#34;https://paragonie.com/&#34;&gt;Scott Arciszewski&lt;/a&gt;. PASETO reduces the scope of the JavaScript Object Signing and Encryption (JOSE) family of specs (which JWT is a part of), while still providing the functions that secure applications need.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Migrate From Travis CI to GitHub Actions</title>
      <link>https://blog.bdemers.io/blog/2020/travis-ci-to-github-actions/</link>
      <pubDate>Mon, 18 May 2020 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2020/travis-ci-to-github-actions/</guid>
      <description>&lt;p&gt;Recently, a colleague pointed out that I was still configuring Travis-CI on new GitHub repos and suggested I used GitHub Actions instead. I had given Actions the ol&amp;rsquo; five-minute test when it was still in beta, but ran into a few problems and gave up. After all, I’ve been a fan of Travis-CI for a while and I had enough new things to learn at the time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Secure Java Application with Apache Shiro and OAuth 2.0</title>
      <link>https://blog.bdemers.io/blog/2020/java-shiro-oauth/</link>
      <pubDate>Mon, 11 May 2020 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2020/java-shiro-oauth/</guid>
      <description>&lt;p&gt;Apache Shiro is a Java security framework that can perform authentication, authorization, session management, along with a host of other features for building secure applications. In this tutorial, you will build a simple Java REST application using JAX-RS. JAX-RS, like many Java APIs, is a set of interfaces, and you will need to pick an implementation&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenID Connect Logout Options with Spring Boot</title>
      <link>https://blog.bdemers.io/blog/2020/spring-oidc-logout-options/</link>
      <pubDate>Fri, 27 Mar 2020 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2020/spring-oidc-logout-options/</guid>
      <description>&lt;p&gt;On the Okta blog, we spend much of our time talking about logging in. That is because once you configure your application to log in, the log out just works. But there are a few things you should consider when you’re thinking about your app’s logout configuration. In this post, I’ll walk through examples of the two logout options you have with Spring Security: the &amp;ldquo;default&amp;rdquo; session clearing logout, and relying party initiated logout.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Developer Guide to Reporting Vulnerabilities</title>
      <link>https://blog.bdemers.io/blog/2020/developers-guide-on-reporting-vulnerabilities/</link>
      <pubDate>Fri, 13 Mar 2020 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2020/developers-guide-on-reporting-vulnerabilities/</guid>
      <description>&lt;p&gt;Many of us are not familiar with vulnerability reporting and how it is different from reporting a regular bug. Frequently, I’ve seen people report vulnerabilities or potential security issues incorrectly. A public bug tracker or Stack Overflow is NOT the right tool; developers need to handle vulnerabilities differently and should not disclose them until the project/vendor fixes them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create and Verify PASETO Tokens in Java</title>
      <link>https://blog.bdemers.io/blog/2020/paseto-security-tokens-java/</link>
      <pubDate>Fri, 14 Feb 2020 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2020/paseto-security-tokens-java/</guid>
      <description>&lt;p&gt;PASETO is the latest trend in security token formats. Its primary goal is to reduce the problems the JSON Web Token (JWT) related specifications introduce. In this post, I’ll give you a brief introduction to PASETO tokens and then jump into an example that creates and parses tokens using in Java using JPaseto.&lt;/p&gt;</description>
    </item>
    <item>
      <title>10 Excellent Ways to Secure Spring Boot Applications</title>
      <link>https://blog.bdemers.io/blog/2020/ten-excellent-ways-to-secure-spring-boot/</link>
      <pubDate>Tue, 04 Feb 2020 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2020/ten-excellent-ways-to-secure-spring-boot/</guid>
      <description>&lt;p&gt;Curious to know best practices for securing your Spring Boot applications? This webinar provides 10 excellent ways to secure your Spring Boot apps with Spring Security and other techniques.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Secure Spring Boot App in Minutes</title>
      <link>https://blog.bdemers.io/blog/2020/build-secure-spring-boot-five-minutes/</link>
      <pubDate>Tue, 04 Feb 2020 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2020/build-secure-spring-boot-five-minutes/</guid>
      <description>&lt;p&gt;This screencast walks you through building a secure Spring Boot application in two commands using the Spring Initalizr and the Okta Maven Plugin on the command line!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Five Tools to Improve Your Java Code</title>
      <link>https://blog.bdemers.io/blog/2020/five-tools-improve-java/</link>
      <pubDate>Tue, 14 Jan 2020 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2020/five-tools-improve-java/</guid>
      <description>&lt;p&gt;This screencast show you five tools to help improve and reduce bugs in your Java code!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Secure Legacy Apps with Spring Cloud Gateway</title>
      <link>https://blog.bdemers.io/blog/2020/secure-legacy-spring-cloud-gateway/</link>
      <pubDate>Wed, 08 Jan 2020 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2020/secure-legacy-spring-cloud-gateway/</guid>
      <description>&lt;p&gt;One of the biggest challenges of adding OAuth 2.0 support to legacy applications is a lack of support in the underlying framework. Maybe it&amp;rsquo;s homegrown, or maybe it&amp;rsquo;s just old? Either way, migrating away from an old form-based login doesn&amp;rsquo;t need to be so painful. In this post, I&amp;rsquo;ll walk you through a low-code option using Spring Cloud Gateway and Okta.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Five Tools to Improve Your Java Code</title>
      <link>https://blog.bdemers.io/blog/2019/five-tools-improve-java/</link>
      <pubDate>Fri, 20 Dec 2019 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2019/five-tools-improve-java/</guid>
      <description>&lt;p&gt;Writing quality code takes practice. To write better code, you need to know what should improve. Code quality and what makes code easy to read are very subjective; ask five different developers, you will get six different answers. For this post, I&amp;rsquo;ll avoid most of the subjective and focus on ways to detect real issues and potential bugs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Watch GraalVM Turn Your Java Into Binaries</title>
      <link>https://blog.bdemers.io/blog/2019/graalvm-java-binaries/</link>
      <pubDate>Wed, 27 Nov 2019 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2019/graalvm-java-binaries/</guid>
      <description>&lt;p&gt;There has been much buzz about GraalVM and what it means for the Java world. GraalVM is a Java distribution from Oracle that adds a bunch of features, most notably a new JIT compiler, polyglot capabilities, an LLVM runtime&amp;hellip; and the ability to turn your Java application into a native binary.&lt;/p&gt;&#xA;&lt;p&gt;This last one offers the potential to distribute Java applications as a single binary, and a few frameworks like Quarkus, Helidon, and Micronaut already take advantage of this feature. Native images also open up the possibility to distribute Java applications as CLI applications, which has recently been the near-exclusive domain of Go and Node. This tutorial will show you how!&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Dangers of Self-Signed Certificates</title>
      <link>https://blog.bdemers.io/blog/2019/dangers-of-self-signed-certs/</link>
      <pubDate>Wed, 23 Oct 2019 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2019/dangers-of-self-signed-certs/</guid>
      <description>&lt;p&gt;How many times have you started a new job, and the first thing you see on the company intranet is a &amp;ldquo;Your connection is not private&amp;rdquo; error message? Maybe you asked around and were directed to a wiki page. Of course, you probably had to click through the security warnings before actually viewing that page. If you are security-minded, this probably bothers you, but because you have a new job to do, you accept the warning and proceed to jump through the hoops of installing the certificate.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Build and Parse JWTs in Java with JJWT</title>
      <link>https://blog.bdemers.io/blog/2019/build-and-parse-jwts/</link>
      <pubDate>Fri, 11 Oct 2019 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2019/build-and-parse-jwts/</guid>
      <description>&lt;p&gt;This screencast walks you through creating JWTs with the Java library JJWT.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Build a Maven Plugin</title>
      <link>https://blog.bdemers.io/blog/2019/tutorial-build-a-maven-plugin/</link>
      <pubDate>Mon, 23 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2019/tutorial-build-a-maven-plugin/</guid>
      <description>&lt;p&gt;Apache Maven is still the most popular build tool in the Java space, thanks to the popularity of its ecosystem of plugins. It&amp;rsquo;s easy to find an existing plugin to do almost anything your application needs, from ensuring your source files have license headers, to validating binary compatibility between versions. Occasionally though, you need to write a custom plugin to fulfill a requirement in your product.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Make Java Tests Groovy With Hamcrest</title>
      <link>https://blog.bdemers.io/blog/2019/make-java-tests-groovy/</link>
      <pubDate>Wed, 21 Aug 2019 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2019/make-java-tests-groovy/</guid>
      <description>&lt;p&gt;My favorite way to test Java code is with Groovy.  Specifically, writing tests in Groovy with Hamcrest.  In this post, I&amp;rsquo;ll walk through how to test a simple Spring Boot application with these tools.&lt;/p&gt;&#xA;&lt;p&gt;Groovy is an optionally typed dynamic language for the JVM, and can be compiled statically.  That is a mouthful and I&amp;rsquo;ll explain this as we go, but for now think of Groovy as Java with lots of sugar.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Joining Okta&#39;s Developer Relations team Team</title>
      <link>https://blog.bdemers.io/blog/2019/welcome-bdemers/</link>
      <pubDate>Mon, 19 Aug 2019 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2019/welcome-bdemers/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m excited to announce that I&amp;rsquo;ve joined Okta&amp;rsquo;s Developer Relations team!  I&amp;rsquo;ve been working on Okta&amp;rsquo;s awesome Developer Experience team for the last couple years so I&amp;rsquo;m not exactly a new face around here. 😉&lt;/p&gt;</description>
    </item>
    <item>
      <title>Secure Server-to-Server Communication with Spring Boot and OAuth 2.0</title>
      <link>https://blog.bdemers.io/blog/2018/client-creds-with-spring-boot/</link>
      <pubDate>Mon, 02 Apr 2018 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2018/client-creds-with-spring-boot/</guid>
      <description>&lt;p&gt;Most OAuth 2.0 guides are focused around the context of a user, i.e., login to an application using Google, Github, Okta, etc., then do something on behalf of that user. While useful, these guides ignore server-to-server communication where there is no user and you only have one service connecting to another one.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hugo to Firebase</title>
      <link>https://blog.bdemers.io/blog/2018/hugo-to-firebase/</link>
      <pubDate>Thu, 01 Feb 2018 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2018/hugo-to-firebase/</guid>
      <description>&lt;p&gt;Last time I created a simple Hugo based website, this time, we will deploy it. For free! With TLS!&lt;/p&gt;&#xA;&lt;p&gt;OK, I am making a couple of assumptions here:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;You already own a domain name (cheap but not free)&lt;/li&gt;&#xA;&lt;li&gt;You are hosting your site in a GitHub repo (this is not required, but if you want to follow along, I&amp;rsquo;m going to use GitHub &amp;amp; Travis-CI)&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Since writing this I started using &lt;a href=&#34;https://gohugo.io/hosting-and-deployment/hosting-on-netlify/&#34;&gt;Netlify&lt;/a&gt; and I&amp;rsquo;d strongly recommend checking that out!&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Hugo</title>
      <link>https://blog.bdemers.io/blog/2018/how-to-hugo/</link>
      <pubDate>Tue, 30 Jan 2018 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2018/how-to-hugo/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been meaning to work on this site for a while. I even picked up vanity &lt;code&gt;.io&lt;/code&gt; and a &lt;code&gt;.wtf&lt;/code&gt; domains. Until reciently they just pointed to a GitHub Pages repo. My hand was forced when I had to unexpectedly migrate a small website from one provider elsewhere.  Long story, it involves a Nonprofit I&amp;rsquo;m involved with and needing a cheap/free solution. I figured that process would make for a cool blog post and force me to work on this site.&lt;/p&gt;</description>
    </item>
    <item>
      <title>5 Tips for Building your Java API</title>
      <link>https://blog.bdemers.io/blog/2017/five-java-tips/</link>
      <pubDate>Wed, 23 Aug 2017 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2017/five-java-tips/</guid>
      <description>&lt;p&gt;Developers use APIs to for everything! You build APIs for your own apps to consume, or as a part of a microservices architecture. Bottom line, you&amp;rsquo;re building and using APIs to make your life easier. The ongoing effort to simplify development and work more efficiently, sometimes this also means looking for new libraries or processes (or more often less process). For many teams managing authentication and access control for their apps and APIs is more work than it&amp;rsquo;s worth, or simply not an efficient use of time, so we want to share a few tips that will save you time and code, along with making your applications more secure and easier to maintain.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Protecting a Spring Boot App with Apache Shiro</title>
      <link>https://blog.bdemers.io/blog/2017/apache-shiro-spring-boot/</link>
      <pubDate>Thu, 13 Jul 2017 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2017/apache-shiro-spring-boot/</guid>
      <description>&lt;p&gt;My favorite thing about Apache Shiro is how easy it makes handling authorization. You can use a role-based access control (RBAC) model of assigning roles to users and then permissions to roles. This makes dealing with the inevitable requirements change simple. Your code does not change, just the permissions associated with the roles. In this post I want to demonstrate just how simple it is, using a Spring Boot application and walking through how I&amp;rsquo;d handle the following scenario:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Secure your SPA with Spring Boot and OAuth</title>
      <link>https://blog.bdemers.io/blog/2017/secure-spa-spring-boot-oauth/</link>
      <pubDate>Thu, 13 Jul 2017 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2017/secure-spa-spring-boot-oauth/</guid>
      <description>&lt;p&gt;If you have a JavaScript single-page application (SPA) that needs to securely access resources from a Spring Boot application, you likely want to use the OAuth 2.0 implicit flow! With this flow your client will send a bearer token with each request and your server side application will verify the token with an Identity Provider (IdP). This allows your resource server to trust that your client is authorized to make the request. In OAuth terms your SPA is the client and your Spring Boot application is the Resource Server. For a more detailed explanation on the various OAuth flows take a look at our &lt;a href=&#34;https://blog.bdemers.io/blog/2017/06/21/what-the-heck-is-oauth&#34;&gt;What the Heck is OAuth&lt;/a&gt; post.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Protecting JAX-RS Resources with RBAC and Apache Shiro</title>
      <link>https://blog.bdemers.io/blog/2017/protecting-jax-rs-resources-rbac-apache-shiro/</link>
      <pubDate>Wed, 18 Jan 2017 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2017/protecting-jax-rs-resources-rbac-apache-shiro/</guid>
      <description>&lt;p&gt;Security is probably the most important thing for your application, but it doesn’t have to be the hardest thing. Today I’ll show you how to use Shiro’s wildcard permissions to enable fine grained Role-Based Access Control (RBAC) which makes granting user permissions trivial (a single line). This will also make your application’s security policy more flexible, so when your business rules change (and you know they will) your code does not have to. You can read more about RBAC and Roles vs Permissions here.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JAX-RS vs Spring for REST Endpoints</title>
      <link>https://blog.bdemers.io/blog/2017/jax-rs-vs-spring-rest-endpoints/</link>
      <pubDate>Mon, 09 Jan 2017 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2017/jax-rs-vs-spring-rest-endpoints/</guid>
      <description>&lt;p&gt;REST endpoints are used just about everywhere you need to decouple your web service and client. Many developers have used Spring or JAX-RS for this purpose. Some have used one but not the other, in this post I’ll go over the the differences between the two using basically the same code. In future posts I’ll show you how easy it is to secure these REST endpoints using Apache Shiro and Stormpath. If you cannot wait until then, you can check out these examples right now.&lt;/p&gt;</description>
    </item>
    <item>
      <title>String Interpolation with Apache Shiro</title>
      <link>https://blog.bdemers.io/blog/2016/string-interpolation-apache-shiro/</link>
      <pubDate>Thu, 17 Nov 2016 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2016/string-interpolation-apache-shiro/</guid>
      <description>&lt;p&gt;I am happy to announce the the 0.8.0-RC1 release of our Stormpath-Shiro integration.&#xA;This release builds on top of the recent Apache Shiro 1.4.0-RC2 release.&lt;/p&gt;&#xA;&lt;p&gt;The 1.4.0 Apache Shiro release adds a handful of great features:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Apache Shiro Stormpath Integration 0.7.1 Released</title>
      <link>https://blog.bdemers.io/blog/2016/apache-shiro-stormpath-0-7-1/</link>
      <pubDate>Thu, 22 Sep 2016 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2016/apache-shiro-stormpath-0-7-1/</guid>
      <description>&lt;p&gt;Welcome to the new Apache Shiro Stormpath integration! This new release features a servlet plugin, plus deeper support for Spring and Spring Boot. Until now, we have only had a basic Apache Shiro realm for Stormpath. While sufficient, this basic realm never granted access to the full suite of Stormpath services. Today, that changed!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tutorial: Apache Shiro EventBus</title>
      <link>https://blog.bdemers.io/blog/2016/tutorial-apache-shiro-eventbus/</link>
      <pubDate>Thu, 04 Aug 2016 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2016/tutorial-apache-shiro-eventbus/</guid>
      <description>&lt;p&gt;Last week we released Apache Shiro 1.3, and I shared a tutorial on the new Hazelcast support. Today, I’d like to introduce you to the new &lt;code&gt;EventBus&lt;/code&gt; system and show you a couple different ways to use it. Shiro’s &lt;code&gt;EventBus&lt;/code&gt; is implemented very similar to Guava’s &lt;code&gt;EventBus&lt;/code&gt;, if you are already familiar with that, you already know how to use it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Apache Shiro 1.3 Released</title>
      <link>https://blog.bdemers.io/blog/2016/apache-shiro-1-3-released/</link>
      <pubDate>Mon, 27 Jun 2016 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2016/apache-shiro-1-3-released/</guid>
      <description>&lt;p&gt;The Apache Shiro team is proud to announce the 1.3.0 release. This is the first feature release in a few years, and we’re really excited about it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hazelcast Support in Apache Shiro</title>
      <link>https://blog.bdemers.io/blog/2016/hazelcast-support-apache-shiro/</link>
      <pubDate>Mon, 27 Jun 2016 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2016/hazelcast-support-apache-shiro/</guid>
      <description></description>
    </item>
    <item>
      <title>Nexus Tips: Disable Redeployment in Nexus</title>
      <link>https://blog.bdemers.io/blog/2011/nexus-tips-disable-redeployment-in-nexus/</link>
      <pubDate>Wed, 02 Nov 2011 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2011/nexus-tips-disable-redeployment-in-nexus/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s a fundamental tenet of Maven that release artifacts never change once they are released. This is enforced in Maven by the fact that once a release artifact or POM is located in the local repository, Maven will never check for an updated artifact in a remote repository. Once an artifact is released, it is considered a static, unchanging artifact. If you release an artifact and then subsequently change it (intentionally or otherwise), you&amp;rsquo;re in for some fun as people will have different versions based on when they first retrieved it&amp;hellip; that&amp;rsquo;s a situation not exactly conducive to a repeatable, standard build. This blog post discusses a feature in Nexus 1.4 which can enforce this rule and help you avoid problems caused by the redeployment of release artifacts.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Goodbye SVN, Hello Git</title>
      <link>https://blog.bdemers.io/blog/2011/goodbye-svn-hello-git/</link>
      <pubDate>Fri, 29 Apr 2011 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2011/goodbye-svn-hello-git/</guid>
      <description>&lt;p&gt;A migration story from Subversion to Git.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Plexus Container Five Minute Tutorial</title>
      <link>https://blog.bdemers.io/blog/2009/plexus-container-five-minute-tutorial/</link>
      <pubDate>Thu, 21 May 2009 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2009/plexus-container-five-minute-tutorial/</guid>
      <description>&lt;p&gt;The goal of this blog is to show an updated and more involved example then what is currently located on the plexus site. This will cover creating a couple of components and explain the different ways to inject your dependencies. This example assumes you are using maven 2 to make your life easier.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Staging Repositories for Deployment in Nexus</title>
      <link>https://blog.bdemers.io/blog/2009/using-staging-repositories-for-deployment-in-nexus/</link>
      <pubDate>Thu, 21 May 2009 00:00:00 +0000</pubDate>
      <guid>https://blog.bdemers.io/blog/2009/using-staging-repositories-for-deployment-in-nexus/</guid>
      <description>&lt;p&gt;For a number of reasons you might want to require your developers to use a staging repository. Staged software releases in Nexus Professional are the best way to enable your development team to push a release to an artifact repository such as Nexus while providing management and quality assurance with a way to test and approve a release before &amp;ldquo;burning&amp;rdquo; it to production. If you want to learn how to make a staged release, you can watch this video. or read the remainder of this blog post.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
