<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on Ryan P. Meyer</title><link>https://ryanpmeyer.eu/posts/</link><description>Longer formed thoughts, usually focused on a certain topic.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@ryanpmeyer.eu (Ryan P. Meyer)</managingEditor><webMaster>hello@ryanpmeyer.eu (Ryan P. Meyer)</webMaster><copyright>© 2026 Ryan P. Meyer</copyright><lastBuildDate>Sun, 09 Nov 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://ryanpmeyer.eu/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Busy Times</title><link>https://ryanpmeyer.eu/posts/busy-times/</link><pubDate>Sun, 09 Nov 2025 00:00:00 +0000</pubDate><atom:updated>2025-11-09T00:00:00Z</atom:updated><author>hello@ryanpmeyer.eu (Ryan P. Meyer)</author><guid isPermaLink="true">https://ryanpmeyer.eu/posts/busy-times/</guid><category>posts</category><category>blog</category><description>Providing a quick update on my lack of, well, updates.</description><content:encoded><![CDATA[<h1 id="busy-times">Busy times</h1>
<p>I wanted to write for the blog for a while, in fact, I have quite a few items I want to cover and start discussing. Items like Personal Knowledge Management, rebuilding my site, thoughts on various trends - and how they have overlapped with other topics I have in mind like being more mindful on my time usage, and others. Unfortunately, I have also been very busy in life and so all that work has been put on the back burner.</p>
<p>I plan to get back into a routine by January, 2026. One big goal is to reevaluate the tools used for this site. I want to try to strip away the site to the bare bones and then build from there, either with Hugo or another tool. Because I haven’t build the theming myself I feel like I don&rsquo;t own it as much as I could.</p>
<p>I want to establish more of my ownership - or perhaps knowledge-ship - of the site. Until I have the new site figured out, I will most likely not be posting or updating much here.</p>
<p>Until then, here is a quick, non-exhaustive, list of items I want to start covering:</p>
<h2 id="personal-knowledge-management">Personal Knowledge Management</h2>
<p>I really want to explore, more for myself than anything, what my current PKM system is, and how I am trying to manage all the information around me. I feel like it would be an exciting exercise to, one, codify it and two, to identify gaps and issues with what I am doing versus what I want to be doing.</p>
<h2 id="time-management-with-heavy-regards-to-algorithms">Time Management (With heavy regards to Algorithms)</h2>
<p>There are a few people I follow that have been pushing back on Social Media from the perspective of Algorithms. I’ve been looking and adopting a few of these to better avoid “Doomscrolling” in my various apps and websites. I’ve adopting disabling watch history on YouTube which essentially breaks their shorts feature and forces me to use the subscription tab - and it has been helpful in me avoiding time loss there. Other tactics like visiting apps from their website version compared to their native apps can reduce features and make you less likely to stay on them. Since social media apps want you to install the app their websites are intentionally more painful to use. Essentially they are using dark patterns to get you to install the app, but instead I use them as a way to dissuade myself from using the apps more.</p>
<p>Just finishing the book Digital Minimalism by Cal Newport has also helped me think about this topic from a new angle. The idea that it is okay to be bored, and thoughts around how I want to better control my time, attention and decisions., etc etc.</p>
<h2 id="process-mastery-versus-process-perfection">Process Mastery versus Process Perfection</h2>
<p>I recently saw a [blog post ](This is, by contemporary standards, a committed relationship.)that discussed how jumping from one app to another for various processes or workflows is exhausting. They proposed that instead of trying to get the perfect process down, you instead focus on perfecting the use of the tools you already have. It’s making me consider how that overlaps with my stance on how a lot of apps are subscription based and I try my best to avoid “death-by-a-thousand-cuts.”</p>
<p>Like many, I see an app and think, oh that will solve a problem that I “think” I have - either because they are trying to sell a solution to a problem that doesn’t exist, or they are trying to sell an identity. Ironically, I am writing this post up with iA Writer in a trial mode to see if I find it helps me with my writing. Otherwise I will write this, and most posts in Obsidian.</p>
<h2 id="website-rebuild">Website Rebuild?</h2>
<p>This is the big one, the one that has been causing me delays. I am thinking about rebuilding the website with a different static site generator. Right now I use Hugo, which I have honestly not had major issues with, but I wonder if there is a better one. 11ty has caught my eye and I am looking into it at the moment. We will see if I end up changing to this or not.</p>
<p>I do know, that regardless of changing the tool, I will want to build my own theme and tools for it. I enjoy the current Congo based theme, but I want to make my own, add some of my own &ldquo;artistic&rdquo; flair and also implement some features, like Webmentions.</p>
<p>So those are some of my plans, lets see how fast, or slow, I am with them.</p>
]]></content:encoded></item><item><title>The Tea App and Verifying Identities</title><link>https://ryanpmeyer.eu/posts/the-tea-app-and-verifying-identities/</link><pubDate>Wed, 30 Jul 2025 00:00:00 +0000</pubDate><atom:updated>2025-07-30T00:00:00Z</atom:updated><author>hello@ryanpmeyer.eu (Ryan P. Meyer)</author><guid isPermaLink="true">https://ryanpmeyer.eu/posts/the-tea-app-and-verifying-identities/</guid><category>posts</category><category>privacy</category><category>data exposure</category><category>trust</category><description>With the recent Tea App data exposure, I wanted to take a moment to think about the choices on how to verify user identities.</description><content:encoded><![CDATA[<h2 id="the-tea-app">The Tea App</h2>
<p>Right now there is an ongoing development of the Tea App having multiple data exposures. I don’t think I can give the details justice, so please look to <a href="https://www.404media.co?ref=ryanpmeyer.eu">404media.co</a> as they have been covering it quite well!</p>
<div class="center">
<p><a href="https://www.404media.co/women-dating-safety-app-tea-breached-users-ids-posted-to-4chan/?ref=ryapmeyer.eu">Initial Exposure by 404media</a></p>
<p><a href="https://www.404media.co/a-second-tea-breach-reveals-users-dms-about-abortions-and-cheating/?ref=ryanpmeyer.eu">Second Exposure by 404media</a></p>
</div>
<p>The long and short, this app was purported to be a safe and private space for women to discuss dating. However, because they wanted to ensure it was only women they had a problem, verifying that fact.</p>
<p>They decided to use a selfie-with-id method, and ended up failing to secure that data both in storage and in deletion. Now, there are other issues with this app, but I want to focus on this particular problem they were trying to solve. How do you verify someone is who they say they are, with minimal compromise to their privacy?</p>
<p>Let’s look at what they ended up doing and where that failed.</p>
<aside class="alert alert--info" role="note">
  I am going to make some educated guesses on how they may have handled some processes, but the point I want to focus on will be that the method they chose is a difficult one with a lot of nuances.
</aside>

