<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jake Hayes</title>
    <description>The latest articles on DEV Community by Jake Hayes (@thejayhaykid).</description>
    <link>https://dev.to/thejayhaykid</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F291404%2F3019251b-f474-4f5f-9a2b-45e1b88e9a71.jpeg</url>
      <title>DEV Community: Jake Hayes</title>
      <link>https://dev.to/thejayhaykid</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thejayhaykid"/>
    <language>en</language>
    <item>
      <title>I am not renewing my GitHub Copilot Subscription</title>
      <dc:creator>Jake Hayes</dc:creator>
      <pubDate>Mon, 03 Jun 2024 00:00:00 +0000</pubDate>
      <link>https://dev.to/thejayhaykid/i-am-not-renewing-my-github-copilot-subscription-23n7</link>
      <guid>https://dev.to/thejayhaykid/i-am-not-renewing-my-github-copilot-subscription-23n7</guid>
      <description>&lt;p&gt;&lt;em&gt;I honestly tried to ironically have Microsoft Copilot make the hero image for this post. But they were all terrible so I gave up. Credit &lt;a href="https://unsplash.com/@siderius_creativ"&gt;Gerard Siderius on Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I paid for an entire year of personal access to GitHub Copilot. About a month before my subscription ended, I asked myself if I was getting the value from it that I was hoping for. The answer, obviously, was no. So I wanted to explain some of my reasons, some of my hope, and why I am just using free LLM's and old-fashioned Googling again.&lt;/p&gt;

&lt;h2&gt;
  
  
  It's good at the basics, mostly
&lt;/h2&gt;

&lt;p&gt;All the marketing videos are not complete lies. If you are looking for a more advanced auto-complete, this is perfect. The problem is that I don't want to pay $100 per year for auto-complete. But when I'm trying to make a simple button in React or typing in some obvious lists with a key/value of an object, it does a good job of recognizing that and saving me the keystrokes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bad at specific questions
&lt;/h3&gt;

&lt;p&gt;I'm not the world's most advanced engineer. But I can handle pretty much all of the basic stuff. Especially if it's something in my technical wheelhouse like React or TypeScript. So I am not asking Copilot a lot of questions about the basics. If I am asking Copilot a question using its chat feature, it's usually a more advanced topic. Something that is tricky for me. The problem I have run into is that, more often than not, Copilot does not have a clue on how to answer me. And what I consider an even bigger problem is that it doesn't tell me that it doesn't know; it gives me the most ridiculous answer with as much confidence as it can muster.&lt;/p&gt;

&lt;p&gt;Over the last year, though, I have become so pessimistic about using it that I just stopped asking Copilot questions. I would instead try to brute force it myself or &lt;em&gt;cringe&lt;/em&gt; read the documentation. 😱😱&lt;/p&gt;

&lt;p&gt;Both of those methods turned out to be faster than Copilot because of...&lt;/p&gt;

&lt;h3&gt;
  
  
  Rabbit holes
&lt;/h3&gt;

&lt;p&gt;I don't want to add a bunch of packages to my already bloated React project. But Copilot is absolutely insistent on add more packages first. Then I have to actually find out what the package it's recommending is, are there better packages that do the same thing, down down down...&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Absolutely! All you need to do is install [package A], [package B], and [package C]. Then, adjust your dev server (and, of course, your build pipeline 🤭) and then add the following block of code: &amp;gt; &amp;gt; &lt;code&gt;js &amp;gt; // …. &amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Except Copilot didn't tell me the package I had mentioned by name could do what I asked without any other changes. Read the docs, kids.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Churn
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.gitclear.com/coding_on_copilot_data_shows_ais_downward_pressure_on_code_quality"&gt;I'm apparently not the only person who noticed this.&lt;/a&gt; But I have had to update a lot more of my own code after starting to use Copilot.&lt;/p&gt;

&lt;h4&gt;
  
  
  Deleting so much code
&lt;/h4&gt;