<p>To verify if someone was a woman, Tea would request the user to send them an iID document (License, Passport, etc) with a selfie of user in the photo. This is an effective way to verify someone, I will grant them that. However, it completely breaks any privacy expectations.</p>
<p>Because they chose to accept Personal Identifiable Information (PII) data the Tea app then needed to consider how they handle the data. How should it be transferred to the verification system? Who or what is verifying the data; is it automated or human based? Are you encrypting the data throughout this process? If so, you will need to decrypt it to verify, will that have any caching, logging or other artifact concerns? If there is a human involved, will they be able to exfiltrate the data by saving it, taking a photo with their phone, or otherwise? Once the data is reviewed how do you ensure it is deleted from the system properly?</p>
<p>As you can see, there are already a lot of questions, which will lead to more questions. In the end there was at least one point where the data was not encrypted and stored on a firebase storage bucket and that bucket was not protected.</p>
<p>So, in all honesty, it was a bad idea.</p>
<p>Looking back at the original problem, what is another way we could solve this problem that could have avoided these potential problems and resulting outcome?</p>
<h2 id="a-trust-ring">A Trust Ring</h2>
<p>Rather than having the App take the responsibility of verifying the user’s identity, they could let the users do it amongst themselves.</p>
<p>Setting up a system where the trust is created and developed between the users could allow for a more private and secure system. A hypothetical way this could work is:</p>
<ol>
<li>Make the sign-up invite only from other members</li>
<li>Accepting an invite creates a trust between the two users</li>
<li>Users can also sign-off on others to create additional trusted links and networks of trust</li>
</ol>
<p>This is a basic idea, you could add more layers like having to only send the invite over bluetooth (forcing a more localized requirement). Or adding in different levels of trust (invited, in real life confirmation, etc).</p>
<p>The trust ring would be able to rely on its core principles of:</p>
<ol>
<li>Direct trust established between users</li>
<li>Transitive Trust: If User A and B trust each other, and B trust’s C, then A is one degree away from trusting that user.</li>
<li>Leveraging the Degrees you can weigh how much someone could be trusted to discuss sensitive issues with.</li>
<li>Someone that has many direct and reciprocated trusts could help establish them as trusted even at a distance.</li>
</ol>
<h3 id="how-could-this-look-for-the-user">How could this look for the user?</h3>
<p>Suppose you hear about the app from a friend, they would give you their invite code and you can sign up. That creates an initial trust between you and that person. From there you might be able to see their first level trusted friends on the app, you could then ask your friend that invited you to verify if they know those users and also trust them, maybe at a lower level of trust, but you trust your friend and they trust these users. Over time this could create a network effect, where you have a strong set of trusted people to talk to. Since this app was designed around dating, and most of that is fairly localized, that can also help determine who is actually in your area or who might not be. Additionally, suppose a new user reaches out, you can see how you might know them through the trusted network you have, or maybe see that they don’t have much of a network at a time and work to confirm things first.</p>
<p>Now this wouldn’t be the final solution, but it would be a good start to keeping the users a lot more safe and private; rather than handing over their ID and everyone needing to trust the Application’s Owners and Moderators.</p>
<p>Additionally, this isn’t a perfect system, this can still be abused through manipulation of the trust network and it doesn’t directly prevent non-welcomed users (men in this case) from signing up and trying to pose as a legitimate user. But fake IDs and AI exist well enough to make a convincing selfie-with-ID - so I’d call it even there.</p>
<p>You could also extend this using other attribute based methods. As mentioned with using local proximity to verify or send invites, you could also use user general locations to help verify the legitimacy of trusts being created. I am sure there is some math to help determine what the average expected trusts would be between people and if it exceeds that or looks abnormal it could flag a user. I remember during COVID there were apps that would be able to share exposure proximity via BLE, that could potentially be adapted too. Anyway I am digressing a bit here.</p>
<h2 id="final-thoughts">Final Thoughts</h2>
<p>The long and short here is, if an App or service states it is privacy focused and asks for very sensitive information to be able to access it, maybe think twice before handing that over. And from the design perspective, sometimes the simplest choice initially, will be the more complicated and riskier process.</p>
]]></content:encoded></item><item><title>Supply Chain Attacks for the Average Person</title><link>https://ryanpmeyer.eu/posts/supply-chain-attacks-for-the-average-person/</link><pubDate>Tue, 29 Jul 2025 00:00:00 +0000</pubDate><atom:updated>2025-07-29T00:00:00Z</atom:updated><author>hello@ryanpmeyer.eu (Ryan P. Meyer)</author><guid isPermaLink="true">https://ryanpmeyer.eu/posts/supply-chain-attacks-for-the-average-person/</guid><category>posts</category><category>supply-chain</category><category>security</category><description>Supply Chain attacks are more than something just a Company needs to consider.</description><content:encoded><![CDATA[<p>I’ve noticed in the news a lot more upticks on supply chain attacks that exploit people’s natural trust instinct. I want to try to help demystify what this all is for the average person, and hopefully that will help someone better understand what is going on and how they could try to protect themselves.</p>
<p>First, what is a supply chain attack? As the name suggests, it is when someone, we will call them the Threat Actor, attacks a part of the process that builds something, rather than attacking the end product. Take Google Chrome for example, the product, Chrome, is maintained by a huge company with a lot of staff involved in making sure it is secure. However, Chrome, like most software, doesn’t have all the parts built in-house, instead they leverage other software - often Free Open Source Software (FOSS) - as an off the shelf part. In the case of a supply chain attack, the Threat Actor would focus on identifying a part that Chrome uses, that might be maintained with minimal resources. If successful, they could get this compromised part into the final product, which would get to their ultimate goal of compromising Chrome.</p>
<p>There is a great recent example of a near miss with the well known XZ Utils Backdoor, it’s worth a deep dive if you don’t know much about it. You can start with the <a href="https://en.wikipedia.org/wiki/XZ_Utils_backdoor">Wikipedia Article</a></p>
<p>Okay so this is well and good, but really the average person has no real control about what open source software is used in their favorite programs. Which is true, but there is another supply chain attack that is happening.</p>
<h1 id="exploiting-your-trust">Exploiting your trust</h1>
<p>Let’s again consider Chrome, when you download the software you expect it to be well maintained and secure. However, Chrome may not do everything you need it to do, so you install some extensions. And that is where these attacks are happening; based on people’s trust of extension, modification, or utility markets. Honestly though, browser extension compromises are nothing new.</p>
<p>There was the <a href="https://www.darktrace.com/blog/cyberhaven-supply-chain-attack-exploiting-browser-extensions">Cyberhaven compromise from an external threat actor.</a></p>
<p>Or worse still, when <a href="https://thehackernews.com/2021/02/warning-hugely-popular-great-suspender.html">The Great Suspender sold the extension and the new owner/maintainer compromised it.</a></p>
<p>In both cases they were trusted extensions due to either a Company behind it or being recognized for a while as a trusted owner.</p>
<p>Further this is breaking out beyond what you think would be a “good” place to exploit.</p>
<p>For developers, more and more Packages are getting attacked, and now with the rise of long-con attacks, where a Threat Actor will work on trying to get trusted by a maintainer to eventually push malicious code.</p>
<p>For Gamers, mods are also a new vector for attack, recently there was one that aimed to <a href="https://www.paradoxinteractive.com/games/cities-skylines-ii/news/traffic-breach-statement">compromise Crypto Wallet information in City Skylines</a>. Which is a case where the Maintainer was compromised and then those credentials were used to maliciously impact the mod.</p>
<p>This list could go on, but what I want to hammer home on is that you may trust the source/product, whether it be Chrome, npm, or a video game, as soon as you start installing third party extensions, packages, mod or otherwise then you should be aware that those could lead to a compromise.</p>
<h1 id="where-do-i-see-this-going">Where do I see this going?</h1>
<p>I expect to see the types of vectors to continue to expand beyond what we might think as “the usual suspects”. Mainly because a lot of software out there is trying to act as a base foundation which you can then build up to your needs. I could see software that leverages and focuses on User-generated templates, functions, etc. to possibly become a new vector path, if it hasn’t already happened</p>
<h1 id="with-all-that-being-said-what-can-you-do">With all that being said, what can you do?</h1>
<p>Take a look at your computer or phone and consider the following:</p>
<p>First, take a look at the applications you have installed. Have you used them recently? Are they worth keeping installed or can you uninstall them without much issue? For example, do you really need your Airline app installed when you aren’t traveling anytime soon? What about having both Microsoft Office and Libre Office installed? Do you really need both installed?</p>
<p>Next, once you have cleaned up your applications, which ones offer extensions, mods, or otherwise “third-party” functionality. Review that in a similar way; especially extensions. Reduce down to the ones that really help you with your workflows. I often realize I have extensions or apps installed in a “just in case” scenario that has never actually happened!</p>
<p>Lastly, take this forward. Sometimes it isn’t worth installing the application, especially on phones, when the website works just fine. Create a checklist of apps you might need to install during certain events, like if you are traveling you install you airline app, taxi apps for where you are going, and so on.</p>
<p>Remember, you can always install the software again at a later date! When in doubt, delete and see if you still need it.</p>
]]></content:encoded></item><item><title>Generation AI</title><link>https://ryanpmeyer.eu/posts/generation-ai/</link><pubDate>Mon, 30 Jun 2025 00:00:00 +0000</pubDate><atom:updated>2025-06-30T00:00:00Z</atom:updated><author>hello@ryanpmeyer.eu (Ryan P. Meyer)</author><guid isPermaLink="true">https://ryanpmeyer.eu/posts/generation-ai/</guid><category>posts</category><category>thoughts</category><category>AI</category><description>Raising the next generation.</description><content:encoded><![CDATA[<p>I was recently talking with some friends and we came onto an interesting subject regarding the newest generation of children. We were commenting on the fact that we now know people that are solely using AI chatbots to help raise their kids. &lsquo;Oh my kid has a fever and isn&rsquo;t eating what do I do?&rsquo; &lsquo;When my kid is teething how do I stop them from biting things?&rsquo; etc.</p>
<p>As we all know, people like to categorize things, and this extends to grouping people based on certain characteristics of when they were born. The obvious ones are: &ldquo;Baby Boomers&rdquo; mainly based on the fact that there was a Boom in babies during that period. &ldquo;Millennials&rdquo; because they were at the turn of the millennium. While other groups are stuck with their holdover name like &ldquo;Gen X&rdquo;, &ldquo;Gen Z&rdquo;, and &ldquo;Gen Alpha.&rdquo;</p>
<p>I&rsquo;d like to propose that the next generation being born and raised right now, which I think is &ldquo;Gen Beta&rdquo; will be known as &ldquo;Generation AI&rdquo; (aka &ldquo;Gen AI&rdquo;) because of the proliferation of AI tools becoming the new search engine.</p>
<p>In the past there were books, and group meetings to raise kids. Then people started googling and  moving online, but there was usually other people grouped up in these sites. Now, though, you can do all that with AI. Asking AI nuanced questions and getting answers is the strength of AI.</p>
<p>So, now we are going to start seeing kids being raised by parents that will get a vast majority of their support through AI. Now, I am not going to make any sweeping thoughts on if this will be good or bad, but I do think it is interesting. Beyond to being &ldquo;raised by AI&rdquo;, this next generation will also have AI all through their life, similar to how &ldquo;Gen Alpha&rdquo; is a post-internet generation.</p>
<p>Anyway, I just wanted to make this post because I don&rsquo;t think I have seen anyone try to coin the term for the next generation, and I found it interesting.</p>
]]></content:encoded></item><item><title>Passing on Passwords</title><link>https://ryanpmeyer.eu/posts/passing-on-passwords/</link><pubDate>Mon, 12 May 2025 00:00:00 +0000</pubDate><atom:updated>2025-05-12T00:00:00Z</atom:updated><author>hello@ryanpmeyer.eu (Ryan P. Meyer)</author><guid isPermaLink="true">https://ryanpmeyer.eu/posts/passing-on-passwords/</guid><category>posts</category><category>Tag</category><category>Tag</category><description>Passwords need to be secure, but what about after you’re gone?</description><content:encoded><![CDATA[<p>I recently saw a YouTube channel, <a href="https://www.youtube.com/@sunknudsen">Sun Knudsen</a>, pop back up on feed after a bit of a hiatus.  I&rsquo;d found Sun&rsquo;s channel way back when I was looking for best practices for hardening Firefox or other browsers and applications. I&rsquo;d not really followed the channel and him coming back up made me curious to see what he has been up to.</p>
<p>Turns out he was working on a, then paid - now free, tool called <a href="https://superbacked.com">Superbacked</a>. In very simple terms, the tool will take a secret, passphrase, or some other text. It will then encrypt it with a password of your choosing. And then outputs multiple QR codes. To reconstruct the original passphrase, you need to have the encrypting password as well as a subset of the QR codes generate; for example 2 of the 3 generated.</p>
<p>The idea is you can use this for a lot of purposes where there is a need to share the passphrase between multiple people but they need some kind of quorum to reconstruct it. Think of it like in the movies where you need two keys to be turned at the same time to unlock the launch codes for a ballistic missile.</p>
<p>This can be a great way for companies to share &ldquo;<a href="https://en.wikipedia.org/wiki/Computer_access_control#Break-Glass_Access_Control_Models">break glass</a>&rdquo; account information where you want to ensure not one single person can access it without another. As mentioned by Sun himself, it follows <a href="https://en.wikipedia.org/wiki/Shamir%27s_secret_sharing">Shamir&rsquo;s Sharing Secret</a> .</p>
<p>Now for most people, this can still be useful in some narrow use-cases. The one that Sun proposes is as a way to share your master passwords, presumably to your password manager, to loved ones incase of your death. Which makes sense, you will probably want your loved one or family to be able to access things like emails and accounts to take care of your affairs.</p>
<p>So this made me think, what is my plan? I hope it won&rsquo;t be needed anytime soon, but I should think about how my accounts might be set up to ensure that there isn&rsquo;t more frustrations than needed at that time. Most accounts do let you set up trusted persons, emergency access, or beneficiaries; this is the best place to start for most.</p>
<p>I guess the takeaway here is to take a look at what you need to access your accounts from square one. If any of your accounts can set up a trusted person, like <a href="https://support.apple.com/en-ie/102608">Apple</a>, <a href="https://bitwarden.com/help/emergency-access/">Bitwarden</a>, <a href="https://support.google.com/accounts/answer/3036546?hl=en">Google</a>, 1Password (they don&rsquo;t seem to have a similar feature, but a similar <a href="https://blog.1password.com/digital-estate-planning-guide/">blog</a> post to this that goes into more details), etc., set those up!  But keep in mind that you will be giving that person power to do just that, so make sure their security is up to snuff too. If any of those need a password, or you prefer that method, then you need find out a secure way to share the password that meets your needs, maybe using this or a similar tool.</p>
]]></content:encoded></item><item><title>Thoughts on Vibe Coding</title><link>https://ryanpmeyer.eu/posts/thoughts-on-vibe-coding/</link><pubDate>Wed, 07 May 2025 00:00:00 +0000</pubDate><atom:updated>2025-05-07T00:00:00Z</atom:updated><author>hello@ryanpmeyer.eu (Ryan P. Meyer)</author><guid isPermaLink="true">https://ryanpmeyer.eu/posts/thoughts-on-vibe-coding/</guid><category>posts</category><category>Thoughts</category><category>AI</category><category>Vibe</category><category>Coding</category><description>Some thoughts on the vibe coding concept.</description><content:encoded><![CDATA[<p>I&rsquo;ve been thinking of the concept (idea? methodology?) of vibe coding. It was only a recently coined term from February 2025, based on <a href="https://en.wikipedia.org/wiki/Vibe_coding">Wikipedia</a> .  Roughly, it is the use of AI tools to generate functional code without fully understanding or questioning it. You, as a &ldquo;Vibe Coder&rdquo;, would, in its simplest form, act as a Project Manager of sorts and speak to what you want. The tools would generate implementation guides, implementation plans and the various code iterations until you have a functional program. One of the key elements of this process, and it seems like the degree of this is up for debate, is that you do as minimal code understanding or reviewing as possible - basically if the code works it ships.</p>
<p>Now, as it is a new concept I do expect it to continue to evolve, and the processes around it to become a bit more concrete. But I have some thoughts on some aspects and the overall concept of how it might play out.</p>
<h2 id="vibe-coding-vs-googling">vibe coding vs googling</h2>
<p>Let&rsquo;s start with the obvious, what this is replacing. Before vibe coding started taking off, one of the most common ways to &ldquo;generate&rdquo; code was to use google.  You&rsquo;d often end up in places like StackOverflow where you might find a snippet close to what you were trying to do. You&rsquo;d then copy and paste this &ndash; and it doesn&rsquo;t work! Because you still haven&rsquo;t updated it to work with your actual code. You still have to do a bit of critical thinking with how the code actually works and how you need to update it to make it work for you.</p>
<p>In most cases, this isn&rsquo;t seen negatively. You simply need a function and get a boilerplate that is 90% of the way there. You update it. And it works.</p>
<p>Now sometimes copied code &ldquo;works&rdquo; out of the box and you can straight up paste it and run it without thinking. This is what I think early vibe coding was without the AI wrapper we are seeing now. And that is usually when people start running into trouble, because they didn&rsquo;t really analyze how the code works and down the line it could end up being the thorn in the lion&rsquo;s paw.</p>
<p>What the function is doing, if it is inefficient, or could even created vulnerabilities &ndash; this wasn&rsquo;t considered by the developer. But, hey, it works, so all is good! &ldquo;That&rsquo;s a problem for future me&rdquo; is what many would say to justify this.</p>
<h2 id="vibe-coding-vs-no-code-solutions">vibe coding vs no code solutions</h2>
<p>Where I can see a strong use case of vibe coding is as a no-code solution. There are already many tools out there that  position themselves as low-code, visual-coding or no-code - and now we can add vibe code to that mix. In all intents and purposes you may not even need to see the code when you are &ldquo;truly&rdquo; vibe coding, so services like <a href="https://lovable.dev/">https://lovable.dev/</a> already are pushing for this &ldquo;no need to view the code&rdquo; mentality. Compared to <a href="https://www.cursor.com">https://www.cursor.com</a> which is more adjacent to helping you with the code, but you can still just have it make something and run  with it.</p>
<p>My opinion here is that a blind box solution can work but only in highly scoped solutions, but the real winner will be the more open-box solutions.  There still will be a need to understand some concepts of programming - but that need is getting smaller all the time.</p>
<h2 id="dabbling-in-vibe-coding-at-a-ctf">dabbling in vibe coding at a ctf</h2>
<p>I would be a bit amiss to not including how I&rsquo;ve dabbled in the idea of vibe coding.</p>
<p>There was a CTF I was at recently where, as with most hacking or red-teaming, anything goes. To that effect, I wanted to focus on what commercial AI models could do when it came to some of the challenges.</p>
<p>If you&rsquo;ve not participated in CTFs (this was my first real life event) before, they are usually a mixed game of knowledge challenges, riddles and puzzles. Usually there are clues in the name or description of the challenge on what might be the way to complete it or where the flag might be. From there it is up to you think about the approach and what exploits or vulnerabilities exist that could get you there.</p>
<p>Vibe coding these exercises worked extremely well with one major caveat, you still need some baseline knowledge to guide the AI to the right place or be able to discern when the AI might be going off track. Now, I&rsquo;ll admit that I am still a novice with CTFs, but by shifting to include AI in a way where I directed it what I needed, tested and reworked the code with it, I was able to successfully complete quite a few challenges.</p>
<p>At this point, I am fairly convinced that the tooling is at a point where this tooling is able to heavily accelerate the skills of threat actors to a point that adoption is required for those on the defense. I like to think of this as part of the evolution from one threat actor with one machine, to the many threat actors each with fleets of machines, to each threat actor to now a fleet of agents on a fleet of machines.</p>
<p>This has brought out a new layer of resources available to threat actors that need to be considered.</p>
<h2 id="dabbling-in-general">dabbling in general</h2>
<p>Additionally to trying a bit of vibe coding with the CTF, I have also found AI helpful when I need a quick script made in a language I am comfortable with, like python. I generally know what I need, how to phrase and and can review the code (yes, I am not the best vibe coder in that sense) if needed.</p>
<p>I have also managed to generate an, albeit janky, app built on JavaScript and html. It wasn&rsquo;t anything mind blowing, but it really does show that the generalist models, like Gemini 2.5 Pro, can handle complex functions and files. However, I want to reiterate that it still required a lot of coaching and realigning the AI to get it to stay on track.</p>
<p>Occasionally, once it got <a href="https://news.ycombinator.com/item?id=43688933">stuck on a loop of a problem it couldn&rsquo;t fix</a>, the best option was to have it generate a new handoff prompt and spin up a &ldquo;new&rdquo; chat and get that instance up to the same speed. I would bet that the dedicated tooling is much better, but I have not tested them just yet.</p>
<h2 id="vibe-coding-and-security">vibe coding and security</h2>
<p>One of the largest concerns about vibe coding is the quality of the security of the code. This is where I think a lot of the ethos misses the mark. Sure, you could just &ldquo;vibe out&rdquo; a cool new app, but if you aren&rsquo;t considering security in either a secure-by-design (which I guess that would mean to make sure the AI agent is prompted to consider it?) nor in code reviews (which is against the core idea of vibe coding), nor implementing any security testing &ndash; then this is just a disaster waiting to happen.</p>
<p>There are already <a href="https://nmn.gl/blog/vibe-coding-fantasy">instances</a> of this already happening. So, yeah, this isn&rsquo;t ready for primetime at its current state. It reminds me of when someone might spin up a VPS with LAMP and maybe Wordpress and then not put in any security controls around access to the server, and then within a few days it becomes compromised. It&rsquo;s not that it isn&rsquo;t a secure option - it&rsquo;s just that it wasn&rsquo;t considered correctly.</p>
<h2 id="pre-requirements-to-be-a-good-vibe-coder">pre-requirements to be a good vibe coder</h2>
<p>So what makes someone a good vibe coder? Or better yet, what makes good vibe coding? I think there is still a heavy need to actually understand what you are making - even if it is just handed to you and &ldquo;works.&rdquo; Beyond security concerns, there is just the ability to know what the code is doing and how it could be improved and what limitations it might have at that moment.</p>
<p>Will we get to a point that we don&rsquo;t need to look at the code? Probably, or at least close to it. But for now we should recognize the limitations, but understand the fact that this can help someone really accelerate their coding proficiency.</p>
]]></content:encoded></item><item><title>Thoughts on Reeder.app so far</title><link>https://ryanpmeyer.eu/posts/thoughts-on-reeder.app-so-far/</link><pubDate>Sun, 16 Mar 2025 00:00:00 +0000</pubDate><atom:updated>2025-03-16T00:00:00Z</atom:updated><author>hello@ryanpmeyer.eu (Ryan P. Meyer)</author><guid isPermaLink="true">https://ryanpmeyer.eu/posts/thoughts-on-reeder.app-so-far/</guid><category>posts</category><category>rss</category><category>Thoughts</category><category>pkm</category><description>My thoughts so far on Reeder.app as my RSS Reader.</description><content:encoded><![CDATA[<p>About two months ago <a href="https://ryanpmeyer.eu/posts/revisiting-rss/">I mentioned</a> that I was updating my RSS workflow and decided to test out the new <a href="https://reederapp.com/">Reeder.app</a>. I wanted to provide some updates on my thoughts and RSS process</p>
<h3 id="design-decisions">Design Decisions</h3>
<p>The application itself is a bit of an opinionated look at how RSS, and other feeds in general, should be consumed. Rather than trying to capture everything and let you know what you have read, what you haven&rsquo;t - it focuses on what is new now and consuming that content. This does help with having a high volume of content from your feeds where you just want to see what is happening - but if you want to keep up with a certain feed, this does not support that.</p>
<h4 id="a-more-ephemeral-rss">A more ephemeral RSS</h4>
<p>At its core, this application will feed you a chronological list of your feeds. It will only update them when you open the application, and doesn&rsquo;t sync between devices (by design). This means, if you don&rsquo;t use the app all the time, or maybe don&rsquo;t open it often on one device, you will notice a desync between your apps. This is even noted in the <a href="https://reeder.app/help/#:~:text=Why%20are%20items%20sometimes%20missing%20or%20appear%20in%20a%20different%20order%20on%20my%20devices?">FAQ</a>.</p>
<p>Supposing you have it installed on an iPad and your phone, and you read an article maybe a few weeks ago that you wanted to find. If you try to find it on the iPad you won&rsquo;t see it in the feed. On the phone you would be able to find it, so long as you have your retention set long enough on your feed. Now, yes, you can save the article into one of the tags, like the &ldquo;liked&rdquo; tag, and that will sync - but I often will read items and then days later think about them and want to find them.</p>
<p>In my case, I can look at my phone and see about 32k total items, on the mac I see 22k and on an iPad I see 15k items. Note that in all I have set an unlimited retention. As you can see, if I want to find something I read, my best bet would be to use my phone to find it, then save it and then it will sync.</p>
<h4 id="fomo-overload-management">FOMO Overload Management</h4>
<p>This does help with one thing I do struggle with a lot when it comes to RSS feeds, FOMO. When unread counters climb and I have thousands of posts just sitting there, I just want to close the app and ignore it. But by not showing unread counters and focusing on the now, I feel like I can keep up with my feeds, even if they post dozens of articles a day.</p>
<p>However, it doesn&rsquo;t solve all my FOMO - there are the feeds that I do want to both see everything and know what I might have read and what I have not. Usually these are low volume, smaller blogs or sites - which usually only post a handful of articles that might have built up. This app does not help with that.</p>
<p>You can create filters and folders to help consolidate those feeds of interest, but because of the lack of &ldquo;full&rdquo; syncing and no automated way to indicated if you have read something - I find myself wanting to better track these feeds.</p>
<p>In short; I no longer feel overwhelmed by the number of articles, but now feel like I am missing the ones I really want to see.</p>
<h3 id="social-media-syncing-bluesky-mastodon-etc">Social Media Syncing (Bluesky, Mastodon, etc)</h3>
<p>Taking a step back, I also want to touch on the types of feeds you can add.</p>
<p>For social media, like Bluesky and Mastodon, it does a nice job of rendering the posts. However, if you want to do more than just read them and either interact with them, view by author, or filter them - you have to do this all in the native app.</p>
<p>You cannot:</p>
<ul>
<li>Reply</li>
<li>Block/Filter</li>
<li>Select the author to see all posts synced</li>
<li>Search based on the meta data</li>
</ul>
<p>So unless you have a really curated home feed, you may not want to connect your account, and instead manually subscribe to posters that you really want to see in your feed. Otherwise you might get inundated with content you just don&rsquo;t want to mentally sort through.</p>
<p>At that point, I would rather just open the social media app, or use something like <a href="https://openvibe.social">OpenVibe</a> if I want to consolidate my socials a bit more.</p>
<h3 id="youtube-feeds">Youtube Feeds</h3>
<p>With YouTube, when you log in it auto defaults to the &ldquo;for you&rdquo; page. There is a recent push against this and using the subscription feed instead, per <a href="https://www.youtube.com/watch?v=QEJpZjg8GuA">Technology Connections - YouTube.com</a>. Reeder.app can help with seeing the content chronologically and without needing to remember to select your subscriptions feed. Just like any other feed, you can add the channels and see them when they are posted.</p>
<p>The biggest complaint I have with the YouTube integration, is that I cannot log in and sync down my subscription feed. Ideally, I would be able to log in, select the subscriptions I want to sync, and an option to add new subscriptions automatically, so that when I am on YouTube proper I can subscribe there and it will automatically be synced (or I have the option to check it off).</p>
<p>Right now, I need to manually search for the channel and add it to Reeder.app in addition to possibly subscribing in YouTube.</p>
<p>Additionally, the way videos (regardless of source) are handled in the app could be improved;</p>
<ul>
<li>Videos should float to the the bottom and keep playing when you scroll, like how the podcasts work.</li>
<li>When playing a video the only way to get to a scrub bar is by selecting the fullscreen button, and then you can scrub the video. But then exiting fullscreen pauses the video and you have to tap it again to continue to play it.</li>
<li>Play position isn&rsquo;t saved when you leave and come back. This is most likely a limitation on how the videos are handled, but it would be nice to have it remember your position.</li>
</ul>
<h3 id="podcast-feeds">Podcast Feeds</h3>
<p>Similar to YouTube, you can manually subscribe to podcasts and have them in your feed. This is helpful for podcasts that might be only relevant to the current time, like News podcasts. But, if it is a series or something you want track what you have listened to - this isn&rsquo;t the app to put them in.</p>
<p>I do like that when you are playing a podcast it adds the player to the bottom. I would like to see a way to queue up some podcasts. I often will be scrolling and see something that would be interesting and will want to listen to it next but I have to either wait for the current one to end or just stop it and move to the next one.</p>
<h3 id="filtered-feeds">Filtered Feeds</h3>
<p>This is a new feature, so I do hope it improves. But it is very limiting I feel.</p>
<ul>
<li>It only supports <code>include all terms</code> <code>include any terms</code> or <code>include exact term</code>. For example I cannot create a filter like: Must include: &ldquo;Some Phrase&rdquo; OR &ldquo;Term&rdquo;</li>
<li>I cannot filter specific feeds. For example: <code>include any terms AND include &quot;FeedA OR FeedB&quot;</code></li>
</ul>
<h3 id="general-nitpicks">General Nitpicks</h3>
<p>These I just couldn&rsquo;t find a spot for, so let me just run through them here:</p>
<ul>
<li>You cannot tap on the content&rsquo;s source to then quickly jump to that feed&rsquo;s view. You need to find it in your side bar and then select it. Worse still is if you connect your social media then those sources aren&rsquo;t really searchable (e.g. you cannot search <code>source:&quot;someone@some.social&quot;</code>)</li>
<li>When adding feeds, you have to add them one at a time, you cannot queue up multiple to be added. I.e. I can search for a YouTube Channel, select the <code>+</code> next to them, but have to then click <code>Add</code> otherwise if I go back to search for another it forgets that pending subscription</li>
<li>Additionally, the Add menu just feels very clunky. You seem to have to make more clicks than necessary to do something. I.e. Search for feed, tap <code>&gt;</code>, tap <code>+</code> next to the feed, finally tap <code>Add</code> and then it closes! No way to &ldquo;Add more&rdquo; or anything.</li>
<li>When searching for feeds to add you cannot tap the name of the feed to get more information. This is a bit annoying when you aren&rsquo;t sure which feed is correct if multiple appear.</li>
<li>It would be nice to auto-tag or label certain feeds.</li>
</ul>
<h3 id="overall-thoughts">Overall Thoughts</h3>
<p>After trying out this app, do I like it? Yes. I do, but it doesn&rsquo;t work 100% how I want it to work. Which is okay, I can leverage it for its strengths while compensating them with another tool I might have.</p>
<p>For me, Reeder.app is great for &ldquo;fire hose&rdquo; sources that I don&rsquo;t need to, or want to, retain a copy of for later reference. The best example here is News, which comes in fast. If it is worth saving the article, I need to make the conscious effort to send it to something like Readwise.</p>
<p>However, for feeds that I want to stay ontop of, then I think either Readwise Reader or Reeder Classic might be best. Where I can keep track of my read/unread and also have the articles automatically sync.</p>
<h2 id="what-now">What now?</h2>
<p>I&rsquo;ve already started re-testing Readwise reader, but have already found that the discoverability is very difficult. It seems searching doesn&rsquo;t include searching articles from your feeds, which isn&rsquo;t great. And I also plan to re-test Reeder Classic.</p>
<p>What this has shown me is that I need the following core processes:</p>
<ul>
<li>&ldquo;Stream Feed&rdquo; - Feeds that I just want to see what is happening, where I don&rsquo;t care too much about retention or revisiting.</li>
<li>&ldquo;Priority Feed&rdquo; - Feeds that I want to review what is posted and most likely will want to retain a copy incase I want to go back. These often should be sent to my highlighter of choice. These also need to be searchable and discoverable.</li>
<li>Discoverability - In general, I want to be able to find something if I had looked at it. Ideally I do like to know if I read something, or started reading it - and this should be fairly automatic.</li>
<li>Highlighting - I do like to highlight, so either I have to remember to send something to Readwise or have it there in the first place.</li>
</ul>
<p>Anyway this is mostly a ramble post, I do want to set some more time aside to work on going over my PKM processes as a whole too, that way as I work on them and maybe discuss them, there is a reference point.</p>
]]></content:encoded></item><item><title>Some blog changes and updates</title><link>https://ryanpmeyer.eu/posts/some-blog-changes-and-updates/</link><pubDate>Sun, 23 Feb 2025 16:00:00 +0000</pubDate><atom:updated>2025-02-23T16:00:00Z</atom:updated><author>hello@ryanpmeyer.eu (Ryan P. Meyer)</author><guid isPermaLink="true">https://ryanpmeyer.eu/posts/some-blog-changes-and-updates/</guid><category>posts</category><category>website</category><category>blog</category><description>A quick update on site changes.</description><content:encoded><![CDATA[<p>I&rsquo;ve been working a little on the backend of the site to see how I can improve things. My goals are to:</p>
<ol>
<li>Make the site more robust.</li>
<li>Have a little better insight into the usage of the site.</li>
<li>Adding interactivity.</li>
<li>Make it easier for me to post to the site.</li>
</ol>
<h2 id="making-the-site-more-robust">Making the site more robust</h2>
<p>Previously I was hosting my DNS with my registrar, but I have been working to split the two and migrate to different services. This should allow for a few things, one; I can use Cloudflare for DNS, which is a well known service and has a lot of additional tooling to boot. Two, I can move my Registrar a bit easier since I would just have to make Nameserver updates upon moving (Though I am still on Squarespace at the time of writing, I am looking at others, like <a href="https://porkbun.com/">Porkbun.com</a>).</p>
<p>Additionally, I am moving from Github Pages to Cloudflare Pages. Though this goes against the idea of the above where I wanted to unconsolidated; here there are some added benefits from an analytics point of view. Also I can easily move back if I decide there isn&rsquo;t much benefit.</p>
<h2 id="site-insight">Site Insight</h2>
<p>I also want to try to get a better idea on if the site is getting any traffic. I would like to reiterate that this blog is more for me to work on my own skills, and have control over my content. But, it is still helpful to know if people do access the site.</p>
<p>I weighed some options and came to two possible tools; one was to use <a href="https://usefathom.com/">Fathom Analytics</a>, which is a privacy focused analytics service. The other was to, as you can possibly guess, use Cloudflare. I am going to most likely opt for the Cloudflare option as it is free, and I really can&rsquo;t justify (yet) on adding more to my monthly subscriptions. Now, if this site gets to a point where it can generate enough money to support itself then that will change. Though, I don&rsquo;t see that as a current goal for the site.</p>
<h2 id="adding-interactivity">Adding Interactivity</h2>
<p>Next thing I wanted to setup were comments for those interested to interact with posts. Unfortunately it looked like a lot of the plug and play systems were either not free or needed to have more than just static pages.</p>
<p>Luckily, I found out that <a href="https://mattdyson.org/blog/2024/11/bluesky-posts-as-hugo-blog-comments/">Matt Dyson</a> made a way to <a href="https://github.com/mattdy/bluesky-hugo/">integrate to Bluesky comments with my same Hugo and Congo setup</a>. This works out well since Bluesky is my current primary sharing media. (Though maybe I can also add Mastodon next?) So, now there are comments available! I will need to update some of my older articles where I also posted on Bluesky.</p>
<p>Side note to all of this; I had also looked at migrating to a platform like <a href="https://ghost.org/">Ghost</a> or <a href="https://www.beehiiv.com/">Beehiiv</a>. Both would offer a lot of these tools, but again my issue would be justifying the cost to maintain them. Also their entry tiers seem to leave a lot of customization features out. Anyway, I am going to keep this as a static site for now.</p>
<h2 id="writing-ease">Writing ease</h2>
<p>Lastly, I think this will continue to be a struggle for me as I work out how to best write articles for the site. I would like to be able to do so both on my computer, which is the easier one; and on my iOS devices like iPad.</p>
<p>Right now, I am using Obsidian as it has strong markdown support - but there is still a gap on getting the files uploaded to Github easily, especially from iOS. And it isn&rsquo;t the most seamless process. This will most likely be my next big focus on site improvements.</p>
]]></content:encoded></item><item><title>Apple's Encryption Changes in the UK</title><link>https://ryanpmeyer.eu/posts/apples-encryption-changes-in-the-uk/</link><pubDate>Sun, 23 Feb 2025 00:00:00 +0000</pubDate><atom:updated>2025-02-23T00:00:00Z</atom:updated><author>hello@ryanpmeyer.eu (Ryan P. Meyer)</author><guid isPermaLink="true">https://ryanpmeyer.eu/posts/apples-encryption-changes-in-the-uk/</guid><category>posts</category><category>Apple</category><category>Encryption</category><category>Thoughts</category><description>My thoughts on the recent Apple news regarding their changes with encryption in the UK.</description><content:encoded><![CDATA[<p>Recently there was news that the UK has forced Apple to remove encryption from their iCloud service, as seen on the <a href="https://www.bbc.com/news/articles/cgj54eq4vejo">BBC</a>. However there is a bit more nuance to this.</p>
<p>Firstly, I think that the following video does a good job covering what exactly is meant by &ldquo;Apple removing encryption.&rdquo;</p>