&lt;p&gt;I would also, especially at the beginning before becoming disillusioned, blindly trust Copilot and just press  any time a suggestion popped up without reading it. After painfully learning the lesson of not blindly tabbing, I got to experience a new pain in my coding workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write some code, get in the groove, and a Copilot suggestion pops up -&amp;gt;&lt;/li&gt;
&lt;li&gt;Stop my coding flow; switch my brain to reading mode while slamming on the brakes, effectively killing my flow -&amp;gt;&lt;/li&gt;
&lt;li&gt;Realize the Copilot suggestion is kind of irrelevant to what I am trying to do; it's the most mid-engineer I've ever met in my life (which is kind of the point) -&amp;gt;&lt;/li&gt;
&lt;li&gt;Try my best to get back into the flow as quickly as possible -&amp;gt;&lt;/li&gt;
&lt;li&gt;Repeat -&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That workflow was not ideal for me or my ADHD, as every time I blast through my flow state barriers, who knows what I'll be doing 20 minutes later when I realize my office is clean but my code is still unwritten.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Dreaded Switch to NeoVim
&lt;/h2&gt;

&lt;p&gt;But don't worry, I use &lt;a href="https://astronvim.com"&gt;AstroNvim&lt;/a&gt; just so I can piss everyone off. It was a mistake to turn on Vim bindings in VSCode, because then I got good at them. And when I got the muscle memory, I felt like VSCode was just a touch too slow. And then I tried it in NeoVim and realized how slow VSCode is. Then I had to choose between Copilot Chat and the Copilot NVim extension, which is just glorified autocomplete. And I realized I would rather have NVim than Copilot chat.&lt;/p&gt;

&lt;p&gt;This was actually one of the catalysts for me doing the self reflection on if I should renew Copilot at all. It turns out I didn't really miss it. I was faster; I got into a flow state more frequently. My code was more understandable to me and to other people.&lt;/p&gt;

&lt;h2&gt;
  
  
  I'm Googling again
&lt;/h2&gt;

&lt;p&gt;This feels weird to say, but is this considered "old school" now? I am searching for things on Google again instead of copying and pasting errors into an LLM. And you know what? I think I'm faster at it. A big part of the problem is that error messages usually stink or are irrelevant, so LLM's try to rely heavily on what the error message says is wrong. And usually it's something unrelated, but the Stack Overflow answer for that error message knows that and can point you in the right direction a lot faster.&lt;/p&gt;

&lt;p&gt;Don't get me wrong, I'll check with an LLM sometimes, especially if the first few search results are not what I need. But for all the reasons outlined above, there are a lot of times when it is just as unhelpful.&lt;/p&gt;

&lt;h2&gt;
  
  
  I hope it doesn't stay like this
&lt;/h2&gt;

&lt;p&gt;I have hope for our AI overlord's future. When Copilot originally came out, and for the first few months I started using it, I thought I wouldn't have a job soon. But then there weren't really great improvements. And I started to realize how bad most of its suggestions are, and the AI sheen started to wear off. Then I had the feeling that it was actually getting worse. Then I saw other people &lt;a href="https://youtu.be/dDUC-LqVrPU?si=vfxXQXTYAWBBs0BG"&gt;talk about it getting worse too&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;All of that made me really pessimistic about AI, and I thought it would turn out to be like Web3, crypto, NFT's, and GameStop stock, just another hype thing that has VCs throwing money at it, bankrupting any software engineer foolish enough to try to make an AI-based startup that overpromises the world. (Have you seen the first episode of Silicon Valley?) But now I don't feel that is right either.&lt;/p&gt;

&lt;p&gt;At this point, I have swung so hard each way that I have pretty much just mellowed out. AI will be an impressive tool for anyone to use. Creating AI is tough, but you can build on the shoulders of giants and make impressive strides. It might fade just due to the costs of training; it might explode again; I'm not an oracle. But I personally am just so burned out on it that I'm just checking out for a little while. I will let it improve at whatever rate it does, and then check back in later.&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>githubcopilot</category>
      <category>engineering</category>
    </item>
    <item>
      <title>How have you found paid writing gigs?</title>
      <dc:creator>Jake Hayes</dc:creator>
      <pubDate>Fri, 29 Mar 2024 17:31:00 +0000</pubDate>
      <link>https://dev.to/thejayhaykid/how-have-you-found-paid-writing-gigs-3bc6</link>
      <guid>https://dev.to/thejayhaykid/how-have-you-found-paid-writing-gigs-3bc6</guid>
      <description></description>
      <category>writing</category>
      <category>freelance</category>
      <category>sidehustle</category>
    </item>
    <item>
      <title>Adding Environment Variables to Your Webpack Project</title>
      <dc:creator>Jake Hayes</dc:creator>
      <pubDate>Thu, 28 Mar 2024 00:00:00 +0000</pubDate>
      <link>https://dev.to/thejayhaykid/adding-environment-variables-to-your-webpack-project-2k4a</link>
      <guid>https://dev.to/thejayhaykid/adding-environment-variables-to-your-webpack-project-2k4a</guid>
      <description>&lt;p&gt;Adding environment variables to your Webpack project is simple and easy. All you need to do is add &lt;code&gt;dotenv-webpack&lt;/code&gt; into the dev dependencies in your &lt;code&gt;package.json&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pnpm i -D dotenv-webpack

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then in the &lt;code&gt;webpack.config.js&lt;/code&gt;, add this to the plugins:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
 plugins: [
   new Dotenv({
  path: `./.env.${process.env.NODE_ENV}`,
   }),
 ],
};

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this setup, it will be easiest to set the &lt;code&gt;NODE_ENV&lt;/code&gt; as part of your &lt;code&gt;scripts&lt;/code&gt; in your &lt;code&gt;package.json&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
 "scripts": {
  "dev": "NODE_ENV=local ...",
  "build": "NODE_ENV=release ...",
  // ...
 },
 // ...
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you can create files based on the path provided &lt;code&gt;./.env.local&lt;/code&gt; and &lt;code&gt;./.env.release&lt;/code&gt; (you'll need to match yours up with whatever path and file name you specify in Webpack). Then the .env files are formatted the same as you would in any other project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;KEY=VALUE

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then in javascript all you need to access the value is to look at the &lt;code&gt;process.env&lt;/code&gt; object like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const value = process.env.KEY;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>webpack</category>
      <category>webdev</category>
      <category>environment</category>
    </item>
    <item>
      <title>To Be An Engineer is to be Able to Work in Any Tech Stack</title>
      <dc:creator>Jake Hayes</dc:creator>
      <pubDate>Mon, 25 Mar 2024 00:00:00 +0000</pubDate>
      <link>https://dev.to/thejayhaykid/to-be-an-engineer-is-to-be-able-to-work-in-any-tech-stack-544g</link>
      <guid>https://dev.to/thejayhaykid/to-be-an-engineer-is-to-be-able-to-work-in-any-tech-stack-544g</guid>
      <description>&lt;p&gt;I have been getting ever closer to being a software engineer for a full decade now. And there's one thing about the near-infinite stream of recruiters that has been bothering me for years. The question of 'have you ever worked in X technology before?' and the immediate disqualification if I haven't worked many years in the entire stack.&lt;/p&gt;

&lt;p&gt;I completely understand the instance where I have not worked in keystone technology and they are looking for me to lead a team with the best practices. I am referring to the instance where the upcoming tech stack is 'backend in A, frontend in B, using the event streaming/queueing system C, hosted on cloud service D, and database E', and I have experience in all those except cloud service D. So, I am not a good fit for the role.&lt;/p&gt;

&lt;p&gt;I am a software engineer. There are too many technologies out there in the wild for me to have used every single one of them. My strength is the ability to learn things I am unfamiliar with on the fly.&lt;/p&gt;

&lt;h2&gt;
  
  
  I do love some tea 🍵
&lt;/h2&gt;

&lt;p&gt;I strongly believe in the concept of the 'T-Shaped' developer. Throughout my career, I have worked in a wide array of backend tech stacks, and rarely have I done the same one twice. Yet, I have worked in React as the frontend tech for almost all those. So my depth of knowledge comes with React on the frontend, but I still have a breadth of knowledge in many backend stacks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Constantly learning and being able to learn are foundational to this career.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Time in Consulting has Trained Me 🏃‍♂️
&lt;/h2&gt;

&lt;p&gt;As of this writing, I have spent half my professional career as a consultant. The biggest difference I have personally experienced between the two is while consulting, multiple times I have been asked if I have ever used Technology X. And when the answer to that is no, I need to have a very strong foundation in it within a week. This happened with Java Spring Boot, this happened with Kafka, heck, this happened with COBOL.&lt;/p&gt;

&lt;p&gt;When that happens there's only so many things you have time for. You don't have time to whine or whinge or complain about how you don't like something. You master the skill of getting your feet under you and trying to get a passing knowledge of &lt;a href="https://en.wikipedia.org/wiki/Pareto_principle"&gt;the most important 20%&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  You get better at this with time 🕰️
&lt;/h2&gt;

&lt;p&gt;Most of the highly used, enterprise level software languages are &lt;a href="https://en.wikipedia.org/wiki/C_(programming_language)"&gt;C based&lt;/a&gt;. That makes picking up a new C based language that much faster for every one. There are common patterns and principles in the world of software that you see across systems and technologies that make it easier to learn new things as you go. Your brain recognizes those and can help you speed up over time.&lt;/p&gt;

&lt;p&gt;Learning is a skill by itself. The more you learn, and figure out what works best for you, the better you get at learning. As with every other skill, your brain can make shortcuts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Being an Engineer is about more than being a 'code monkey' to borrow a phrase from my college professor. Even the worst of the current LLM's can make a React App. It's about more than that, it's about translating half-baked, flawed requirements from someone in the business into actual usable software. Don't just sling code around, be an engineer.&lt;/p&gt;

</description>
      <category>engineering</category>
      <category>learning</category>
    </item>
    <item>
      <title>Should I Utilize a Microfrontend Architecture?</title>
      <dc:creator>Jake Hayes</dc:creator>
      <pubDate>Fri, 01 Mar 2024 00:00:00 +0000</pubDate>
      <link>https://dev.to/thejayhaykid/should-i-utilize-a-microfrontend-architecture-1900</link>
      <guid>https://dev.to/thejayhaykid/should-i-utilize-a-microfrontend-architecture-1900</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;What is it? How do I use it? Should I even use it? Let's find out.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are many different ways to structure and plan out any software that you build. Some ways are better than others, and many times it is problem-specific as to which one is best.&lt;/p&gt;

&lt;p&gt;One of those options has come to be known as microfrontend architecture, and that’s the one we are going to focus on.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is microfrontend architecture?
&lt;/h2&gt;

&lt;p&gt;Microfrontend architecture is very much so, just like it sounds. Much like a &lt;a href="https://youtu.be/y8OnoxKotPQ?si=QoeIQy38pYXYEkYh"&gt;micro-service backend architecture&lt;/a&gt;, it breaks up the application into smaller, more manageable codebases. Allowing for loosely coupled microfrontends makes them easier and safer to deploy. Microfrontends can be split up by the paths on the same domain or even smaller sections to have multiple microfrontends on the same page.&lt;/p&gt;

&lt;h2&gt;
  
  
  What options are available to implement it?
&lt;/h2&gt;

&lt;p&gt;There are &lt;em&gt;technically&lt;/em&gt; four options available.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://single-spa.js.org"&gt;Single-Spa&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://webpack.js.org/concepts/module-federation/"&gt;Webpack 5 Federated Modules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules"&gt;Web modules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/systemjs/systemjs"&gt;SystemJS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, Single-Spa does use SystemJS under the hood, if you are going to count that as a sub-option. I am partial to Single-Spa as I am *&lt;em&gt;disclaimer&lt;/em&gt;* an active maintainer on the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the benefits of implementing it?
&lt;/h2&gt;

&lt;p&gt;This separation has many advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Allowing separate teams to control their deployment process&lt;/li&gt;
&lt;li&gt;Deploying independently&lt;/li&gt;
&lt;li&gt;If one application goes down, it doesn't mean the entire web app is down&lt;/li&gt;
&lt;li&gt;It is built in lazy loading and application chunking. You only load the apps that you use, and the final bundle is already split up into smaller chunks, split up by app&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What are the downsides of implementing it?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Everything can feel fragmented, it sometimes feels abstract how the code interacts with other microfrontends&lt;/li&gt;
&lt;li&gt;It requires a lot of forethought and planning. You'll want to at least start with a strategy for what constitutes an app, a parcel (single-spa-specific terminology), or a utility. This can change over time, but you should start somewhere.&lt;/li&gt;
&lt;li&gt;If you have to introduce a breaking change to a highly used utility, you cannot do a slow rollout of that change across all of your different microfrontends. Once it's live, it's live, and everything that uses it needs to be prepared to handle that.

&lt;ul&gt;
&lt;li&gt;This is why planning and forethought are important. This is only necessary when the API surface between microfrontends changes. If the contract is still in tact, this problem does not come into play.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I am a firm believer in there being &lt;a href="https://en.wikipedia.org/wiki/No_Silver_Bullet"&gt;No Software Silver Bullet&lt;/a&gt;, and microfrontends are no different. It is not a one-size-fits-all solution; there are definite trade-offs depending on what you are looking for.&lt;/p&gt;

&lt;p&gt;However, there are real problems out there in the world that microfrontends are a legitamate solution to. I have used it in an enterprise production environment and have been pleased with the flexibility and advantages that it offers.&lt;/p&gt;

&lt;p&gt;Are you interested in using a microfrontend architecture? Are you already using one? Do you have any other questions for me or potential further articles that you think I should write? Let me know below!&lt;/p&gt;

</description>
      <category>singlespa</category>
      <category>architecture</category>
      <category>microfrontends</category>
    </item>
    <item>
      <title>My Goals for 2024</title>
      <dc:creator>Jake Hayes</dc:creator>
      <pubDate>Mon, 01 Jan 2024 21:17:24 +0000</pubDate>
      <link>https://dev.to/thejayhaykid/my-goals-for-2024-1kd0</link>
      <guid>https://dev.to/thejayhaykid/my-goals-for-2024-1kd0</guid>
      <description>&lt;p&gt;This article was originally published on &lt;a href="https://www.jakehayes.net/articles/2024-goals"&gt;my blog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have spent a significant amount of time over the last month considering what my goals for the year should be. One thing that continued to come to mind was to &lt;a href="https://twitter.com/swyx/status/1009174159690264579"&gt;Learn in public&lt;/a&gt; (Thanks to Kent C. Dodds for introducing me to that).&lt;/p&gt;

&lt;p&gt;For 2024 I am going dedicate myself to learning. I want to be better at my current job and prepared for anything that may come my way. Given the way that my brain works, I need to be very specific about where I apply my focus.&lt;/p&gt;

&lt;p&gt;That combined with having 2 young kids and a full-time job, I do not have enough free time to waste it wherever. I have decided to focus on three main areas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Write more articles
&lt;/h2&gt;

&lt;p&gt;Writing is a skill that I have let go dormant and atrophy for too long. It was a primary focus of mine as I grew up but has fallen away since I began my professional software journey. I am looking to get back into that.&lt;/p&gt;

&lt;p&gt;I already have curated a list of things I would like to write. But I would also take suggestions based on the interests of others. Would even be available for hire to write technical articles and how-to's.&lt;/p&gt;

&lt;p&gt;Preliminary list includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Architecting a Front-End Project Using Micro-Front-ends and Single-Spa&lt;/li&gt;
&lt;li&gt;Things I wish I knew starting as a software engineer&lt;/li&gt;
&lt;li&gt;How to update a header as you scroll through a list in react&lt;/li&gt;
&lt;li&gt;Building a Zip Code Outline Map from Scratch in React&lt;/li&gt;
&lt;li&gt;My Journey from College to Becoming a Technical Lead Engineer&lt;/li&gt;
&lt;li&gt;Many, many others&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Publish an app to an App Store
&lt;/h2&gt;

&lt;p&gt;I am a full-stack web developer specializing in React by trade. I have always wanted to learn native app development as something new. I've done a fair amount of preliminary research and I know that I am going to try both &lt;a href="https://developer.apple.com/xcode/swiftui/"&gt;SwiftUI&lt;/a&gt; and &lt;a href="https://flutter.dev"&gt;Flutter&lt;/a&gt;. SwiftUI fascinates me in its construction. Also, I want to test Flutters 'One codebase, native apps on iOS, Android, Windows, macOS, and Web' assertions.&lt;/p&gt;

&lt;p&gt;I do not have a plan for a specific app to make yet. But that is one of the constant background processes in my brain trying to come up with ideas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deep dive and learn about large-scale software architecture
&lt;/h2&gt;

&lt;p&gt;Last year, I read &lt;a href="https://www.oreilly.com/library/view/the-pragmatic-programmer/9780135956977/"&gt;The Pragmatic Programmer&lt;/a&gt; for the first time. This year, I have &lt;a href="https://www.oreilly.com/library/view/clean-code-a/9780136083238/"&gt;Clean Code&lt;/a&gt; and &lt;a href="https://www.oreilly.com/library/view/clean-architecture-a/9780134494272/"&gt;Clean Architecture&lt;/a&gt; near the top of my "to read" pile.&lt;/p&gt;

&lt;p&gt;Others in that pile include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.oreilly.com/library/view/head-first-design/0596007124/"&gt;Head First Design Patterns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.oreilly.com/library/view/high-performance-javascript/9781449382308/"&gt;High Performance JavaScript: Build Faster Web Application Interfaces&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.oreilly.com/library/view/javascript-patterns/9781449399115/"&gt;JavaScript Patterns: Build Better Applications with Coding and Design Patterns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.oreilly.com/library/view/hackers-painters/0596006624/"&gt;Hackers &amp;amp; Painters: Big Ideas from the Computer Age&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.oreilly.com/library/view/football-analytics-with/9781492099611/"&gt;Football Analytics with Python &amp;amp; R: Learning Data Science Through the Lens of Sports&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;If you're interested in my non-tech related reading list, let me know&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;If you made it this far, cheers to you and I hope you have a wonderful 2024 ahead of you! Feel free to reach out with questions or comments!&lt;/p&gt;

</description>
      <category>goals</category>
      <category>devresolutions2024</category>
      <category>learning</category>
    </item>
    <item>
      <title>How do you choose a tech stack for a new side-project?</title>
      <dc:creator>Jake Hayes</dc:creator>
      <pubDate>Wed, 27 Sep 2023 12:21:54 +0000</pubDate>
      <link>https://dev.to/thejayhaykid/how-do-you-choose-a-tech-stack-for-a-new-side-project-16f3</link>
      <guid>https://dev.to/thejayhaykid/how-do-you-choose-a-tech-stack-for-a-new-side-project-16f3</guid>
      <description>&lt;p&gt;I'm torn between a few and trying to balance the speed of development with the desire to learn something new. Another issue is how can I tell if the framework I want to use is powerful enough to support what I'm trying to do. Some of the frameworks I'm interested in are on the newer side and might not be ready for prime time.&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Paypr</title>
      <dc:creator>Jake Hayes</dc:creator>
      <pubDate>Tue, 23 Mar 2021 00:00:00 +0000</pubDate>
      <link>https://dev.to/thejayhaykid/paypr-1bid</link>
      <guid>https://dev.to/thejayhaykid/paypr-1bid</guid>
      <description>&lt;h1&gt;
  
  
  Paypr
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;This is an Open Source project, you can find the repo &lt;a href="https://github.com/thejayhaykid/paypr"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Have a folder of images that you have your computer shuffle through as your wallpapers? Have some images you want to add that aren’t quite the right size or aspect ratio? Have you put pictures in your Chromecast Ambient mode folder and noticed that images that don’t quite fit have a cool affect so that it fits on the screen and you can see the whole image?&lt;/p&gt;

&lt;p&gt;Well this project aims to bring that simple thing that the Chromecast Ambient mode does to any image. If you look at the code, you will see that it is very simple. All it does it take the image, copy it stretch it to fit whatever resolution the user decides (with FHD 1920x1080 being the default), blurs that and then centers the original image, shrinking it to fit if necessary. That’s it. Now you have a new picture that can be used as a wallpaper and can be the exact size of your screen!&lt;/p&gt;

&lt;p&gt;I used to do this by hand, but thought that I could automate it so I did. I just believe having the image blurred looks better than having whatever the windows color is on the sides when the image doesn’t fit.&lt;/p&gt;

&lt;p&gt;Give it a try for yourself! Or fork the code and submit a PR if you can think of a helpful feature!&lt;/p&gt;




&lt;h2&gt;
  
  
  Before
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dGvV4e5p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.jakehayes.net/static/28e4dbebd3ce9053a03267c7fd4fb49a/47311/paypr-before.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dGvV4e5p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.jakehayes.net/static/28e4dbebd3ce9053a03267c7fd4fb49a/47311/paypr-before.jpg" alt="Before" width="800" height="1422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  After
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9991-ZAS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.jakehayes.net/static/70ff85477a356ade0fd12f9d2afa649b/29114/paypr-after.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9991-ZAS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.jakehayes.net/static/70ff85477a356ade0fd12f9d2afa649b/29114/paypr-after.png" alt="After" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