<div class="video-wrap" style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin:var(--s-5) 0;border-radius:var(--radius-md);">
  <iframe
    src="https://www.youtube-nocookie.com/embed/f66tYU-k4sQ"
    title="YouTube video"
    loading="lazy"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
    allowfullscreen
    style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;">
  </iframe>
</div>

<h2 id="tldw">TLDW</h2>
<p>What appears to be happening is the following;</p>
<p>The UK has demanded a backdoor access to Apple&rsquo;s iCloud data so that they can decrypt it at will. This demand also is behind closed doors and with apparent orders not to share any information about it, so we are learning through various leaks and policy changes.</p>
<p>Apple had three major choices:</p>
<ol>
<li>Deny the request - This would force them to either enter into a long legal battle or leave the market.</li>
<li>Accept the request - This would entail creating a backdoor that would allow the UK to be able to decrypt any data at-will, but also creating a major threat surface for bad actors to target - and eventually exploit.</li>
<li>Remove features that prevented Apple from decrypting the data upon request from the UK.</li>
</ol>
<p>It seems, they went with option three. This has been an ability of apple, and really any provider that holds the encryption keys to your data, to do. However, they released a feature back in 2023 called <a href="https://support.apple.com/en-us/108756">Apple Advanced Data Protection</a>.</p>
<p>This feature, in short, allowed iCloud users to move the decrypting private key from Apple&rsquo;s Servers to their local devices. Thus Apple could no longer decrypt the data unless you provided your trusted device in the request. For reference, Apple has information <a href="https://support.apple.com/en-us/102651">here</a> - note the services that support &ldquo;Trusted Devices&rdquo;.</p>
<p>As you might be able to see, this wouldn&rsquo;t work for the third option to be viable.</p>
<p>Ergo Apple is rolling back this feature for all UK users - most likely this is based on your iCloud user location, and not where your device was bought or is currently located.</p>
<h3 id="tldr">TLDR</h3>
<p>What does this all mean then? Is Apple removing encryption?</p>
<p>No.</p>
<p>Apple is just disallowing full control over your encryption, and they will retain a copy of the key to decryption so that they can hand it over on requests.</p>
<h3 id="what-to-do-now">What to do now?</h3>
<p>If you are in a region that isn&rsquo;t affect, you should enable the Apple Advanced Data Protection. It is still a great tool to use. But keep an eye on any changes, this can be a very slippery slope; and more countries may follow the UK&rsquo;s stance.</p>
<p>If you are affected, then you should consider either moving your more sensitive information to another service provider that will not be accessible so easily. Or look into running local backups to avoid another policy change at the next provider.</p>
]]></content:encoded></item><item><title>Thoughts on Deepseek's Impact</title><link>https://ryanpmeyer.eu/posts/thoughts-on-deepseeks-impact/</link><pubDate>Sat, 01 Feb 2025 00:00:00 +0000</pubDate><atom:updated>2025-02-01T00:00:00Z</atom:updated><author>hello@ryanpmeyer.eu (Ryan P. Meyer)</author><guid isPermaLink="true">https://ryanpmeyer.eu/posts/thoughts-on-deepseeks-impact/</guid><category>posts</category><category>AI</category><category>Thoughts</category><description>Exploring the Initial Impact of Deepseek AI</description><content:encoded><![CDATA[<p>It has been about a week since the most people became aware of Deepseek AI. Although Deepseek AI&rsquo;s r1 model initially released on the 20th went largely unnoticed, it gained attention after impacting the stock market the following week. During that week a lot has happened; from confusion to dismissals to speculations and concerns. I&rsquo;ve been asked by a decent number of people what I thought of this situation, which spurred me to write up my thoughts.</p>
<p>I must preface this by stating I&rsquo;m not an LLM expert; however, there is a lot of information to unpack. My aim is to highlight which aspects of Deepseek are crucial, worth considering now, and which remain unknown. I&rsquo;ll try to break this down into a couple of topics; how it affects the current AI incumbents, is it safe to use, what information we could accept or should be critical of, and how this can affect things in the future.</p>
<h1 id="deepseek-and-the-incumbents">Deepseek and the Incumbents</h1>
<p>This is most likely where most have initially heard of Deepseek, that it is a new Chinese built LLM that is comparable to the most powerful, available, models from places like OpenAI. Benchmarks are available to analyze how different models compare. However, many people simply want to know whether it&rsquo;s good, and in that regard, yes, it is.</p>
<p>A new model being better than an older one isn&rsquo;t really news worthy in of itself, but it is more so the cases of how it was made, where it was made and its availability.</p>
<p>Starting with how it was made; this was a side project from a Chinese investment firm which was able to make this model with around $6 Million dollars worth of investment. It is important to be critical of this number for various reasons, but we should not overly focus on it. Even if it cost $100 Million, it would still be significantly less than what it has cost to create the models it is competing with.</p>
<p>The next key fact of its creation is that China is under an embargo from getting the latest computer hardware, e.g. chips. Meaning this model was trained on older hardware. Again, it should be noted there is a consideration of &ldquo;<a href="https://www.404media.co/openai-furious-deepseek-might-have-stolen-all-the-data-openai-stole-from-us/">standing on the shoulders of giants</a>,&rdquo; in that some research and development has already been done, and they were potentially leveraging other available models to support the training of this model. Regardless, they proved that it was relatively cheap to create this model.</p>
<p>Lastly, the model was made under an open license: meaning (1) the model is free to use and modify; (2) you can use their website or app and run the model on their servers; (3) you can also download the model and run it locally. Essentially, this means that you now have the ability to run a model on par with the best available from OpenAI for a fraction of the cost.</p>
<p>So in short, this was made extremely cheaply, provided freely with the ability for others to modify it for their needs - <a href="https://www.404media.co/deepseek-mania-shakes-ai-industry-to-its-core/">showing that maybe the incumbents with their access to powerful hardware may not be as untouchable as initially thought</a>. Thus confidence fell, causing the stock market to react.</p>
<h1 id="is-it-safe">Is it safe?</h1>
<p>With that being said, is it safe to use? Well, it depends.</p>
<p>Starting with the hosted version, from their website or app. When it first came out I was wary of it, mostly because it is a new SaaS tool and hasn&rsquo;t really been reviewed or tested. So use at your own risk, and maybe don&rsquo;t ask it (read provide it) anything personal or private. That wariness proved to be warranted as <a href="https://www.wiz.io/blog/wiz-research-uncovers-exposed-deepseek-database-leak">security researchers have already found a fully accessible database that they were using to chats and logs</a>.</p>
<p>Additionally, Italy has begun pressuring them to review and adhere to various data processing laws. They did something similar with OpenAI&rsquo;s ChatGPT when it first came out, and was later sufficiently reviewed and approved. However, with Deepseek, they have taken the stance that they only seem to fall under Chinese data laws; as that is where their servers and company are located.</p>
<p>So, is it safe to use the app and website? I would say <strong>no</strong>, not until they start adhering to and proving that they are handling data securely. Now, I do also think that when you use ChatGPT, Google Gemini or any of the other hosted AIs, you should always take care to avoid providing more information than you feel comfortable with being used and stored by them.</p>
<p>Consider using DeepSeek locally instead. Running a <a href="https://medium.com/@ahmed.imtiaz2000/how-to-run-deepseek-locally-using-ollama-a-step-by-step-guide-14cd7b3feec5">large language model (LLM) locally</a>, without an internet connection, should offer more privacy since you control the computer processing the requests and have full control over it.</p>
<h1 id="being-critical">Being Critical</h1>
<p>There is a point of contention on the model&rsquo;s training data and censorship. The gist is, this model has censorships on things like the Tiananmen Square and other topics. Now, I think the topic of censorship is beyond this post, but I do want to say that all models are censored in some way; they will all have bias and you should always consider who built the model.</p>
<p>Furthermore, there are concerns about models being trained to provide seemingly harmless but actually malicious information. <a href="https://arxiv.org/abs/2401.05566">This is theoretically possible</a>. It is important to carefully examine the information provided by any model before taking action.</p>
<p>I have often taken the stance that you should treat an AI like an Intern, where they have a lot of time to get you answers on things or confirm things, but they can get things wrong. And they are heavily dependent on how you ask them to do something. In short, use them to augment and not replace you processes.</p>
<h1 id="the-future">The future</h1>
<p>In summary, DeepSeek has demonstrated that creating a powerful large language model (LLM) doesn&rsquo;t require massive hardware investments like OpenAI and others have made. This opens up the possibility of more players entering the field. However, it also highlights the importance of not blindly trusting new SaaS offerings with sensitive information until they have been thoroughly vetted.</p>
<p>For now, it might be prudent to avoid using the app until it has passed regulatory scrutiny in both the EU and US. Although these regions have their own biases, a consensus of reviews can help establish a baseline level of security.</p>
<p>We will probably see more models come out that are based on Deepseek, or trained in similar ways. This also applies to the big players, who should also benefit from this information to optimize their own training on top of having the most compute power to do even more.</p>
<p>Time will tell if this pushes to more availability of LLM models, or if the most powerful will still be closed behind big technology players.</p>
]]></content:encoded></item><item><title>Revisiting RSS</title><link>https://ryanpmeyer.eu/posts/revisiting-rss/</link><pubDate>Fri, 10 Jan 2025 00:00:00 +0000</pubDate><atom:updated>2025-01-10T00:00:00Z</atom:updated><author>hello@ryanpmeyer.eu (Ryan P. Meyer)</author><guid isPermaLink="true">https://ryanpmeyer.eu/posts/revisiting-rss/</guid><category>posts</category><category>rss</category><category>pkm</category><description>Revisiting how I use RSS</description><content:encoded><![CDATA[<p>Over the years, I’ve had an on-and-off relationship with RSS. Despite the rise of algorithms and curated news apps, I still believe RSS remains one of the best ways to build a personalized feed that you own.</p>
<p>Recently, I’ve been reevaluating how RSS fits into my workflows. To better understand what I need from it now, I’ve reflected on what has worked for me in the past—and what hasn’t.</p>
<h2 id="google-reader">Google Reader</h2>
<p>My first real expirence with RSS was with Google Reader (<a href="https://killedbygoogle.com">RIP</a>). Back then, I used it primarily to track my favorite websites in one place. It wasn’t anything fancy, but it was a start. Unfortunately, a combination of Google shutting down the service and my growing use of Reddit led me to abandon RSS entirely.</p>
<p>Regrettably, I didn’t save my OPML file — a mistake I would repeat.</p>
<h2 id="tt-rss-a-golden-age">TT-RSS: A Golden Age</h2>
<p>My next attempt at RSS feels like a golden age. I was learning DevOps skills, deploying various tools and services, and came across <a href="https://tt-rss.org">TT-RSS</a>. This highly customizable application allowed me to fine-tune my RSS experience.</p>
<p>Two features stood out:</p>
<ol>
<li><strong>Full-article fetching</strong>: This ensured I didn’t have to visit ad-filled or inaccessible websites. And it provided a consistent reading expirence.</li>
<li><strong>Scoring system</strong>: I could assign positive or negative points to articles based on their source or content. For example, I might give WebsiteA a score of +5 but reduce points for articles mentioning SubjectA with -10, effectively curating my feed before I even saw it.</li>
</ol>
<p>While I loved these features, maintaining the system eventually became too time-consuming. I shut it down — and, once again, lost my OPML file.</p>
<h2 id="rediscovering-rss-for-productivity">Rediscovering RSS for Productivity</h2>
<p>I returned to RSS during a hectic period in my career, focusing on productivity and controlled information flows. This time, RSS became a tool for professional growth rather than casual interest. It helped me stay up to date across industries without the distractions of social media.</p>
<p>I experimented with several readers, but two stood out:</p>
<ul>
<li><strong><a href="https://reederapp.com/classic">Reeder 5</a></strong>: A clean, organized app that I enjoyed using but found lacking for capturing deeper insights.</li>
<li><strong><a href="https://readwise.io/read">Readwise Reader</a></strong>: A powerful tool for collecting and acting on articles, though I became overwhelmed by the sheer volume of content. At one point, I had over 50,000 articles saved—a clear sign my system wasn’t sustainable.</li>
</ul>
<h2 id="less-is-more">Less Is More</h2>
<p>Now, I’m shifting to a simpler, more intentional approach. Here’s what I’ve learned about making RSS work for me:</p>
<ul>
<li><strong>Keep it interesting</strong>: A mix of professional and personal interests prevents burnout or wasted time.</li>
<li><strong>Let go of perfection</strong>: Not every article needs to be saved or dissected. Sometimes reading is just reading.</li>
<li><strong>Streamline article handling</strong>: For important articles, I can quickly move them to Readwise for deeper engagement.</li>
<li><strong>Customize feeds</strong>: Filtering out irrelevant content reduces noise and improves focus.</li>
<li><strong>Balance feed frequency</strong>: Some feeds dominate with frequent posts, overshadowing less active but equally valuable sources.</li>
<li><strong>Prioritize accessibility</strong>: A good interface that works consistently across devices is crucial.</li>
</ul>
<h2 id="exploring-new-options">Exploring New Options</h2>
<p>With these lessons in mind, I’m considering a few options for the future:</p>
<h3 id="revive-tt-rss">Revive TT-RSS</h3>
<p>Setting up TT-RSS again could meet most of my needs, especially its scoring system. However, the interface feels outdated compared to other tool, and the extra work to maintain it is not appealing.</p>
<h3 id="embrace-the-new-reeder">Embrace the New Reeder</h3>
<p>The developer of Reeder recently launched a new version with a timeline-based approach. This aligns with my goal of treating articles as transient, rather than something to hoard.</p>
<h3 id="refine-the-readwise-reader-workflow">Refine the ReadWise Reader Workflow</h3>
<p>By dividing content between Readwise (for in-depth articles and &ldquo;important&rdquo; sources) and Reeder (for casual browsing), I could create a more focused system. However, this split approach risks neglecting one platform over the other.</p>
<h2 id="moving-forward">Moving Forward</h2>
<p>For now, I’m giving <a href="https://reederapp.com">Reeder.app</a> an honest effort. Its integration with services like BlueSky and Mastodon adds a layer of connectivity I find interesting, as well as with YouTube.</p>
<p>Will this approach work? Perhaps. Things are always changing, but for now, it feels like an engaging way to stay informed, educated, and entertained.</p>
]]></content:encoded></item><item><title>AI doppelgänger Scams</title><link>https://ryanpmeyer.eu/posts/ai-doppelg%C3%A4nger-scams/</link><pubDate>Mon, 30 Dec 2024 00:00:00 +0000</pubDate><atom:updated>2024-12-30T00:00:00Z</atom:updated><author>hello@ryanpmeyer.eu (Ryan P. Meyer)</author><guid isPermaLink="true">https://ryanpmeyer.eu/posts/ai-doppelg%C3%A4nger-scams/</guid><category>posts</category><category>AI</category><category>Fraud</category><category>Scams</category><description>How Generative AI Improves Scammer Tools</description><content:encoded><![CDATA[<p>There’s been a few articles (<a href="https://www.npr.org/2024/12/24/nx-s1-5235265/how-to-protect-yourself-from-holiday-ai-scams">NPR</a>, <a href="https://www.wired.com/story/you-need-to-create-a-secret-passphrase-with-your-family/">Wired</a>)
recently regarding the use of AI and how it will provide new tools for scammers to better trick people by posing as someone they know. A lot of these articles  have very helpful techniques, but I want to cover how people could realistically adopt the techniques.</p>
<p>Because as we know, strong defenses are only useful if they actually get used.</p>
<p>First let’s start with making a scammers job harder to begin with.</p>
<h2 id="lockdown-accounts">Lockdown accounts</h2>
<p>This isn’t just make sure you have secure passwords and MFA - which you should have. Locking down your accounts means being aware of what you post, how someone could determine information about you, like where you are, problems you might have, interests they could tempt you with, and so on.</p>
<p>With AI, if there are videos or pictures of you - which I am sure there are of most people - then you could be cloned fairly easily. Honestly I don’t expect people to not post these types of things, which is why diligence is key.</p>
<p>Making accounts private, culling your followers, using multiple accounts to professional and personal interests. These can help minimize the potential knowledge scope on you if you are targeted.</p>
<p>Additionally, making sure you can recover your accounts and that your recovery email is well protected.</p>
<p>In short:</p>
<ul>
<li>Make sure your posts aren’t more revealing than you want them to be</li>
<li>Know who follows you</li>
<li>Take your account private by default</li>
<li>Consider multiple accounts to split between public and private</li>
</ul>
<p>This is something everyone should do, and you should do it on a cadence that makes sense. Because settings change, your tolerance for posting personal information changes and all that should be considered over time.</p>
<h2 id="set-up-strong-authentication">Set up strong authentication</h2>
<p>Get a password manager, randomize your passwords, and if possible randomize your emails too! On top of all that, set up MFA where possible. I suggest software plus hardware (like a YubiKey).</p>
<p>Also, if you are helping a parent or loved one, then a family account with the password sharing may help when needed. We have all been there when their parent can’t remember the password to an account they need your help with, and you have to go through the recovery dance.</p>
<h2 id="avoid-clicking-suspicious-links">Avoid clicking suspicious links</h2>
<p>This should also be an obvious one, but just don’t click links you don’t trust. These are links randomly texted to you, or just don’t look right (like fedex-com[.]net).</p>
<p>Now obviously clicking on links in social media is going to happen. Just make sure before you do click. And if you’re a bit suspicious of it. Google the website and the title of the article instead.</p>
<p>With that being said, suppose you’re targeted and a bad actor is realistically posing as someone you know. Maybe it’s a phone call, or a voice message, or even as sophisticated as a video call - all leveraging AI tooling.</p>
<h2 id="secret-family-codes">Secret family codes</h2>
<p>I see this being suggested a lot. And it can be helpful, but really it is a historical  knowledge challenge. So, realistically the best way to leverage this in your daily life is to ask questions only the two of you might know. Like a conversation you had previously or the last place you ate and what you ordered.</p>
<p>Obviously people are human, and I’m not the only one that forgets what I had eaten a day or two later. Also, as mentioned earlier, depending how open your life is on the internet someone might know what you ate last Sunday because you posted it on your stories.</p>
<p>Better yet would be to use intimate knowledge. These are things like inside jokes the two of you might have, personal discussions or other things that have a very low chance of being online.</p>
<p>Which is why creating a code phrase can still be helpful, as it is a better type of shared knowledge - intimate knowledge.</p>
<h2 id="secondary-channel-of-communication">Secondary channel of communication</h2>
<p>Another way to check if someone is who they say they are is to either ask them to send you the same message on a known secure form of communication you two share. This could be instagram DMs, signal messaging, or something where they need to authenticate to access. Or you could reach out yourself and not tell them you’re planning to do it.</p>
<p>Now this isn’t perfect either, especially if the bad actor has already compromised those accounts and has access.</p>
<h2 id="third-person-check">Third person check</h2>
<p>Now if you really aren’t sure how compromised that person might be. You can also reach out to someone else that is close with them to check. Depending on the time of day it could be a colleague, or a partner, someone you expect them to be with at that moment, have seen recently or will see soon. They can then work one physically finding the person to confirm if it is them. Or might be able to confirm the request.</p>
<p>Lastly is education, not only for yourself but others around you. Knowing not only who is aware, but also the extent they are capable of. The sad truth is, the most vulnerable are often targeted the most.    Knowing who you might have around that needs the extra help can make all the difference in the world.</p>
<p>Again, the best tools are the ones that are used, and the more in use the more layers of defense you have available.</p>
<h1 id="how-scams-are-changing">How scams are changing</h1>
<p>I want to reiterate that who this is most important for isn’t necessarily going to be the reader, nor most of their immediate friends and family. It will be the grandparents and older generations. Yes I do hope you learn something or use one of these techniques, but I also want you to be proactive.</p>
<p>There’s an event I was told of, which didn’t involve AI but is of the same vein of directed attacks. The scammer was watching a home of an elderly woman. Their adult children were visiting and some left for home. About 10 minutes later the woman received a phone call from the scammer, posing as one of the people that had just left, saying that the other was in trouble with the police and needed to pay a fine otherwise they were going to go to jail. Luckily the woman didn’t recognize the voice, and instead called someone else to check.</p>
<p>Now imagine if this same tactic added AI generated voice copies of the person they know? Just being that little more convincing could have lead to a successful scam. It’s these enhancements that people need to be prepared for.</p>
<p>As with everything in security, the bad actors only need to succeed once - so be diligent!</p>
]]></content:encoded></item><item><title>Hide Your Email Services</title><link>https://ryanpmeyer.eu/posts/hide-your-email-services/</link><pubDate>Tue, 29 Oct 2024 21:00:00 +0100</pubDate><atom:updated>2024-10-29T21:00:00+01:00</atom:updated><author>hello@ryanpmeyer.eu (Ryan P. Meyer)</author><guid isPermaLink="true">https://ryanpmeyer.eu/posts/hide-your-email-services/</guid><category>posts</category><category>blog</category><category>privacy</category><category>security</category><description>Data breaches are a constant, what can you do?</description><content:encoded><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Unfortunately, it&rsquo;s highly likely that your information will be exposed at some point. This has become a common enough occurrence that instead of asking, &ldquo;If it happens, what do I do?&rdquo; it&rsquo;s more prudent to ask, &ldquo;When it happens, have I prepared enough to minimize the impact?&rdquo;</p>
<p>I’ve considered this from various angles, but one method of protection worth discussing is &ldquo;Hide My Email Services&rdquo; like Apple&rsquo;s <a href="https://support.apple.com/en-us/105078">service</a> with iCloud, or Proton&rsquo;s <a href="https://proton.me/support/aliases-mail">service</a> and how these services can be used to protect your privacy.</p>
<p>Keep in mind though, that whenever you plan to increase your security or privacy you will, in most cases, lose some convenience or ease of use.</p>
<h3 id="what-are-hide-my-email-services">What Are Hide My Email Services?</h3>
<p>To start, these services create an alias that will relay any emails sent to it directly to your main email address. These aliases are often a randomly generated name with one or several domains. So, if your email is <code>jdoe@gmail.com</code> and you use Apple&rsquo;s Service, it will generate an email like <code>Jade.0a.Kiwi@icloud.com</code>. You can then use this email for a website, and even generate multiple aliases that point back to <code>jdoe@gmail.com</code></p>
<p>Think of it as having an unlimited number forwarding addresses for your main email.</p>
<pre tabindex="0"><code>Website --Sends Email--&gt; Alias Email --Forwards--&gt; Main Email
</code></pre><h4 id="aliases-alternatives">Aliases Alternatives</h4>
<p>Some email services also offer a similar feature by allowing you to append a <code>+</code> to your email address. So <code>jdoe@gmail.com</code> can use something like <code>jdoe+facebook@gmail.com</code> as an email for Facebook. This would allow them to know that, in theory, only emails from Facebook should be going to that email, and if they get something from somewhere else they may be able to assume that the email was sold, exposed, or otherwise leaked.</p>
<p>Now, the issue with this from a privacy perspective is that the root email is clearly exposed. Instead, the goal is to make it difficult to guess your main email address and to ensure your provided email is as unlinkable to you as possible.</p>
<h2 id="when-to-use-hide-my-email-services">When to Use Hide My Email Services</h2>
<p>Now that we know, in general, that these services offer an ability to create unique, random emails that can be used to protect your main email, let&rsquo;s discuss when it might be appropriate to use these services, and the drawbacks in each case. I will order these in what I think are the best way to start as a path to more &ldquo;advanced&rdquo; usage.</p>
<h3 id="level-1-this-is-just-temporary">Level 1: This is just temporary</h3>
<p>If you run into a site or service that needs an email, but you don&rsquo;t ever plan to really manage the account (I will come back to this point though) then this is a perfect service for that.</p>
<p>Suppose you&rsquo;re at a restaurant and want to place an order through their website, which requires an email address. You can use these services to generate a temporary email, complete your order, and then delete that email to prevent any future spam.</p>
<p>And that&rsquo;s really it! Use the service as a temporary email, you can make just one for all use cases or generate a new one every time. I would suggest making a unique one for each, if possible, because that let&rsquo;s you get used to managing multiple ones at ones and move on to the next level.</p>
<h3 id="level-2-why-do-i-have-to-make-an-account">Level 2: Why do I <em>Have</em> to Make an Account?!</h3>
<p>Okay, so same as before, you&rsquo;re in a situation where you have to not only provide an email, but also make an account. Rather than using your main email, use a Hidden email instead! Additionally, make sure to use your password manager to generate a random password.</p>
<p>This site will now send spam only to your randomly generated email. And since the site now has associated login credentials, it could potentially be a source for email and password leaks. However, since they are both random, it is basically just junk. Sure you do need to make sure to secure that account the best you can, remove any other information, credit cards, etc.</p>
<p>But now this data cannot be used to comprise your accounts on other sites.</p>
<h3 id="level-3-change-my-email">Level 3: Change My Email</h3>
<p>At this point, I hope you see where we are going. Taking this a step further, we can start changing our non-critical accounts to use Hide My Email services. Randomly generate a new email, log in to your site still using your root email, and then change it. Oh, and update your password while you are there to make sure it is fully randomized while you are there; and set up MFA.</p>
<p>Remember, this is only protecting you when it comes to linking the email to you directly and cross referencing/attacking to other sites.</p>
<p>I will want to also add a note here that you should take care on which sites you do this with. For social media, video game accounts, shopping accounts, there shouldn&rsquo;t be too much of a risk using these emails. However, financial sites, government accounts, and other &ldquo;Identity based sites&rdquo; you may want to use your root email or other softer alias techniques like the <code>+</code> appending technique. Why? Well, it could be more frustrating to maintain or get support with a randomly generated email. Also, these sites tend to, but not always, have a stronger security posture. Remember, we are looking at minimizing impact here, not remove it entirely!</p>
<h2 id="is-it-worth-the-effort">Is it worth the effort?</h2>
<p>To summarize what we can do here is:</p>
<ol>
<li>Get a new service, and yet another subscription.</li>
<li>Give spammers meaningless, disposable emails.</li>
<li>Use throw-away emails for throw-away accounts.</li>
<li>Move existing accounts to these new, randomly generated emails.</li>
</ol>
<p>This helps isolate sites to a single email, lowering the value of your data provided and protecting you from being identified in a data leak. Additionally, in combination with randomly generated passwords, helps to isolate credential stuffing attacks to just that one site.</p>
<p>But, it isn&rsquo;t all perfect. There are some negatives to consider!</p>
<h3 id="negatives">Negatives</h3>
<h4 id="communication">Communication</h4>
<p>There are times when you may need to send an email from that randomly generated address, like when reaching out to support. This can be clunky or even impossible, depending on the service, and it&rsquo;s generally not as simple as using your regular email address.</p>
<p>Also, trying to call support, or provide the email can get you some odd looks. And it is cumbersome to generate one in person, but not a non-stopper.</p>
<h4 id="authenticity">Authenticity</h4>
<p>Another thing to be aware of, some sites have protections around temporary email addresses, particularly ones like 10minutemail. This can lead to issues where your generated email may not be accepted if the domain isn&rsquo;t well known. For example, Apple&rsquo;s uses icloud.com as the domain, which is well known and accepted in most cases. However if you use a service that uses less known domains, or you can use your own, that can lead to issues with the email not being accepted.</p>
<h4 id="service-provider-trust">Service Provider trust</h4>
<p>A significant concern with these services is that all emails going to those alias addresses are accessible to the service providers. For example, Apple could, in theory, see what is sent to <code>Jade.0a.Kiwi@icloud.com</code>.</p>
<h4 id="data-breaches">Data breaches</h4>
<p>When a breach happens you can go to places like <a href="https://haveibeenpwned.com">Have I been Pwned</a> and put in your email to see where you were affected. However, now you don&rsquo;t see all your potential accounts, as most will have a unique email. In these cases, usually the site does send you an email to alert you, so you will want to monitor for those a bit more actively. When you do get one, you can do your normal response like resetting the password, but also reset the email!</p>
<h2 id="all-in-all">All in all</h2>
<p>Is this worth it? For you, I don&rsquo;t know. But for me, it is worth applying some of these items.</p>
]]></content:encoded></item><item><title>Building My Site</title><link>https://ryanpmeyer.eu/posts/building-my-site/</link><pubDate>Mon, 18 Mar 2024 13:23:47 +0100</pubDate><atom:updated>2024-03-18T13:23:47+01:00</atom:updated><author>hello@ryanpmeyer.eu (Ryan P. Meyer)</author><guid isPermaLink="true">https://ryanpmeyer.eu/posts/building-my-site/</guid><category>posts</category><category>blog</category><category>hugo</category><category>website</category><category>guide</category><description>A scalable site.</description><content:encoded><![CDATA[<h2 id="introduction">Introduction</h2>
<aside class="alert alert--info" role="note">
  <strong>Info:</strong> This is not a full step by step guide, but one that can be used in combination with the standard guides available! Also I plan to update this after some time, so it will get better. 🙈
</aside>

<p>For those curious this guide is how I got this site up and running using a combination of Github, as the deployment automation and hosting of the site, and Hugo, a static website generator tool, using the Congo theme. This is all better documented on all the referenced sites, but this might help with bridging any gaps, or maybe provide a more concentrated interpretation of the above guides.</p>
<p>The assumptions are that you know your way around the terminal and know how to use tools like <code>git</code>, <code>brew</code> (for macs) and modify your domain&rsquo;s DNS.</p>
<p>All references can be found at the following sites:</p>
<p><a href="https://gohugo.io/getting-started/quick-start/">https://gohugo.io/getting-started/quick-start/</a> - Hugo quickstart guide. I would start here if you have no idea what is going on.
<a href="https://jpanther.github.io/congo/docs/installation/">https://jpanther.github.io/congo/docs/installation/</a> - An end to end guide from the theme&rsquo;s creator. Really this should cover most everything.
<a href="https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages">https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages</a> - Important information using GitHub Pages (which is what we will be doing)
<a href="https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site">https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site</a> - Important information on DNS for your domain to point it to GitHub Pages.
<a href="https://github.com/CodeOnRye/codeonrye.github.io">https://github.com/CodeOnRye/codeonrye.github.io</a> - Lastly, here is all the code running this site, so you could always start from there!</p>
<h3 id="schema">Schema</h3>
<p>First let&rsquo;s lay out all the pieces to best understand how this will work.</p>
<div class="mermaid">
graph TD
A[Repository Markdown Files] -->|Git Commit| B(GitHub)
B --> C{GitHub Actions}
C -->|Watches Main Branch| B
C --> F(Runs Hugo)
F -->|Processes MD to HTML| G(Pushed to gh_pages Branch)
D[Domain Registrar] -->|A Record| E(github.io)
G --> B
E --> G
subgraph Local
A
end
subgraph GitHub
B
C
F
G
end
subgraph DNS
D
E
end
</div>

<p>As shown, wherever you may be sourcing your markdown files, once they are pushed to GitHub then the magic starts happening. A GitHub Action will run on commits, running a hugo service to generate the html files and pushing them back to a specific branch, <code>gh_pages</code>. This branch is configured in the repository to be the source for the github site. On the other end, the DNS registrar has an <code>A Record</code> set so that it redirects to the GitHub Provided site. Once it is all set up, then all you need to do is update your Hugo files and push!</p>
<h2 id="github">GitHub</h2>
<p>You should start by setting up your GitHub repository and various settings as needed. This will help prepare for the automations and configurations later.</p>
<h3 id="create-your-repo">Create Your Repo</h3>
<p>One thing that got me, was that since we want to point to use the GitHub Pages functionality, we have to name the repository <code>YOURUSERNAME.github.io</code>. There may be another way to do this, but this is what I did.</p>
<p>Once created, go ahead and clone it down to your local environment.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git clone git@github.com:YOURUSERNAME/YOURUSERNAME.github.io.git
</span></span></code></pre></div><h2 id="hugo">Hugo</h2>
<p>First things first. You need to get Hugo up and running and become familiar enough with it. Use the linked guide <a href="https://gohugo.io/getting-started/quick-start/">above</a> to just try setting up a quick one locally. Once you get a feel comfortable with how it works with markdown files, then we can initialize it in the repository file we created in previous step.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">cd</span> /PATH/TO/YOURUSERNAME.github.io 
</span></span><span class="line"><span class="cl">hugo new site ./
</span></span></code></pre></div><h3 id="congo-theme">Congo Theme</h3>
<p>Next we will install and set up the theme. As all themes are different, this may not apply to others, so take that with a grain of salt if you are deviating here.</p>
<p>We need to first pull down the theme, to do this we will use the <code>git submodule</code> function. This keeps our tooling from becoming more complex.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">cd</span> /PATH/TO/YOURUSERNAME.github.io
</span></span><span class="line"><span class="cl">git init
</span></span><span class="line"><span class="cl">git submodule add -b stable https://github.com/jpanther/congo.git themes/congo
</span></span></code></pre></div><p>Next we will need to configure Hugo to use this Theme. The <a href="https://jpanther.github.io/congo/docs/installation/">theme&rsquo;s guide</a> is best to follow, as it will be more up-to-date. But to boil it down you need to copy the <code>/PATH/TO/YOURUSERNAME.github.io/theme/congo/config/_default</code> folder to <code>/PATH/TO/YOURUSERNAME.github.io/</code>. Now we customize the files as needed.</p>
<ul>
<li><strong>config.toml</strong> - Your main config file for Hugo where you set your website name, theme (congo) and other settings</li>
<li><strong>languages.en.toml</strong> - Sets your defaults for the site when set in the <code>en</code> language.</li>
<li><strong>markup.toml</strong> - Used for the theme, I have not touched this.</li>
<li><strong>menus.en.toml</strong> - Like languages.en.toml, this is the configuration for the menus when set to the <code>en</code> language.</li>
<li><strong>module.toml</strong> - Used for the theme, I have not touched this.</li>
<li><strong>params.toml</strong> - Allows you to further configure the theme.</li>
</ul>
<h4 id="making-a-post">Making a Post</h4>
<p>With this theme, I&rsquo;ve decided to set up my posts within their own folders, rather than all under the <code>./content/</code> folder. This seems to work best for this theme. So a post will look roughly like this</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">content/posts/building-my-site
</span></span><span class="line"><span class="cl">├── img
</span></span><span class="line"><span class="cl">│   ├── gh_actions_permissions.png
</span></span><span class="line"><span class="cl">│   ├── gh_pages_config.png
</span></span><span class="line"><span class="cl">│   └── gh_workflow_permissions.png
</span></span><span class="line"><span class="cl">└── index.md
</span></span></code></pre></div><p>Notice that the markdown file is named <code>index.md</code> and not the name of the post, that is reserved for the folder name. More examples can be found <a href="https://jpanther.github.io/congo/docs/content-examples/">here</a></p>
<h2 id="github-actions">GitHub Actions</h2>
<p>Lastly, once you have a nice site configured, and you&rsquo;ve tested it out locally with the <code>hugo server -D</code> we can start working on getting the automations going to publish this online.</p>
<h4 id="github-actions-workflow-file">GitHub Actions Workflow File</h4>
<p>You can leverage the default one provided by the theme <a href="https://jpanther.github.io/congo/docs/hosting-deployment/#github-pages">here</a>. This should work out of the box for you. Once you add it to your <code>/PATH/TO/YOURUSERNAME.github.io/.github/workflows/</code> folder and push it to GitHub you will need to verify it runs successfully.</p>
<p>One thing to note here, if you are going to use a custom domain you will want to add a run command into your YAML file to recreate that file like below:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-YAML" data-lang="YAML"><span class="line"><span class="cl"><span class="nn">...</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">Build</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">run</span><span class="p">:</span><span class="w"> </span><span class="l">hugo --minify</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">GH CNAME</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">run</span><span class="p">:</span><span class="w"> </span><span class="l">echo &#34;YOURDOMAIN.COM&#34; &gt; ./public/CNAME</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">Deploy</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nn">...</span><span class="w">
</span></span></span></code></pre></div><p>On GitHub you can navigate to your repository, and then the Actions Page to verify if it is running properly. If not you will want to check the follow settings.</p>
<h4 id="github-repository-settings">GitHub Repository Settings</h4>
<p>Make sure your settings are as follows:</p>
<p><img src="/posts/building-my-site/img/gh_actions_permissions.png" alt="GitHub Actions Permissions"></p>
<p><img src="/posts/building-my-site/img/gh_workflow_permissions.png" alt="GitHub Workflow Permissions"></p>
<p>Those should fix it to allow the actions to properly run. Once they do you will now have a <code>gh_pages</code> branch that mirror&rsquo;s the contents of the <code>public</code> folder that Hugo generates when running the hugo commands.</p>
<h2 id="dns">DNS</h2>
<p>Last but not least, we will now make the site available online! First we finish configuring GitHub, test and then point our domain to it.</p>
<h3 id="github-pages">GitHub Pages</h3>
<p>Under the repository&rsquo;s settings for Pages you will want to configure it as follows</p>
<p><img src="/posts/building-my-site/img/gh_pages_config.png" alt="GitHub Pages Configuration"></p>
<p>A few things to note, you can only enable SSL enforcement once your custom domain is configured (next step). But this will be fine for now to test. You should now be able to got to YOURUSERNAME.github.io and see your site! If you do then finish configurations on your domain registrar.</p>
<h3 id="domain-dns">Domain DNS</h3>
<p>First you should go to your account settings, then under the Pages option on the left sidebar, add your domain there. You will need to verify the domain with a <code>TXT Record </code>.</p>
<p>Per the <a href="https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site">details</a> from GitHub you will want to add the follow records to your Domain&rsquo;s DNS provider.</p>
<p><code>A Record</code></p>
<pre tabindex="0"><code>185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
</code></pre><p><code>AAAA Record</code></p>
<pre tabindex="0"><code>2606:50c0:8000::153
2606:50c0:8001::153
2606:50c0:8002::153
2606:50c0:8003::153
</code></pre><p><code>CNAME Record</code></p>
<pre tabindex="0"><code>www.YOURDOMAIN.com
</code></pre><p>I would avoid using the Alias, as that would block you from using DNSSEC.</p>
<p>At this point you should now be able to go to yourdomain.com and load your github site. If needed, go back to your settings and enable SSL.</p>
<h1 id="conclusion">Conclusion</h1>
<p>This rough guide is how I have mine set up with tips on how you can do it yourself. Again, it isn&rsquo;t meant to be an end-to-end guide. But over time I will probably update this guide to better clarify or expand items.</p>
]]></content:encoded></item><item><title>Hello World</title><link>https://ryanpmeyer.eu/posts/hello-world/</link><pubDate>Thu, 25 Jan 2024 13:23:47 +0100</pubDate><atom:updated>2024-01-25T13:23:47+01:00</atom:updated><author>hello@ryanpmeyer.eu (Ryan P. Meyer)</author><guid isPermaLink="true">https://ryanpmeyer.eu/posts/hello-world/</guid><category>posts</category><category>blog</category><category>hugo</category><category>website</category><description>Hello World.</description><content:encoded><![CDATA[<h2 id="introduction">Introduction</h2>
<p>The classic initialization of any project always ends up beginning with those words. I&rsquo;ve decided to take another shot at curating a digital space for myself. In the past I have tried to create websites using various frameworks and tools, but they always became more work than I felt they were worth. Looking back, I&rsquo;ve always tried to create something more complex than I needed. Hoping to grow into it, rather than grow with it. But I really hadn&rsquo;t hammered out the foundation of what I actually needed, and focused on what I wanted. Taking a step back I wanted to focus on what I needed from this projected. With hopes that the choices will be flexible enough to not require a lot of work to expand later or maintain.</p>
<p>Those needs have boiled down to the following.</p>
<h3 id="defining-my-goals">Defining My Goals</h3>
<p>In short, answering this was the hardest part. Simply &ldquo;a website&rdquo; is too broad of an answer; I needed to really think about what content I wanted, how I wanted to present it, how it should be maintained and what I wanted to get out of my time with the project. So lets start with defining the content.</p>
<p>The content will be my own musings, or ramblings for some. I don&rsquo;t want to lock myself into a certain type of topic or subject matter. So a semi-professional blog and portfolio I think will strike a balance. That means the site must be able to provide an easy way for me to both create that content and present it.</p>
<p>Presentation of the website should be clean and modern. Next I need to be able to customize it once I start having a more fully formed idea of the content. So again, it needs to be a flexible solution that can be changed without much headache.</p>
<p>And headaches is what I have gotten in the past with frameworks like wordpress or other blog focused solutions. They did so much more than I needed at the time, that I would get stuck in the weeds. I&rsquo;d enable features I didn&rsquo;t need, or maybe even fully understand. This solution needed to be simple, but extendable when I needed it to be.</p>
<p>Lastly, in the end what I want out of this project is a website I can call my own. A place that is easy for me to keep up to date both on content and patches. It had to work for me, rather than me work for it. Which has lead me to go with this set up.</p>
<h2 id="the-project">The Project</h2>
<p>This project is created with as minimal tools as possible; Hugo as the website generator and will be served by GitHub.</p>
<ul>
<li>Hugo - This is the website framework tooling solution, a static website generator</li>
<li>Github/Gitlab Pages Hosted - Since I am setting up a static website, that means no backends - and not servers - needed! So why not use Github or GitLab&rsquo;s pages and actions to handle the hosting and publishing?</li>
</ul>
<h3 id="openness">Openness</h3>
<p>I am always a big fan of Free and Open Source Software, FOSS for short. So where I can, I try my best to leverage systems and tools for that. Granted there comes a time where, well, time isn&rsquo;t as available. Its the well-known adage of FOSS not being free in the cost of time. However, if the system is simple enough and the data portable enough, then it might very well be worth that time and effort to setup and maintain.</p>
<h3 id="the-framework">The Framework</h3>
<p>Needing the site to be maintainable, is key to keeping the project, and thus the site, up and running. So, where I could, I would remove systems that needed my attention to work or stay in good working order. Too many website frameworks required lots of backends, databases and the like, as well as had features I simply didn&rsquo;t care for. I just needed something that was dead simple to set up, run and update with new content when I felt like it.</p>
<h3 id="the-platform">The Platform</h3>
<p>In the past I have always set up servers, installed the needed services and then install any applications to get a website up and running. But each of those items introduces complexity and friction. I need to make sure the services are up to date. The database needs to be backed up properly. How do I migrate to a new server if needed, and so on. With the static aspect of Hugo I can avoid this because, in the end, the website is just a bunch of files. And those files are already backed up in Github which is also &ldquo;publishing them.&rdquo; Overall reducing complexity to make it easier to maintain and use, which is exactly what I want.</p>
<h2 id="tldr">TL;DR</h2>
<p>In short, I have set up a Hugo based static website that I can use Github Pages and Actions to host and manage! I will probably also post a guide incase someone wants to try themselves!</p>
]]></content:encoded></item></channel></rss>