<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blogs on Jeremy's Programming Blog</title><link>https://www.jeremymorgan.com/blog/</link><description>Recent content in Blogs on Jeremy's Programming Blog</description><generator>Hugo</generator><language>en-us</language><copyright>Jeremy Morgan</copyright><lastBuildDate>Sat, 20 Sep 2025 23:58:10 -0700</lastBuildDate><atom:link href="https://www.jeremymorgan.com/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Mac Studio M2 Review</title><link>https://www.jeremymorgan.com/blog/tech/mac-studio-review/</link><pubDate>Sat, 20 Sep 2025 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/tech/mac-studio-review/</guid><description>&lt;p>If you know me or are a reader of this blog, you know about my love/hate relationship with Apple products. I love how they work, hate the walled garden and the price tag.&lt;/p>
&lt;p>I bought a Mac laptop in 2003 that I loved, and I still own it. (Though it has Ubuntu on it now). I&amp;rsquo;ve had tons of Mac Minis through the years and loved them, and was &lt;a href="https://www.jeremymorgan.com/blog/tech/why-i-returned-mac-mini-m2/">disappointed by the last one&lt;/a>. I promptly returned it.&lt;/p></description></item><item><title>Postman POST/CON 2025 Highlights</title><link>https://www.jeremymorgan.com/blog/programming/postcon-2025-highlights/</link><pubDate>Tue, 10 Jun 2025 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/postcon-2025-highlights/</guid><description>&lt;p>I just returned from POST/CON 25, and I&amp;rsquo;m left with one big impression: Postman gets it.&lt;/p>
&lt;p>They get that we&amp;rsquo;re not just managing APIs. We&amp;rsquo;re building complex systems, and increasingly, those systems involve AI. And as AI technologies race ahead Postman is right there to help you keep up.&lt;/p>
&lt;p>I&amp;rsquo;ve been using Postman for years, and I was thrilled to be invited to POST/CON 2025 in Los Angeles. It was an amazing experience, and I want to share some of the highlights.&lt;/p></description></item><item><title>How to Install DeepSeek R1 on a Raspberry Pi</title><link>https://www.jeremymorgan.com/blog/generative-ai/deepseek-r1-raspberry-pi/</link><pubDate>Thu, 13 Feb 2025 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/deepseek-r1-raspberry-pi/</guid><description>&lt;p>DeepSeek R1 shook the Generative AI world, and everyone even remotely interested in AI rushed to try it out. It is a great model, IMO. As you may know, I love to run models locally, and since this is an open-source model, of course, I had to try it out. It works great on my Mac Studio and 4090 machines.&lt;/p>
&lt;p>But can it run on this? A silly little Raspberry Pi?&lt;/p></description></item><item><title>What Is Deepseek R1</title><link>https://www.jeremymorgan.com/blog/tech/what-is-deepseek-r1/</link><pubDate>Tue, 28 Jan 2025 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/tech/what-is-deepseek-r1/</guid><description>&lt;p>DeepSeek R1 is either a &amp;ldquo;massive revolution&amp;rdquo; for AI, or an overhyped mess. Which one is it?&lt;/p>
&lt;p>Here&amp;rsquo;s a quick rundown.&lt;/p>
&lt;p>&lt;img src="https://www.jeremymorgan.com/images/blog/tech/what-is-deepseek-r1/what-is-deepseek-r1-00.webp" alt="&amp;ldquo;What is DeepSeek R1&amp;rdquo;">&lt;/p>
&lt;p>DeepSeek R1, released on January 20, 2025, has created massive turbulence in tech. But the big story isn&amp;rsquo;t what the model can do, that&amp;rsquo;s only a small part of it. It&amp;rsquo;s how the model was built that has people talking. So much so that it has triggered a $600 billion market cap loss for Nvidia and been dubbed &amp;ldquo;&lt;a href="https://nymag.com/intelligencer/article/deepseek-r1-ai-panic-impact-commentary-analysis.html">AI&amp;rsquo;s Sputnik moment&lt;/a>&amp;rdquo; by prominent tech investor Marc Andreessen. [1]&lt;/p></description></item><item><title>NVIDIA Jetson Orin Nano Speed Test</title><link>https://www.jeremymorgan.com/blog/tech/nvidia-jetson-orin-nano-speed-test/</link><pubDate>Sun, 29 Dec 2024 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/tech/nvidia-jetson-orin-nano-speed-test/</guid><description>&lt;p>There&amp;rsquo;s been a lot of talk in social media about the new Jetson Orin Nano, and I&amp;rsquo;ve contributed my fair share. But what&amp;rsquo;s the performance really like? To find out, I ran &lt;a href="https://ollama.com">Ollama&lt;/a> and tested 20 different models, checking their speed. I used a prompt that would produce a long result, and I&amp;rsquo;ve listed the timings below.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Note:&lt;/strong> I have updated all these tests. They were originally run in 7W mode, these tests are in 25W mode, showing the full capabilities of the device.&lt;/p></description></item><item><title>NVIDIA Jetson Orin Nano Review</title><link>https://www.jeremymorgan.com/blog/tech/nvidia-jetson-orin-nano/</link><pubDate>Sat, 21 Dec 2024 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/tech/nvidia-jetson-orin-nano/</guid><description>&lt;p>Hello, friends! If you&amp;rsquo;re a reader of this blog you&amp;rsquo;ve probably heard about NVIDIA’s Jetson. It&amp;rsquo;s a great platform for prototyping apps and putting AI at the edge.&lt;/p>
&lt;p>I got lucky and got my hands on the newest, very affordable Jetson, the Jetson Orin Nano.&lt;/p>
&lt;p>Today, we’ll dive into everything from unboxing this little gem to testing its performance with AI models. Ready to explore what makes this device so cool? Let’s get started!&lt;/p></description></item><item><title>How to Install Stable Diffusion 3.5</title><link>https://www.jeremymorgan.com/blog/generative-ai/how-to-install-stable-diffusion-3-5/</link><pubDate>Fri, 25 Oct 2024 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/how-to-install-stable-diffusion-3-5/</guid><description>&lt;p>Hey there, fellow AI geeks. Ever wanted to create stunning AI-generated images on your local machine without relying on third-party services? You&amp;rsquo;re in luck! This is something we&amp;rsquo;ve done many times on this site, setting up &lt;a href="https://www.jeremymorgan.com/blog/generative-ai/stable-diffusion-ai-image-generator/">Stable Diffusion XL&lt;/a> and even &lt;a href="https://www.jeremymorgan.com/blog/generative-ai/how-to-make-ai-generated-videos/">generating AI videos with Stable Diffusion&lt;/a>. We will do it again today with the latest and greatest image generation software you can run on your machine.&lt;/p>
&lt;p>Stability AI just released &lt;a href="https://stability.ai/news/introducing-stable-diffusion-3-5">Stable Diffusion 3.5&lt;/a>, so of course, we have to check it out.&lt;/p></description></item><item><title>How to make ChatGPT Write Like Me</title><link>https://www.jeremymorgan.com/blog/generative-ai/hey-ai-write-like-me/</link><pubDate>Sun, 13 Oct 2024 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/hey-ai-write-like-me/</guid><description>&lt;p>When I write, I&amp;rsquo;m always looking for ways to make writing easier while still keeping my own style. I started an experiment not long ago to see if I could teach AI models to write effectively in my style.&lt;/p>
&lt;p>This piece will explain how I used my own blog posts as training data to make custom AI writing assistants. We&amp;rsquo;ll talk about the technical side of collecting material, the problems I ran into, and my first thoughts on the end result. You will learn about the pros and cons of personalized AI writing models, whether you are a writer who wants help from AI or a developer who wants to learn more about natural language processing.&lt;/p></description></item><item><title>How to run a Local LLM on Your Mac</title><link>https://www.jeremymorgan.com/blog/generative-ai/how-to-llm-mac/</link><pubDate>Mon, 30 Sep 2024 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/how-to-llm-mac/</guid><description>&lt;p>Hello AI enthusiasts! Want to run LLM (large language models) locally on your Mac? Here&amp;rsquo;s your guide! We&amp;rsquo;ll explore three powerful tools for running LLMs directly on your Mac without relying on cloud services or expensive subscriptions.&lt;/p>
&lt;p>Whether you are a beginner or an experienced developer, you&amp;rsquo;ll be up and running in no time. This is a great way to evaluate different open-source models or create a sandbox to write AI applications on your own machine.&lt;/p></description></item><item><title>Top Conversational AI Models</title><link>https://www.jeremymorgan.com/blog/generative-ai/top-conversational-ai-models/</link><pubDate>Thu, 29 Aug 2024 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/top-conversational-ai-models/</guid><description>&lt;p>Like you, I use Generative AI nearly every single day. One common request I get is when folks have wet their feet with ChatGPT and ask me &amp;ldquo;What else is out there?&amp;rdquo; I send them a list of links and a little blurb about the sites. I decided to share that list and insights with you.&lt;/p>
&lt;p>Bookmark this page because it will be updated frequently. I&amp;rsquo;ll also do this with some other tools I use (image generation, code generation, video, etc.).&lt;/p></description></item><item><title>How to Install Ollama with Open WebUI in Arch Linux</title><link>https://www.jeremymorgan.com/blog/generative-ai/how-to-install-ollama-web-ui-arch-linux/</link><pubDate>Mon, 24 Jun 2024 20:58:13 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/how-to-install-ollama-web-ui-arch-linux/</guid><description>&lt;p>If you&amp;rsquo;ve read my blog enough lately, you know I&amp;rsquo;m crazy about &lt;a href="https://www.ollama.com">Ollama&lt;/a>. It&amp;rsquo;s super easy and powerful. In fact, most people I know who play with Generative AI use it. Equally cool is the &lt;a href="https://github.com/open-webui/open-webui">Open WebUI&lt;/a>. You can attach it to Ollama (and other things) to work with large language models with an excellent, clean user interface. You can set up a nice little service right on your desktop, or, like in my case, put together a dedicated server for private development that doesn&amp;rsquo;t rack up API fees.&lt;/p></description></item><item><title>How to Run a Local LLM with Ubuntu</title><link>https://www.jeremymorgan.com/blog/generative-ai/local-llm-ubuntu/</link><pubDate>Mon, 27 May 2024 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/local-llm-ubuntu/</guid><description>&lt;p>If you want to run your own large language model like ChatGPT, you&amp;rsquo;re in luck. There are tons of well-rounded, easy software packages for this. Ollama is one of my favorites by far.&lt;/p>
&lt;p>Video for this tutorial:&lt;/p>
&lt;div style="position: relative; padding-bottom: 340px; height: 0; overflow: visible;">
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/NdBw0-y4N0w?si=GHvtIU2vrKQSv-8Z" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen>&lt;/iframe>
&lt;/div>
In this tutorial, we will set up Ollama with a WebUI on your Ubuntu Machine. This is a great way to run your own LLM for learning and experimenting, and it's private—all running on your own machine. 
&lt;p>This is an updated version of &lt;a href="https://www.jeremymorgan.com/blog/generative-ai/run-llm-locally-ubuntu/">this article&lt;/a> I wrote last year on setting up an Ubuntu machine.&lt;/p></description></item><item><title>Stable Diffusion AI Image Generator</title><link>https://www.jeremymorgan.com/blog/generative-ai/stable-diffusion-ai-image-generator/</link><pubDate>Sat, 16 Mar 2024 00:49:04 -0800</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/stable-diffusion-ai-image-generator/</guid><description>&lt;p>The image generation services out there (Midjourney, DallE, Gemini, etc) are awesome. The quality is unmatched at this time. But what if you want to generate images on your own local computer?&lt;/p>
&lt;p>The reasons you&amp;rsquo;d want to do this:&lt;/p>
&lt;ul>
&lt;li>No monthly fees&lt;/li>
&lt;li>No queues or credits&lt;/li>
&lt;li>Freedom to generate whatever you want&lt;/li>
&lt;li>You can add them to applications you&amp;rsquo;re developing&lt;/li>
&lt;/ul>
&lt;p>For local AI image generation, it&amp;rsquo;s hard to beat Stable Diffusion. &lt;a href="https://huggingface.co/docs/diffusers/en/using-diffusers/sdxl">Stable Diffusion XL&lt;/a> is the latest iteration of the popular text-to-image generation model, offering impressive results. If you&amp;rsquo;re eager to dive into the world of AI-generated art using Stable Diffusion XL, this guide will help you get started.&lt;/p></description></item><item><title>Ollama Windows</title><link>https://www.jeremymorgan.com/blog/generative-ai/ollama-windows/</link><pubDate>Thu, 15 Feb 2024 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/ollama-windows/</guid><description>&lt;p>If you&amp;rsquo;re a blog reader or follow me on social media, you already know I&amp;rsquo;m a huge fan of &lt;a href="https://ollama.com/">Ollama&lt;/a>. It is an excellent platform for running Large Language Models locally. It&amp;rsquo;s easy to use and powerful. There are &amp;ldquo;easier&amp;rdquo; programs out there like &lt;a href="https://lmstudio.ai/">LMStudio&lt;/a> and &lt;a href="https://gpt4all.io/index.html">GPT4All&lt;/a> that are simpler to set up. However, Ollama gives you a lot more control and can be customized very nicely. You can be running models or even writing AI-powered applications in minutes.&lt;/p></description></item><item><title>How to a Multimodal LLM Locally</title><link>https://www.jeremymorgan.com/blog/generative-ai/how-to-multimodal-llm-local/</link><pubDate>Sat, 03 Feb 2024 00:37:44 -0800</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/how-to-multimodal-llm-local/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Multimodal AI is changing how we interact with large language models. In the beginning we typed in text, and got a response. Now we can upload multiple types of files to an LLM and have it parsed. Blending natural language processing and computer vision, these models can interpret text, analyze images, and make recomendations.&lt;/p>
&lt;p>Until recently multimodal AI was limited to hosted solutions, the &amp;ldquo;big name&amp;rdquo; tools. Services like ChatGPT, Claude, Bard, and so many others. Multimodal AI is now available to run on your local machine, thanks to the hard work of folks at the &lt;a href="https://ollama.ai/">Ollama project&lt;/a> and the &lt;a href="https://llava-vl.github.io/">LLaVA: Large Language and Vision Assistant&lt;/a> project. Today, we&amp;rsquo;re going to dig into it. In this article I&amp;rsquo;ll show you these tools in action, and show you how to run them yourself in minutes.&lt;/p></description></item><item><title>How to Run LLM Locally Mac M1</title><link>https://www.jeremymorgan.com/blog/generative-ai/how-to-llm-local-mac-m1/</link><pubDate>Sun, 07 Jan 2024 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/how-to-llm-local-mac-m1/</guid><description>&lt;p>I&amp;rsquo;ve written about running LLMs (large language models) on your local machine for a while now. I play with this sort of thing nearly every day. So, I&amp;rsquo;m always looking for cool things to do in this space and easy ways to introduce others (like you) to the world of LLMs. This is my latest installment.&lt;/p>
&lt;p>Here it is in video form if you want:&lt;/p>
&lt;div class="video-container">
&lt;iframe class="youtubevid" src="https://www.youtube.com/embed/e5iaYkSNrhY?si=2134LxVpAOGQjF6i" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>&lt;/iframe>
&lt;/div>
&lt;script src="https://apis.google.com/js/platform.js">&lt;/script>&lt;div class="g-ytsubscribe" data-channelid="UCAR4QD5vqpn4LFrrBiDe7lQ" data-layout="full" data-count="default">&lt;/div>
&lt;hr>
&lt;p>So, you want to run LLMs on your Mac.&lt;/p></description></item><item><title>What Is Prompt Engineering?</title><link>https://www.jeremymorgan.com/blog/generative-ai/what-is-prompt-engineering/</link><pubDate>Tue, 26 Dec 2023 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/what-is-prompt-engineering/</guid><description>&lt;p>AI is everywhere you look, and LLMs are exploding in popularity. There’s a new AI based tool everywhere you look. If you want to get good at leveraging these tools, prompt engineering is a crucial skill.&lt;/p>
&lt;p>Imagine having a conversation with a robot. The way you frame your questions or inputs matters. If you don’t analyze exactly what you’re saying, the robot won’t understand you clearly. This is the essence of prompt engineering. It’s not just about what you ask, but how you ask it. This determines the response you get and the AI’s effectiveness in understanding and fulfilling your request. Garbage in, garbage out!&lt;/p></description></item><item><title>How to run LLM Locally Ubuntu Linux</title><link>https://www.jeremymorgan.com/blog/generative-ai/run-llm-locally-ubuntu/</link><pubDate>Wed, 06 Dec 2023 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/run-llm-locally-ubuntu/</guid><description>&lt;p>So, you want to run a ChatGPT like LLM in Ubuntu? Last week I covered &lt;a href="https://www.jeremymorgan.com/blog/generative-ai/how-to-run-llm-local-windows/">running Ollama in Windows 11&lt;/a>. But I also have a dedicated Ubuntu machine at home and decided to set it up here. This way, I have a constantly running instance of Ollama I can play around with or use anytime. I decided to document my process here if you are running Ubuntu and want to try this out.&lt;/p></description></item><item><title>How to Run LLM Local in Windows</title><link>https://www.jeremymorgan.com/blog/generative-ai/how-to-run-llm-local-windows/</link><pubDate>Wed, 29 Nov 2023 13:45:35 -0800</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/how-to-run-llm-local-windows/</guid><description>&lt;p>There&amp;rsquo;s no ignoring the constant buzz around the cool generative AI tools this last year. ChatGPT, Bard, Claude, the list goes on and on. These tools all use LLMs, or Large Language Models. If you&amp;rsquo;re curious about LLMs, you may have done some reading about them, and found people installing them on their own machine.&lt;/p>
&lt;p>Here are some reasons to run your own LLM locally:&lt;/p>
&lt;ul>
&lt;li>There are no rate limits. It&amp;rsquo;s 100% free&lt;/li>
&lt;li>You can experiment with settings and tune them to your liking&lt;/li>
&lt;li>You can use different models for different purposes&lt;/li>
&lt;li>You can train your own models for different things&lt;/li>
&lt;/ul>
&lt;p>These are a few reasons you might want to run your own LLM. Or maybe you don&amp;rsquo;t want the whole world to see what you&amp;rsquo;re doing with the LLM. It&amp;rsquo;s risky to send confidential or IP-protected information to a cloud service. If they&amp;rsquo;re ever hacked, you might be exposed.&lt;/p></description></item><item><title>Midjourney Art Styles</title><link>https://www.jeremymorgan.com/blog/generative-ai/midjourney-art-styles/</link><pubDate>Sat, 25 Nov 2023 12:18:39 -0800</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/midjourney-art-styles/</guid><description>&lt;p>Whether you like it or not, Midjourney is the biggest wave to hit the art world that we&amp;rsquo;ve seen in our lifetimes. I love building art with Midjourney. It allows me to be creative without spending hours building it or having the natural talent to make it.&lt;/p>
&lt;p>I don&amp;rsquo;t claim to be an artist or try to pawn these works off as my own. I&amp;rsquo;m just having fun creating cool stuff and sharing it. If you also love doing this stuff, here are some cool art styles to try out. I&amp;rsquo;ve included the prompts used to generate them. I&amp;rsquo;ve broken them up into traditional and non-traditional styles.&lt;/p></description></item><item><title>How to Make AI Generated Videos</title><link>https://www.jeremymorgan.com/blog/generative-ai/how-to-make-ai-generated-videos/</link><pubDate>Tue, 21 Nov 2023 11:40:32 -0800</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/how-to-make-ai-generated-videos/</guid><description>&lt;p>If you&amp;rsquo;re interested in Generative AI, you&amp;rsquo;ve likely seen tools like &lt;a href="https://www.runwayml.com">runway&lt;/a> that generate video from an image. They&amp;rsquo;re cool tools. Some of you, like me, want to run these tools for ourselves and have them on our personal machines.&lt;/p>
&lt;p>If that&amp;rsquo;s you, you&amp;rsquo;ve come to the right place. We&amp;rsquo;re going to install a tool to generate AI videos today. &lt;a href="https://stability.ai/news/stable-video-diffusion-open-ai-video-model">Stable Video Diffusion&lt;/a> was just released and we&amp;rsquo;re going to try it out.&lt;/p></description></item><item><title>Top Midjourney Art Styles with Prompts</title><link>https://www.jeremymorgan.com/blog/generative-ai/top-midjourney-styles-prompts/</link><pubDate>Mon, 06 Nov 2023 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/top-midjourney-styles-prompts/</guid><description>&lt;p>Like so many others I&amp;rsquo;m completely addicted to Midjourney. I love playing with prompts and tweaking things and making awesome stuff.&lt;/p>
&lt;p>Here are several art styles you can use on Midjourney, along with the prompts that created them.&lt;/p>
&lt;p>If you love Generative AI art, &lt;a href="https://twitter.com/i/communities/1718743578950897891">join my new community&lt;/a>&lt;/p>
&lt;h3 id="1-surreal-dreamscape">1. Surreal Dreamscape&lt;/h3>
&lt;p>Create an ethereal landscape where the laws of physics are defied, with floating islands, waterfalls cascading into the sky, and flora that glows with luminescent colors, all under a dual-moonlit sky. With rich, intricate details and vivid colors &amp;ndash;ar 16:9 &amp;ndash;v 5.2&lt;/p></description></item><item><title>How to run an LLM locally with Arch Linux</title><link>https://www.jeremymorgan.com/blog/generative-ai/run-llm-locally-arch-linux/</link><pubDate>Mon, 30 Oct 2023 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/run-llm-locally-arch-linux/</guid><description>&lt;p>Large Language Models (LLMs) like OpenAI&amp;rsquo;s GPT series have exploded in popularity. They&amp;rsquo;re used for everything from writing to resume building and, of course, programming help.&lt;/p>
&lt;p>While these models are typically accessed via cloud-based services, some crazy folks (like me) are running smaller instances locally on their personal computers. The reason I do it is to learn more about LLMs and how they work behind the scenes. Plus it doesn&amp;rsquo;t cost any money to run these things for hours and experiment. I want to know the inner workings of these things and how to adjust them.&lt;/p></description></item><item><title>How to run a ChatGPT like LLM locally</title><link>https://www.jeremymorgan.com/blog/generative-ai/how-to-run-chat-gpt-like-llm-locally/</link><pubDate>Sat, 21 Oct 2023 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/how-to-run-chat-gpt-like-llm-locally/</guid><description>&lt;p>So, you want to run a ChatGPT-like chatbot on your own computer? Want to learn more LLMs or just be free to chat away without others seeing what you&amp;rsquo;re saying? This is an excellent option for doing just that.&lt;/p>
&lt;p>I&amp;rsquo;ve been running several LLMs and other generative AI tools on my computer lately. I&amp;rsquo;ve discovered &lt;a href="https://github.com/oobabooga/text-generation-webui/tree/main">this web UI from oobabooga&lt;/a> for running models, and it&amp;rsquo;s incredible. You have a ton of options, and it works great.&lt;/p></description></item><item><title>Dall-E 3 vs MidJourney</title><link>https://www.jeremymorgan.com/blog/generative-ai/dall-e-3-vs-midjourney/</link><pubDate>Sun, 01 Oct 2023 12:45:17 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/generative-ai/dall-e-3-vs-midjourney/</guid><description>&lt;p>OpenAI recently released the third version of DALL-E. Of course, the biggest news from this is the integration with ChatGPT. This could be a huge step forward in prompt creation. But we&amp;rsquo;re not going to focus on that part today. We will examine the output of &lt;a href="https://labs.openai.com/">Dall-E 3&lt;/a> and see if it&amp;rsquo;s better than &lt;a href="https://www.midjourney.com/app/">Midjourney&lt;/a>.&lt;/p>
&lt;p>Recently, I&amp;rsquo;ve been using Midjourney more for image generation. Dall-E 2 was good, but not as good as Midjourney. Has that changed? Let&amp;rsquo;s throw a few simple prompts at it to see.&lt;/p></description></item><item><title>How to install Arch Linux with the Guided Installer</title><link>https://www.jeremymorgan.com/blog/linux/how-to-install-arch-linux-installer/</link><pubDate>Wed, 20 Sep 2023 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/linux/how-to-install-arch-linux-installer/</guid><description>&lt;blockquote>
&lt;p>&lt;em>Note: This article was originally written in September of 2021. It has since been updated to match the newest installer.&lt;/em>&lt;/p>&lt;/blockquote>
&lt;p>I&amp;rsquo;ve been using Arch regularly on my &amp;ldquo;main machine&amp;rdquo; for about 12 years. The first time I installed it, I struggled. I messed things up. I had to start over a few times. I finally got it dialed in. It was tough, but worth it.&lt;/p>
&lt;p>Since then, every time I get a new machine, I&amp;rsquo;ve had to install it again. It&amp;rsquo;s not a big deal anymore. However, that first time was challenging, and it was a barrier for new Linux users to try it out.&lt;/p></description></item><item><title>GPT on Arch Linux</title><link>https://www.jeremymorgan.com/blog/linux/gpt-for-arch-linux/</link><pubDate>Fri, 14 Apr 2023 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/linux/gpt-for-arch-linux/</guid><description>&lt;p>So you want to run your own GPT on your own machine? Yeah me too.&lt;/p>
&lt;p>So some &lt;a href="https://github.com/facebookresearch/llama">LLaMA models are available&lt;/a> (if you have a 24G video card) and other ways to do it, but GPT4All promises to be a different kind of solution. I saw &lt;a href="https://twitter.com/BrianRoemmele/status/1646714552602460160">this tweet&lt;/a> and had to check it out.&lt;/p>
&lt;p>So who runs a binary on their machine from some rando on the Internet? Usually, not me. However, &lt;a href="https://twitter.com/BrianRoemmele">Brian Roemmele&lt;/a> appears to be a legit guy, and many people I respect follow him. So I decided to trust him and run this on my laptop. You might not. If so, run this in a VM or on Tails or something.&lt;/p></description></item><item><title>Mac Mini M2 Pro Review</title><link>https://www.jeremymorgan.com/blog/tech/why-i-returned-mac-mini-m2/</link><pubDate>Fri, 17 Mar 2023 15:13:55 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/tech/why-i-returned-mac-mini-m2/</guid><description>&lt;p>I was super excited when my M2 Mac Mini arrived. So excited I wanted to take the rest of the day off work just to set it up. That excitement didn&amp;rsquo;t last very long.&lt;/p>
&lt;p>I returned my Mac Mini M2 Pro, and this is why. I&amp;rsquo;m not trying to bash here. This isn&amp;rsquo;t a hit piece. I generated a lot of talk and tons of instant messages on Twitter and other platforms. I thought it would be easier to explain here and send people the link.&lt;/p></description></item><item><title>Mac Mini M2 Pro Benchmarks</title><link>https://www.jeremymorgan.com/blog/tech/mac-mini-m2pro-vs-m1/</link><pubDate>Tue, 14 Mar 2023 08:16:47 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/tech/mac-mini-m2pro-vs-m1/</guid><description>&lt;p>This an article comparing the Mac Mini M1 to the Mac Mini M2 Pro.&lt;/p>
&lt;p>I am dumping the numbers here, and will write the article soon. I am still evaluating this machine for a full review.&lt;/p>
&lt;p>This is a raw stats comparison between the two, and compared to other machines I&amp;rsquo;m using.&lt;/p>
&lt;h3 id="cpu-test-geekbench-6">CPU Test (Geekbench 6)&lt;/h3>
&lt;p>&lt;img src="https://www.jeremymorgan.com/images/blog/tech/mac-mini-m2pro-vs-m1/mac-mini-m2pro-vs-m1-00.webp" alt="&amp;ldquo;Mac Mini M2 Pro vs Mac Mini M1&amp;rdquo;">&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Machine&lt;/th>
 &lt;th>Single Core&lt;/th>
 &lt;th>Multi- Core&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>M1&lt;/td>
 &lt;td>2105&lt;/td>
 &lt;td>7796&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>M2&lt;/td>
 &lt;td>2650&lt;/td>
 &lt;td>14217&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="compute-test-geekbench-6">Compute Test (Geekbench 6)&lt;/h3>
&lt;p>&lt;img src="https://www.jeremymorgan.com/images/blog/tech/mac-mini-m2pro-vs-m1/mac-mini-m2pro-vs-m1-01.webp" alt="&amp;ldquo;Mac Mini M2 Pro vs Mac Mini M1&amp;rdquo;">&lt;/p></description></item><item><title>How to Get a Part 107 License</title><link>https://www.jeremymorgan.com/blog/drones/how-to-get-part-107-license/</link><pubDate>Fri, 12 Aug 2022 10:04:11 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/drones/how-to-get-part-107-license/</guid><description>&lt;p>This is a little different from my standard content on this blog, but I need to share it. I fly drones for fun, and I&amp;rsquo;ve become mildly obsessed with them.&lt;/p>
&lt;p>&lt;img src="https://www.jeremymorgan.com/images/blog/drones/how-to-get-part-107/how-to-get-part-107-00.webp" alt="How to get your Part 107 License">&lt;/p>
&lt;p>I recently passed my certification for the &lt;a href="https://www.faa.gov/uas/commercial_operators">14 CFR Part 107&lt;/a> license. I have received a TON of questions about it. Since it&amp;rsquo;s still fresh in my mind, I thought I&amp;rsquo;d lay down how I studied for the test and what you can do to get this license.&lt;/p></description></item><item><title>Pop!_OS Linux 21.10 Review</title><link>https://www.jeremymorgan.com/blog/linux/pop-os-linux-21-10-review/</link><pubDate>Sun, 19 Dec 2021 14:21:09 -0800</pubDate><guid>https://www.jeremymorgan.com/blog/linux/pop-os-linux-21-10-review/</guid><description>&lt;p>I&amp;rsquo;m a dedicated Pop!_OS user these days. I&amp;rsquo;ve used it off and on for a few years now, and put it on my laptop as a daily driver about a year ago and haven&amp;rsquo;t looked back. It&amp;rsquo;s an excellent operating system, and lately it&amp;rsquo;s my favorite Linux.&lt;/p>
&lt;p>System76 has released &lt;a href="http://bit.ly/PopOSDownload">Pop!_OS 21.10&lt;/a> and I&amp;rsquo;ve installed it and put it to use. I have given it nearly a week to shake out and make sure everything is good before writing about it. I&amp;rsquo;ve found no major issues.&lt;/p></description></item><item><title>How to Optimize JPG Images</title><link>https://www.jeremymorgan.com/blog/programming/how-to-optimize-jpg-images/</link><pubDate>Sat, 27 Nov 2021 15:54:51 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/how-to-optimize-jpg-images/</guid><description>&lt;p>Want fast loading web pages?&lt;/p>
&lt;p>You probably aren&amp;rsquo;t optimizing your images enough. Image optimization is frequently overlooked because it&amp;rsquo;s only a small difference and takes some time to do. But a series of small changes will lead to a screaming fast website. It&amp;rsquo;s worth it. Your pages will load faster.&lt;/p>
&lt;h3 id="why-does-this-matter">Why does this matter?&lt;/h3>
&lt;ul>
&lt;li>It&amp;rsquo;s better for your user&lt;/li>
&lt;li>It makes your page more accessible in low bandwidth situations&lt;/li>
&lt;li>It&amp;rsquo;s better for SEO&lt;/li>
&lt;/ul>
&lt;p>All this in exchange for a few minutes of your time. Do you need any more reasons to optimize your images?&lt;/p></description></item><item><title>Upgrading my Lenovo E590 Laptop</title><link>https://www.jeremymorgan.com/blog/dotnet6/windows-11-lenovo-e590/</link><pubDate>Fri, 12 Nov 2021 16:53:20 -0800</pubDate><guid>https://www.jeremymorgan.com/blog/dotnet6/windows-11-lenovo-e590/</guid><description>&lt;p>This week &lt;a href="https://www.dotnetconf.net">Microsoft announced a ton of stuff&lt;/a>. .NET 6. Visual Studio 2022. Maui. All kinds of great geek goodness.&lt;/p>
&lt;p>I have a couple of new projects coming up that will involve .NET 6 and Visual Studio 2022. I&amp;rsquo;m going to be doing some of this work on my laptop. I decided I should upgrade to Windows 11 at the same time.&lt;/p>
&lt;p>The only problem: My laptop isn&amp;rsquo;t having that. It&amp;rsquo;s a &lt;a href="https://amzn.to/2UlIjAP">Lenovo Thinkpad E590&lt;/a> that&amp;rsquo;s being stressed in two areas.&lt;/p></description></item><item><title>What Not to do in a Coding Interview</title><link>https://www.jeremymorgan.com/blog/programming/coding-interviews-advice/</link><pubDate>Fri, 17 Sep 2021 12:12:49 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/programming/coding-interviews-advice/</guid><description>&lt;p>On Twitter, a friend of mine &lt;a href="https://twitter.com/sthmrrll/status/1438369209285632000">shared a Twitter thread about interviews&lt;/a>. While it wasn&amp;rsquo;t explicitly related to &lt;em>tech&lt;/em> interviews, my ears perked up because I&amp;rsquo;ve seen it. So many times. Here&amp;rsquo;s what he said in its entirety:&lt;/p>
&lt;blockquote>
&lt;p>My favorite thing about LinkedIn and Twitter posts where people ask &amp;ldquo;What&amp;rsquo;s your favorite question to ask in a job interview, and why?&amp;rdquo; is seeing people earnestly share some of the worst job interview questions I&amp;rsquo;ve ever seen in my life&lt;/p></description></item><item><title>Pop!_OS 21.04 First Impressions</title><link>https://www.jeremymorgan.com/blog/linux/pop-os-21-04-first-impressions/</link><pubDate>Sun, 04 Jul 2021 00:09:42 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/linux/pop-os-21-04-first-impressions/</guid><description>&lt;p>Pop!_OS has become one of my favorite Linux distributions over the last couple of years. It&amp;rsquo;s a fantastic distro for many reasons, most of which is the way it &amp;ldquo;just works.&amp;rdquo; Sorry Apple, that&amp;rsquo;s not exclusive to you. System76 released version Pop!_OS 21.04 and I upgraded immediately. Here are my first impressions.&lt;/p>
&lt;p>I&amp;rsquo;m basing this review on a native install on my &lt;a href="https://amzn.to/2UlIjAP">Lenovo Thinkpad E590&lt;/a> laptop. I use this laptop for personal projects, website maintenance and building articles/tutorials like the one you&amp;rsquo;re reading now.&lt;/p></description></item><item><title>Two Weeks with FreeBSD as My Daily Driver</title><link>https://www.jeremymorgan.com/blog/freebsd/two-weeks-freebsd-daily-driver/</link><pubDate>Sun, 10 Jan 2021 02:24:11 -0800</pubDate><guid>https://www.jeremymorgan.com/blog/freebsd/two-weeks-freebsd-daily-driver/</guid><description>&lt;p>I love FreeBSD. I always have. I first started using it in the late 90s and quickly gained employment using it. I ran a web hosting service with FreeBSD for years. It was a daily driver for me for a long time (1999 to 2004 or so). I became one of the &amp;ldquo;FreeBSD people&amp;rdquo; at a developer job I had later. I have a deep history with it, but at some point, I abandoned the thought of using it as a daily driver faded. Last year, my interest was re-ignited.&lt;/p></description></item><item><title>The Best Linux Distribution for Beginners? Arch Linux</title><link>https://www.jeremymorgan.com/blog/linux/best-linux-for-beginners/</link><pubDate>Mon, 09 Nov 2020 00:44:25 -0800</pubDate><guid>https://www.jeremymorgan.com/blog/linux/best-linux-for-beginners/</guid><description>&lt;p>&lt;strong>Update (December 1, 2020):&lt;/strong> &lt;em>When I wrote this article, there was no installer for Arch Linux. However, there is now an &lt;a href="https://www.jeremymorgan.com/blog/linux/how-to-install-arch-linux-installer/">Arch Linux Guided Installer&lt;/a>, and it works great!&lt;/em>&lt;/p>
&lt;p>Windows or Mac users who want to try out Linux should start out with &lt;a href="https://www.archlinux.org/">Arch Linux&lt;/a>. Forget Ubuntu, Mint, or even Zorin. Get Arch.&lt;/p>
&lt;p>&lt;img src="https://www.jeremymorgan.com/images/best-linux-for-beginners/best-linux-for-beginners-01.jpg" alt="Best Linux for Beginners">&lt;/p>
&lt;p>If you&amp;rsquo;re reading this and curious about using Linux, &lt;a href="https://www.archlinux.org/download/">try Arch Linux&lt;/a>. Really.&lt;/p>
&lt;p>Now I know the stereotypes involved with this distribution:&lt;/p></description></item><item><title>Pop!_OS Linux 20.10: Review</title><link>https://www.jeremymorgan.com/blog/linux/pop-os-linux-20-10-review/</link><pubDate>Fri, 06 Nov 2020 14:43:02 -0800</pubDate><guid>https://www.jeremymorgan.com/blog/linux/pop-os-linux-20-10-review/</guid><description>&lt;p>So one of my favorite Linux distributions, Pop!_OS, has &lt;a href="http://bit.ly/PopOSDownload">released a new version, 20.10&lt;/a>, and I&amp;rsquo;ve been using it since release day. Here are my thoughts.&lt;/p>
&lt;p>It&amp;rsquo;s based on Ubuntu 20.10 and comes with some cool new features. It&amp;rsquo;s a Linux Distribution from a hardware vendor, but don&amp;rsquo;t let that stop you. This is high-quality stuff, whether you own a System76 machine or not.&lt;/p>
&lt;h2 id="why-consider-pop_os">Why Consider Pop!_OS?&lt;/h2>
&lt;p>Before I go into what&amp;rsquo;s new with Pop!_OS, why bother looking at in the first place? There are hundreds of Linux distributions out there, and many of them are great. What&amp;rsquo;s so special about this one?&lt;/p></description></item><item><title>Optimizing String Comparisons in Go</title><link>https://www.jeremymorgan.com/blog/golang/optimizing-string-compare-go/</link><pubDate>Fri, 04 Sep 2020 12:07:35 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/golang/optimizing-string-compare-go/</guid><description>&lt;p>Want your Go programs to run faster? Optimizing string comparisons in Go can improve your application&amp;rsquo;s response time and help scalability. Comparing two strings to see if they&amp;rsquo;re equal takes processing power, but not all comparisons are the same. In a previous article, we looked at &lt;a href="https://www.jeremymorgan.com/tutorials/go/how-do-i-compare-strings-go/">How to compare strings in Go&lt;/a> and did some benchmarking. We&amp;rsquo;re going to expand on that here.&lt;/p>
&lt;p>It may seem like a small thing, but as all great optimizers know, it&amp;rsquo;s the little things that add up. Let&amp;rsquo;s dig in.&lt;/p></description></item><item><title>Golang: 7 Reasons Why Front End Developers Going Full Stack Should Choose Go</title><link>https://www.jeremymorgan.com/blog/golang/why-choose-go-backend/</link><pubDate>Wed, 12 Aug 2020 10:54:13 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/golang/why-choose-go-backend/</guid><description>&lt;p>So you&amp;rsquo;re a front end developer, and you want to learn some backend stuff. You want to become a &lt;em>full stack&lt;/em> developer someday, so where do you start? Google&amp;rsquo;s Go language is an excellent place.&lt;/p>
&lt;p>For instance, let&amp;rsquo;s say you want to build a RESTful API to test the calls from your React Application. You could use &lt;a href="https://jsonplaceholder.typicode.com/">JSONPlaceholder&lt;/a>, &lt;a href="https://reqres.in/">Reqres&lt;/a>, or even &lt;a href="https://www.soapui.org/">SoapUI&lt;/a>. All excellent options.&lt;/p>
&lt;p>Or you could spend an evening take &lt;a href="https://tour.golang.org/welcome/1">A Tour of Go&lt;/a> and follow a &lt;a href="https://tutorialedge.net/golang/creating-restful-api-with-golang/">tutorial like this one&lt;/a> to build a local API that does exactly what you want, and mocks whatever you want. Right on your local machine!&lt;/p></description></item><item><title>Web Development: How to Build Your First JAMstack Site</title><link>https://www.jeremymorgan.com/blog/programming/how-to-build-jamstack-site/</link><pubDate>Fri, 29 May 2020 15:51:07 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/programming/how-to-build-jamstack-site/</guid><description>&lt;p>Are you wondering what all this new hype is over JAMstack? What is a JAMstack site? How do I build one? Where do I deploy it?&lt;/p>
&lt;p>If you&amp;rsquo;ve asked any of these questions over the last couple of months, this article is for you. We&amp;rsquo;re going to learn what JAMstack is, and how to build our first JAMstack blog.&lt;/p>
&lt;p>If you already have an idea what a JAMstack site is, you can skip this section and go directly to:&lt;/p></description></item><item><title>Web Development: What Is Deno and Why Is Everyone Talking About It?</title><link>https://www.jeremymorgan.com/blog/programming/what-is-deno/</link><pubDate>Fri, 15 May 2020 08:48:14 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/programming/what-is-deno/</guid><description>&lt;p>Deno is a hot new runtime that may replace Node.js. Everyone&amp;rsquo;s talking about it like it&amp;rsquo;s the next big thing. It likely is. Here&amp;rsquo;s why.&lt;/p>
&lt;h2 id="what-is-deno">What Is Deno?&lt;/h2>
&lt;p>&lt;img src="https://www.jeremymorgan.com/images/what-is-deno/what-is-deno-01.jpg" alt="What is Deno">&lt;/p>
&lt;p>From the manual:&lt;/p>
&lt;blockquote>
&lt;p>Deno is a JavaScript/TypeScript runtime with secure defaults and a great developer experience.&lt;/p>
&lt;p>It&amp;rsquo;s built on V8, Rust, and Tokio.&lt;/p>&lt;/blockquote>
&lt;p>&lt;a href="https://deno.land/v1">Deno&lt;/a> is designed to be a replacement for our beloved Node.js, and it&amp;rsquo;s led by Ryan Dahl, who started the Node.js project way back in 2009. The design stems from &lt;a href="https://www.youtube.com/watch?v=M3BM9TB-8yA">10 things he regrets about Node.js&lt;/a>.&lt;/p></description></item><item><title>How to set up Pop!_OS for Front End Development</title><link>https://www.jeremymorgan.com/blog/linux/pop-os-front-end/</link><pubDate>Mon, 11 May 2020 13:29:29 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/linux/pop-os-front-end/</guid><description>&lt;p>If you&amp;rsquo;ve heard all the chatter lately about Pop!_OS and have been wanting to try it out, here&amp;rsquo;s a good guide to setting up a front end development machine.&lt;/p>
&lt;p>If you&amp;rsquo;re relatively new to Linux and are just trying it out, I suggest building this in a Virtual Machine. I have the full instructions for &lt;a href="https://www.jeremymorgan.com/blog/linux/how-to-install-linux/">installing Pop!_OS in a virtual machine here&lt;/a>. This is the best way to dip your toes in without significant modifications to your computer.&lt;/p></description></item><item><title>Will Ubuntu 20.04 Steal More Windows Users?</title><link>https://www.jeremymorgan.com/blog/linux/ubuntu-review/</link><pubDate>Thu, 07 May 2020 13:01:48 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/linux/ubuntu-review/</guid><description>&lt;p>It&amp;rsquo;s that time of year again, Ubuntu &lt;a href="https://bit.ly/DownloadUbuntu20">20.04 is now available&lt;/a>. Will this be the release that steals away more Windows users?&lt;/p>
&lt;p>No, 2020 won&amp;rsquo;t be the year of the Linux Desktop. However, as &lt;a href="https://www.forbes.com/sites/jasonevangelho/2020/05/06/windows-10-is-bleeding-users-while-ubuntu-linux-enjoys-an-astonishing-increase/#61d822b33ccd">Jason Evangelho pointed out a couple of days ago&lt;/a> Windows 10 usage suffered a rare drop in usage while Ubuntu usage went up &lt;em>599 percent&lt;/em>. It&amp;rsquo;s tough to make a call with such little information. But the idea that Ubuntu could be stealing users from Windows 10 isn&amp;rsquo;t that hard to fathom.&lt;/p></description></item><item><title>90 Days With The Pinebook Pro</title><link>https://www.jeremymorgan.com/blog/linux/90-days-with-pinebook-pro/</link><pubDate>Sat, 02 May 2020 00:00:24 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/linux/90-days-with-pinebook-pro/</guid><description>&lt;p>So earlier this year &lt;a href="https://www.jeremymorgan.com/blog/linux/pine64-pro-laptop-review/">I reviewed the PineBook Pro&lt;/a>. I was pretty impressed with it at the time, but am I still enamored with this $200 laptop? I&amp;rsquo;ve now been using it for at least 90 days. I know that because I haven&amp;rsquo;t rebooted it in 90 days. &lt;em>Really.&lt;/em>&lt;/p>
&lt;p>&lt;img src="https://www.jeremymorgan.com/images/90-days-pinebook-pro/90-days-pinebook-pro-01.jpg" alt="90 Days with the PineBook Pro">&lt;/p>
&lt;p>Here is my review of it after using it for three months.&lt;/p>
&lt;h2 id="what-is-the-pinebook-pro">What is the PineBook Pro?&lt;/h2>
&lt;p>The &lt;a href="http://bit.ly/PinebookProSpecs">PineBook Pro&lt;/a> has some pretty lofty goals. I like lofty goals, so when I read about it, I ordered one. According to the Pine64 organization:&lt;/p></description></item><item><title>9 Courses You Can Take to Become a JavaScript Wizard</title><link>https://www.jeremymorgan.com/blog/javascript/learn-javascript/</link><pubDate>Sat, 25 Apr 2020 14:19:15 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/javascript/learn-javascript/</guid><description>&lt;p>There are tons of front end frameworks to choose from, and getting good with them is no small task. But sharpening your &lt;em>core JavaScript skills&lt;/em> can make you better at &lt;strong>all front-end frameworks&lt;/strong>. By thoroughly understanding JavaScript at its core, you will write better programs, faster, with less struggle.&lt;/p>
&lt;p>If you aren&amp;rsquo;t sure where you stand, you can &lt;strong>&lt;a href="https://bit.ly/JavaScriptSkillIQ">take a JavaScript Skills Test&lt;/a>&lt;/strong> to find out!&lt;/p>
&lt;p>Here are nine great courses to help you become a JavaScript wizard.&lt;/p></description></item><item><title>Linux Tutorial: How to Install Linux for the First Time</title><link>https://www.jeremymorgan.com/blog/linux/how-to-install-linux/</link><pubDate>Wed, 22 Apr 2020 10:12:49 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/linux/how-to-install-linux/</guid><description>&lt;p>Curious about Linux and want to try it out? This article is for you. Here are some easy step by step instructions to get started poking around with my favorite operating system.&lt;/p>
&lt;p>Linux is a hot topic in tech, and people are flocking to it like crazy. But it can be scary, especially if you&amp;rsquo;ve never partitioned a hard drive before, and don&amp;rsquo;t want to wipe Windows or OSX off your computer to try it. With &lt;a href="https://www.virtualbox.org/wiki/Downloads">VirtualBox&lt;/a> you don&amp;rsquo;t have to. Let&amp;rsquo;s begin!!&lt;/p></description></item><item><title>I Took a COBOL Course and I Liked It</title><link>https://www.jeremymorgan.com/blog/programming/cobol-programming/</link><pubDate>Wed, 15 Apr 2020 19:02:13 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/programming/cobol-programming/</guid><description>&lt;p>COBOL is in the news again. &lt;a href="https://www.theverge.com/2020/4/14/21219561/coronavirus-pandemic-unemployment-systems-cobol-legacy-software-infrastructure">Millions of people&lt;/a> are filing unemployment claims nearly all at once, and the systems to process them are failing. Why? They need to scale to unprecedented levels, they&amp;rsquo;re written in COBOL, and&amp;hellip; &lt;a href="https://www.kcci.com/article/wanted-urgently-people-who-know-a-half-century-old-computer-language-so-states-can-process-unemployment-claims/">we don&amp;rsquo;t have enough COBOL programmers&lt;/a>.&lt;/p>
&lt;p>Here&amp;rsquo;s a look at the increase in searches for &amp;ldquo;COBOL programmers&amp;rdquo;:&lt;/p>
&lt;p>&lt;img src="https://www.jeremymorgan.com/images/cobol-programming/cobol-programming-00.jpg" alt="Cobol Programming">&lt;/p>
&lt;p>Most COBOL programmers are retired. The pipeline of new COBOL programmers is nearly nonexistent. Many are coming out of retirement just to help.&lt;/p></description></item><item><title>The Tech Challenges of Moving K-12 to a Distance Learning Model</title><link>https://www.jeremymorgan.com/blog/programming/challenges-k12-distance-learning/</link><pubDate>Thu, 09 Apr 2020 15:57:37 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/programming/challenges-k12-distance-learning/</guid><description>&lt;p>The global shift to home isolation has unique implications for public education. The era of slow and steady plans to virtualize education was given a donkey kick by this virus and the quarantine, and here&amp;rsquo;s what I&amp;rsquo;ve observed.&lt;/p>
&lt;p>I&amp;rsquo;m one of the directors on my local school board, and part of a group of technologists called in to discuss and help with &amp;ldquo;distance learning&amp;rdquo; and implementing it in our district. Though some of our problems are unique to our area, many of these problems are facing schools around the country, and possibly worldwide.&lt;/p></description></item><item><title>Web Development: How I Got My Website to Load in 1 Second</title><link>https://www.jeremymorgan.com/blog/programming/static-site-hugo-netlify/</link><pubDate>Sat, 04 Apr 2020 10:04:04 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/programming/static-site-hugo-netlify/</guid><description>&lt;p>The front page of &lt;a href="https://www.jeremymorgan.com">JeremyMorgan.com&lt;/a> loads less than a second, most of the time, from various parts of the world.&lt;/p>
&lt;p>&lt;img src="https://www.jeremymorgan.com/images/static-site-hugo-netlify/static-site-performance-01.jpg" alt="Build a static site with Hugo and Netlify">&lt;/p>
&lt;p>The website was fast before when &lt;a href="https://www.webpagetest.org/result/200311_EG_560d0e65170089b7898b6c5050f1209a/">it loaded in 3 seconds&lt;/a> with the old design. Now it&amp;rsquo;s even better, and I&amp;rsquo;ll show you how I have it set up.&lt;/p>
&lt;p>&lt;img src="https://www.jeremymorgan.com/images/static-site-hugo-netlify/static-site-performance-02.jpg" alt="Build a static site with Hugo and Netlify">&lt;/p>
&lt;p>I chose to build this site with &lt;a href="https://gohugo.io/">Hugo&lt;/a> and host it on &lt;a href="https://www.netlify.com/">Netlify&lt;/a>. In this article, I&amp;rsquo;ll describe how I arrived at this decision.&lt;/p></description></item><item><title>Donate Your Unused CPU Cycles to Fight Coronavirus</title><link>https://www.jeremymorgan.com/blog/programming/donate-cpu-help-coronavirus/</link><pubDate>Sun, 15 Mar 2020 15:45:41 -0700</pubDate><guid>https://www.jeremymorgan.com/blog/programming/donate-cpu-help-coronavirus/</guid><description>&lt;p>The &lt;a href="http://bit.ly/FoldingAtHomeCovid">Folding at Home&lt;/a> research project uses crowd sourced CPU power to help model simulations to develop treatments for diseases. You can help them by taking 5 minutes to download their client, and donate some CPU Cycles.&lt;/p>
&lt;p>For more info:&lt;/p>
&lt;blockquote>
&lt;p>After initial quality control and limited testing phases, Folding@home team has released an initial wave of projects simulating potentially druggable protein targets from SARS-CoV-2 (the virus that causes COVID-19) and the related SARS-CoV virus (for which more structural data is available) into full production on Folding@home. Many thanks to the large number of Folding@home donors who have assisted us thus far by running in beta or advanced modes.&lt;/p></description></item><item><title>Programming: Stop Fearing the Whiteboard. Conquer It.</title><link>https://www.jeremymorgan.com/blog/programming/whiteboard-interview-tips/</link><pubDate>Sat, 22 Feb 2020 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/whiteboard-interview-tips/</guid><description>&lt;p>It&amp;rsquo;s time we stopped fearing, complaining, and arguing about whiteboard coding interviews.&lt;/p>
&lt;p>With a solid plan, a little skilling up, and some practice, you can master the whiteboard interview. We can argue for days about the validity of this type of interview, but the fact is many organizations require it. So are you going to let this obstacle stop you from getting the job you want? Of course not. Let&amp;rsquo;s tackle the whiteboard interview, and defeat it.&lt;/p></description></item><item><title>Can you use FreeBSD for a Developer Machine in 2020?</title><link>https://www.jeremymorgan.com/blog/freebsd/freebsd-developer-2020/</link><pubDate>Wed, 19 Feb 2020 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/freebsd/freebsd-developer-2020/</guid><description>&lt;p>FreeBSD is a solid choice on a server, and it&amp;rsquo;s ubiquitous in the infrastructure world, but how does it hold up as a desktop machine? As a developer workstation? I found out.&lt;/p>
&lt;p>I&amp;rsquo;ve been considering moving my blog back to a FreeBSD web server. I&amp;rsquo;d hosted it that way for years and recently switched it to a Linux machine so I could make Octopress work properly. It uses some old, outdated Ruby gems, and it just seemed easier.&lt;/p></description></item><item><title>What's the big deal with Pop!_OS?</title><link>https://www.jeremymorgan.com/blog/linux/pop-os-linux-review/</link><pubDate>Sat, 25 Jan 2020 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/linux/pop-os-linux-review/</guid><description>&lt;p>&lt;strong>Note:&lt;/strong> &lt;em>There&amp;rsquo;s a new version of Pop!_OS, 20.10 and I&amp;rsquo;ve &lt;a href="https://www.jeremymorgan.com/blog/linux/pop-os-linux-20-10-review/">reviewed it here&lt;/a>.&lt;/em>&lt;/p>
&lt;p>A new &lt;a href="https://pluralsight.pxf.io/qny3jb">Linux&lt;/a> distribution has been popping up in discussion circles everywhere, it&amp;rsquo;s Pop! OS. What is it and why are people so crazy about it?&lt;/p>
&lt;p>&lt;img src="https://www.jeremymorgan.com/images/pop-os-linux/pop-os-linux-00.jpg" alt="Pop!_OS Linux Review">&lt;/p>
&lt;p>I&amp;rsquo;ll give you my first impressions of Pop!_OS and whether I think you should consider it for your development machine.&lt;/p>
&lt;br />
## Pop! OS Saved Me
&lt;p>&lt;img src="https://www.jeremymorgan.com/images/pop-os-linux/pop-os-linux-01.jpg" alt="Pop!_OS Linux Review">&lt;/p>
&lt;p>There I was, giving a presentation for a group of people on Blazor earlier this month. I&amp;rsquo;d &lt;a href="http://bit.ly/SpilledSomeTea">spilled tea on my Windows laptop&lt;/a> a couple days prior, so I did the presentation with my MacBook Pro. I practiced the demos a few times and everything seemed hunky dory. I knew this stuff front to back so what could go wrong?&lt;/p></description></item><item><title>Linux Log Parsing: Analyzing Attacks on my Server</title><link>https://www.jeremymorgan.com/blog/linux/analyzing-linux-attacks/</link><pubDate>Thu, 16 Jan 2020 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/linux/analyzing-linux-attacks/</guid><description>&lt;p>I was casually doing a security audit on my blog recently and decided to look a little deeper into my security logs. With a bit of Linux command line kung fu, some Golang, and Google sheets, I was able to get a pretty good idea of where the attacks are coming from.&lt;/p>
&lt;p>To start, I&amp;rsquo;m using CentOS to host my site, so I checked out /var/log/secure. This log is where authentication logs are stored on my server.&lt;/p></description></item><item><title>Review: Trying out the Pinebook Pro - a $200 ARM Laptop</title><link>https://www.jeremymorgan.com/blog/linux/pine64-pro-laptop-review/</link><pubDate>Thu, 16 Jan 2020 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/linux/pine64-pro-laptop-review/</guid><description>&lt;p>The Pinebook Pro is a $200 laptop that runs a couple of ARM processors, and it promises a lot. Does it deliver? After what seemed like an eternity waiting, &lt;a href="http://bit.ly/NewPinebookPro">mine arrived&lt;/a> and here&amp;rsquo;s what I think.&lt;/p>
&lt;!-- more -->
&lt;p>I used this thing for a few days casually to get a feel for what it&amp;rsquo;s like, and this is my first impression.&lt;/p>
&lt;p>As a note, you can get a &lt;a href="http://bit.ly/PinebookSpecs">$100 Pinebook here&lt;/a> as well.&lt;/p></description></item><item><title>Programming: The Developer Tool You Can't Live Without</title><link>https://www.jeremymorgan.com/blog/programming/tools-csv-text-nimbletext/</link><pubDate>Fri, 10 Jan 2020 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/tools-csv-text-nimbletext/</guid><description>&lt;p>I&amp;rsquo;m introducing a text / code generation tool that you will fall in love with. If you&amp;rsquo;re a developer or someone who works with text or tabulated data you &lt;strong>need&lt;/strong> this tool.&lt;/p>
&lt;!-- more -->
&lt;p>It&amp;rsquo;s called &lt;a href="http://bit.ly/NimbleText">Nimble Text&lt;/a> and it&amp;rsquo;s awesome. Here&amp;rsquo;s how the developer of Nimble Text describes it:&lt;/p>
&lt;blockquote>
&lt;p>You can be more awesome at your job by keeping this tool always within reach.&lt;/p>
&lt;p>NimbleText is a text manipulation and code generation tool available online or as a free download. It magnifies your ability to perform incredible feats of text and data wrangling.&lt;/p></description></item><item><title>How Blazor is Going To Change Web Development</title><link>https://www.jeremymorgan.com/blog/blazor/what-is-blazor/</link><pubDate>Fri, 27 Dec 2019 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/blazor/what-is-blazor/</guid><description>&lt;p>A couple of weeks ago I wrote an article about &lt;a href="https://www.jeremymorgan.com/blog/linux/blazor-in-linux/">building and deploying a Blazor app without touching a Windows machine&lt;/a> and realized maybe I should take a step back and explain what Blazor is and why anyone would use it. It&amp;rsquo;s still fairly new to most in the front end development world, but it&amp;rsquo;s awesome and you should check it out.&lt;/p>
&lt;h3 id="so-what-is-it-exactly">So what is it, exactly?&lt;/h3>
&lt;p>Blazor is a framework from Microsoft that you can use to develop interactive client-side Web UIs with C#.&lt;/p></description></item><item><title>Linux Tutorial: Build and Deploy a Blazor App Without Touching a Windows Machine</title><link>https://www.jeremymorgan.com/blog/linux/blazor-in-linux/</link><pubDate>Sat, 14 Dec 2019 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/linux/blazor-in-linux/</guid><description>&lt;p>Do you want to try out &lt;a href="https://pluralsight.pxf.io/9WEPYY">Blazor&lt;/a>, but you&amp;rsquo;re not a Windows person? Strictly a Linux developer? We&amp;rsquo;ll you&amp;rsquo;re in luck. One of the goals of .NET Core is to be cross platform, so today we&amp;rsquo;ll see just how &amp;ldquo;cross platform&amp;rdquo; it really is with Blazor, Microsoft&amp;rsquo;s hot new front end development project.&lt;/p>
&lt;!-- more -->
&lt;p>Follow along with me while we develop a Blazor app and deploy it without ever using a Windows machine. Here&amp;rsquo;s what we&amp;rsquo;re going to do:&lt;/p></description></item><item><title>How to Code in Haxe</title><link>https://www.jeremymorgan.com/blog/programming/getting-started-haxe/</link><pubDate>Sat, 02 Nov 2019 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/getting-started-haxe/</guid><description>&lt;p>The Haxe Foundation recently released &lt;a href="http://bit.ly/2oHuDRk">Haxe 4.0&lt;/a> and I decided to check it out. Here&amp;rsquo;s &lt;a href="http://bit.ly/2Wxiafk">what&amp;rsquo;s new in version 4&lt;/a>.&lt;/p>
&lt;p>Haxe runs on Windows, Mac, and Linux. You can &lt;a href="http://bit.ly/GetHaxe">download it here&lt;/a>.&lt;/p>
&lt;h2 id="what-is-haxe">What is Haxe?&lt;/h2>
&lt;p>According to the website:&lt;/p>
&lt;blockquote>
&lt;p>Haxe is an open-source high-level strictly-typed programming language with a fast optimizing cross-compiler.&lt;/p>&lt;/blockquote>
&lt;p>So the high level strictly typed programming language makes sense, but a fast optimizing cross compiler? What&amp;rsquo;s that about?&lt;/p>
&lt;p>So the general idea here is &amp;ldquo;one language to rule them all&amp;rdquo;. You write your application in Haxe, then it compiles to another language to target a platform. Basically it treats the output language (like JavaScript, C#, Python, etc) as bytecode for your application.&lt;/p></description></item><item><title>Intel's Clear Linux: First Impressions</title><link>https://www.jeremymorgan.com/blog/linux/intel-clear-linux-review/</link><pubDate>Fri, 04 Oct 2019 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/linux/intel-clear-linux-review/</guid><description>&lt;p>I&amp;rsquo;ve been using Linux since 1996, and I&amp;rsquo;ve used so many distributions I&amp;rsquo;ve lost count. In fact, I&amp;rsquo;m kind of weirdo about it. I love spinning up new distributions of Linux and testing them out.&lt;/p>
&lt;p>It&amp;rsquo;s as if I drive a particular car every day for commuting but spend evenings and weekends test driving cars from dealerships just to see what they feel like.&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>I like testing out new Linux distros so much I will do it on &lt;strong>&lt;a href="http://bit.ly/JeremyMorganTwitch">my Twitch channel&lt;/a>&lt;/strong> pretty extensively. Subscribe.&lt;/em>&lt;/p></description></item><item><title>The Top 10 Books on DevOps You Need to Read</title><link>https://www.jeremymorgan.com/blog/devops/best-devops-books/</link><pubDate>Thu, 08 Aug 2019 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/devops/best-devops-books/</guid><description>&lt;p>I&amp;rsquo;ve been doing DevOps for a few years now, and &lt;a href="https://pluralsight.pxf.io/PqV2q">I think I&amp;rsquo;m pretty good at it&lt;/a>. Over these years I&amp;rsquo;ve read some books that really helped me along the way, here they are.&lt;/p>
&lt;!-- more -->
&lt;h2 id="1-the-devops-handbook">1. The DevOps Handbook&lt;/h2>
&lt;p>&lt;a href="https://amzn.to/33aHACo">&lt;img src="https://www.jeremymorgan.com/images/best-devops-books/devops-books-01.jpg" alt="DevOps Books">&lt;/a>&lt;/p>
&lt;p>This book is the first one most DevOps professionals start with. I&amp;rsquo;ve read it 3 times so far, and every time I pick up something new. It&amp;rsquo;s a great start that gives a great overview of DevOps.&lt;/p></description></item><item><title>Programming: How to Nail Your Next Coding Interview</title><link>https://www.jeremymorgan.com/blog/programming/how-to-coding-interview/</link><pubDate>Mon, 29 Jul 2019 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/how-to-coding-interview/</guid><description>&lt;p>The room is silent except for the buzzing of the fluorescent lights. The judges across the table are staring at you, expressionless. Some have pen and paper, some don&amp;rsquo;t. They&amp;rsquo;re all staring at you. Your mouth is so dry it feels like you&amp;rsquo;ve been eating sawdust all day. You grab the marker and head for the whiteboard. One judge is staring at a laptop. It&amp;rsquo;s time to show them a quicksort.&lt;/p></description></item><item><title>You Can Get the Source Code for Apollo 11 and Take a Course on It</title><link>https://www.jeremymorgan.com/blog/programming/apollo-moon-landing-source-code/</link><pubDate>Fri, 19 Jul 2019 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/apollo-moon-landing-source-code/</guid><description>&lt;p>In software development you&amp;rsquo;ll hear the term &amp;ldquo;moon shot&amp;rdquo;. If something is a &amp;ldquo;moon shot&amp;rdquo; it&amp;rsquo;s something that&amp;rsquo;s extraordinarily difficult, like landing on the moon. We say this about some app doing something cool, but what about the software that&amp;hellip; landed us on the moon? What was the original &amp;ldquo;moon shot&amp;rdquo; all about? &lt;/p>
&lt;h3 id="the-software-that-put-us-on-the-moon">The Software That Put Us on the Moon&lt;/h3>
&lt;p>&lt;img src="https://www.jeremymorgan.com/images/apollo-moon-landing/margaret-hamilton.jpg" alt="Margaret Hamilton">&lt;/p>
&lt;p>Meet &lt;a href="https://en.wikipedia.org/wiki/Margaret_Hamilton_(software_engineer)">Margaret Hamilton&lt;/a>. She was the director of Software engineering at MIT Instrumentation Laboratory, which was contracted to build the onboard software for the Apollo Space Program. This is her standing with the stack of source code used to launch us to the moon. Today we complain when Visual Studio runs slow. &lt;/p></description></item><item><title>Forget What You've Heard, Now Is the Best Time to Become a Coder</title><link>https://www.jeremymorgan.com/blog/programming/get-started-coding/</link><pubDate>Tue, 16 Jul 2019 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/get-started-coding/</guid><description>&lt;p>Do you want to be a coder? Are you on the fence about trying it? Nervous to get started?&lt;/p>
&lt;p>The time is now. Time to pull the trigger.&lt;/p>
&lt;p>There has never been a better time to become a coder.&lt;/p>
&lt;p>And I&amp;rsquo;m going to tell you how to get started.&lt;/p>
&lt;h3 id="my-history-as-a-coder">My History as a Coder&lt;/h3>
&lt;p>I started writing code professionally in 2002. Before that, I was building (terrible) websites for myself and friends. I even ran a business for a few years crapping out HTML/Perl sites in the late 90s for good money. I built shoddy software in Visual Basic for businesses.&lt;/p></description></item><item><title>Thinking About Reusable Code</title><link>https://www.jeremymorgan.com/blog/programming/reusable-code/</link><pubDate>Mon, 03 Jun 2019 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/reusable-code/</guid><description>&lt;p>The mythical &amp;ldquo;reusable code&amp;rdquo; idea has existed for decades. It showed up shortly after the first lines of code were written. We preach re-usability and sometimes strive for it but it rarely becomes a reality. I&amp;rsquo;ve seen various levels of success with this over the years. Everything from &amp;ldquo;we have a reusable library that 75% of us use&amp;rdquo; to &amp;ldquo;we have shared code libraries here, but never use them in your projects&amp;rdquo;.&lt;/p></description></item><item><title>Transforming Your Organization with the Andon Cord</title><link>https://www.jeremymorgan.com/blog/devops/andon-cord-in-devops/</link><pubDate>Tue, 14 May 2019 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/devops/andon-cord-in-devops/</guid><description>&lt;p>Imagine you&amp;rsquo;re working in a factory. You&amp;rsquo;re assembling Toyotas all day long, then your part won&amp;rsquo;t fit. What&amp;rsquo;s going on? You do this hundreds of times a day but now the bolts won&amp;rsquo;t go in. No reason to panic, you pull a cord to get help. Two co-workers arrive immediately. They find out you have a box of bolts with the wrong thread. They swap out the bolts, and you keep going.&lt;/p></description></item><item><title>Comparing and Syncing IIS Configurations</title><link>https://www.jeremymorgan.com/blog/iis-devops/comparing-iis-configuration/</link><pubDate>Sun, 07 Apr 2019 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/iis-devops/comparing-iis-configuration/</guid><description>&lt;div class="iisblock">
&lt;p>&lt;em>If you want to learn IIS you can go from beginner to expert with my courses in the &lt;a href="https://pluralsight.pxf.io/9WMx30">IIS Skill Path.&lt;/a> Check it out!&lt;/em>&lt;/p>
&lt;/div>
&lt;hr />

&lt;p>Imagine you&amp;rsquo;re an administrator at ACME Widgets and it&amp;rsquo;s time to upgrade your IIS server. You&amp;rsquo;ll just copy over some folders and point the DNS to the new server and be done right? If you&amp;rsquo;ve ever done this before you know that isn&amp;rsquo;t the case. The new IIS server needs to be configured identically to the old one or you&amp;rsquo;re going to have problems, and you don&amp;rsquo;t have time for problems.&lt;/p></description></item><item><title>Using DISM to Create a Repeatable IIS Installation</title><link>https://www.jeremymorgan.com/blog/iis-devops/how-to-dism-repeatable-iis-install/</link><pubDate>Fri, 28 Sep 2018 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/iis-devops/how-to-dism-repeatable-iis-install/</guid><description>&lt;p>&lt;div class="iisblock">
&lt;p>&lt;em>If you want to learn IIS you can go from beginner to expert with my courses in the &lt;a href="https://pluralsight.pxf.io/9WMx30">IIS Skill Path.&lt;/a> Check it out!&lt;/em>&lt;/p>
&lt;/div>
&lt;hr />

Repeatable installs are all the rage in Devops these days. As developers we have this &amp;ldquo;automate everything&amp;rdquo; mentality, and for good reason. In this article I&amp;rsquo;ll show you how you can do that with IIS installation as well. There&amp;rsquo;s no reason to go hunting and pecking around the GUI every time you need to do this. This is the just one of many ways to automate IIS installs, which I&amp;rsquo;ll be covering in the next few weeks.&lt;/p></description></item><item><title>Linux Tutorial: Set up easy file sharing with Samba</title><link>https://www.jeremymorgan.com/blog/linux/how-to-file-sharing-samba/</link><pubDate>Sun, 18 Mar 2018 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/linux/how-to-file-sharing-samba/</guid><description>&lt;p>In this tutorial, I&amp;rsquo;ll show you how easy it is to setup file sharing on your network using SAMBA. You can easily share files between Linux and Windows machines with a pretty minimal amount of setup.&lt;/p>
&lt;h3 id="how-im-using-samba-file-sharing">How I&amp;rsquo;m Using SAMBA File Sharing&lt;/h3>
&lt;p>First, to give you little context, here&amp;rsquo;s how I am using Samba file sharing, with something I recently set up for course development.&lt;/p>
&lt;p>&lt;img src="https://www.jeremymorgan.com/images/how-to-file-sharing-samba/how-to-file-sharing-samba-01.jpg" alt="How to setup file sharing with SAMBA">&lt;/p></description></item><item><title>Which Distribution of Linux Should I Use?</title><link>https://www.jeremymorgan.com/blog/linux/what-distro-linux-should-i-use/</link><pubDate>Tue, 20 Feb 2018 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/linux/what-distro-linux-should-i-use/</guid><description>&lt;p>I&amp;rsquo;m often asked: &amp;ldquo;hey, you&amp;rsquo;re a Linux guy right? What Linux should I use? I have this friend who recommends _____ and I want to know what you think?&amp;rdquo; I usually reply with the same question: what do you want to do? So I decided to make a blog post about it that I can send people instead.&lt;/p>
&lt;h2 id="my-history-with-linux">My History with Linux&lt;/h2>
&lt;p>I should probably preface this article with a little bit of my history with Linux, in case you&amp;rsquo;re reading this and you don&amp;rsquo;t know me (very likely). You can probably skip this if you don&amp;rsquo;t care.&lt;/p></description></item><item><title>Intro to Application Pools in IIS</title><link>https://www.jeremymorgan.com/blog/iis-devops/what-is-an-application-pool/</link><pubDate>Sat, 09 Jul 2016 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/iis-devops/what-is-an-application-pool/</guid><description>&lt;p>&lt;div class="iisblock">
&lt;p>&lt;em>If you want to learn IIS you can go from beginner to expert with my courses in the &lt;a href="https://pluralsight.pxf.io/9WMx30">IIS Skill Path.&lt;/a> Check it out!&lt;/em>&lt;/p>
&lt;/div>
&lt;hr />

Application Pools in IIS can be somewhat of a mystery. Since they&amp;rsquo;re created for you automatically many times Administrators don&amp;rsquo;t give them a second thought. But understanding application pools is crucial to having a good running IIS server.&lt;/p>
&lt;p>I cover this and other IIS Administration topics in my &lt;a href="https://pluralsight.pxf.io/15DZ3D">IIS Administration Fundamentals&lt;/a> course at Pluralsight. Check it out!&lt;/p></description></item><item><title>C#: Easy CRUD for your Web API with Dapper</title><link>https://www.jeremymorgan.com/blog/programming/how-to-dapper-web-api/</link><pubDate>Sat, 13 Feb 2016 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/how-to-dapper-web-api/</guid><description>&lt;p>Full disclosure here: I don&amp;rsquo;t like ORMs. If you&amp;rsquo;re building an enormous enterprise project, you should absolutely use an ORM. If you have data you really care about and a complex, monstrous system using something like Entity Framework can save you a lot of frustration. If you&amp;rsquo;re building a simple application, or some home project it&amp;rsquo;s really unnecessary.&lt;/p>
&lt;p>Recently I found an ORM that I really like: &lt;a href="https://www.nuget.org/packages/Dapper">Dapper&lt;/a>. It&amp;rsquo;s small, simple, and fast. It can be useful on even the smallest of projects. Dapper is a simple object mapper for .Net that extends the IDbConnection interface. It contains helpers that execute queries and map results in a very elegant way. The best part is the performance is close enough to plain old SQL that it&amp;rsquo;s well worth it. It will reduce the amount of code you write as well, by a long shot.&lt;/p></description></item><item><title>Failed Request Tracing with IIS</title><link>https://www.jeremymorgan.com/blog/iis-devops/failed-request-tracing-iis/</link><pubDate>Fri, 08 Jan 2016 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/iis-devops/failed-request-tracing-iis/</guid><description>&lt;p>&lt;div class="iisblock">
&lt;p>&lt;em>If you want to learn IIS you can go from beginner to expert with my courses in the &lt;a href="https://pluralsight.pxf.io/9WMx30">IIS Skill Path.&lt;/a> Check it out!&lt;/em>&lt;/p>
&lt;/div>
&lt;hr />

A great tool I&amp;rsquo;ve discovered recently is the Failed Request Tracing Tool is IIS. If you&amp;rsquo;re building an ASP.Net application and having issues with requests it&amp;rsquo;s a fantastic tool. I&amp;rsquo;ll show you how to use it.&lt;/p>
&lt;p>&lt;strong>I demonstrate this with full details my Course &lt;a href="http://bit.ly/IISFundamentals">IIS Administration Fundamentals&lt;/a>. Check it out now!&lt;/strong>&lt;/p></description></item><item><title>Linux Tutorial: How to Restore Arch Linux Boot after Installing Windows</title><link>https://www.jeremymorgan.com/blog/linux/how-to-restore-arch-linux-after-installing-windows/</link><pubDate>Sat, 01 Aug 2015 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/linux/how-to-restore-arch-linux-after-installing-windows/</guid><description>&lt;p>This week they released the RTM Version of Windows 10, and I decided to install it on my laptop. Most of my development is done on my desktop Mac at home, but the laptop is good for collaborating, coffee shop coding, etc. I decided Windows 10 and Visual Studio 2015 would be good for this. There&amp;rsquo;s only one issue: I also have Arch Linux on this laptop, and it&amp;rsquo;s dialed in very nice and I definitely don&amp;rsquo;t want to remove it.&lt;/p></description></item><item><title>Web Development: Brief Introduction to REST</title><link>https://www.jeremymorgan.com/blog/programming/intro-restful-web-services/</link><pubDate>Thu, 21 May 2015 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/intro-restful-web-services/</guid><description>&lt;p>Perhaps you&amp;rsquo;ve seen the term REST being thrown around lately and have been a little curious what it&amp;rsquo;s all about. If that&amp;rsquo;s the case, or you know a little about it but never used it, this article is for you. Today I&amp;rsquo;m going to give a small overview of what REST services are, and why it&amp;rsquo;s awesome.&lt;/p>
&lt;h2 id="so-long-rpc-hello-rest">So long RPC, hello REST&lt;/h2>
&lt;p>If you&amp;rsquo;ve been in the web game a while, you may remember when RPC took over the web about 10 years ago. I myself remember it being one of the most exciting things of it&amp;rsquo;s time. Although the pattern has been around since the 80s it started popping up on the web in the early 2000s, and for it&amp;rsquo;s time RPC was a great solution. In fact it&amp;rsquo;s still in use all over the place.&lt;/p></description></item><item><title>How to Write Better Unit Tests</title><link>https://www.jeremymorgan.com/blog/programming/how-to-write-better-unit-tests/</link><pubDate>Sun, 24 Aug 2014 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/how-to-write-better-unit-tests/</guid><description>&lt;p>In working with some unit testing fairly extensively lately, I&amp;rsquo;ve gathered some guidelines I&amp;rsquo;ve tried to stick with over the years for writing better tests. Remember poorly written tests are a waste of time, and cause major problems down the road. It&amp;rsquo;s best to keep some of these guidelines in mind.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Unit tests should not be written to pass&lt;/strong> - They should be written to fail. You can make any set of tests pass in minutes but you&amp;rsquo;re only cheating yourself.&lt;/li>
&lt;li>&lt;strong>Tests should only test one thing&lt;/strong> - You should be testing a single method with a single function. If not you may be violating the &lt;a href="https://www.jeremymorgan.com/blog/programming/single-responsibility-principle/">Single Responsibility Principle&lt;/a>&lt;/li>
&lt;li>&lt;strong>Readability in your tests&lt;/strong>- make sure they&amp;rsquo;re commented and easy to understand, just like any other code.&lt;/li>
&lt;li>&lt;strong>Good Naming conventions&lt;/strong> - Again tests should be just like any other code - easy for humans to understand.&lt;/li>
&lt;li>&lt;strong>Asserts are separated from actions&lt;/strong> - Your assert should be looking for a result, and not performing logical operations&lt;/li>
&lt;li>&lt;strong>Use concrete inputs&lt;/strong>- Don&amp;rsquo;t use any dynamic data for inputs, things like date() can introduce variance.&lt;/li>
&lt;li>&lt;strong>Group locations of tests&lt;/strong> - from a logical standpoint this makes things easier to find when there aren&amp;rsquo;t errors pointing towards the problem.&lt;/li>
&lt;li>&lt;strong>Good tests are isolated from everything&lt;/strong> - You should have no reliance on other tests, environment settings, etc. This creates multiple points of failure.&lt;/li>
&lt;li>&lt;strong>Do not include private methods&lt;/strong> - They are implementation and should not be included in Unit Tests&lt;/li>
&lt;li>&lt;strong>Don&amp;rsquo;t connect to databases or data sources&lt;/strong> - This is unreliable because you cannot be certain the data served will always be the same, and can create points of failure.&lt;/li>
&lt;li>&lt;strong>No more than one mock per test&lt;/strong> - Again we&amp;rsquo;re trying to eliminate points of failure and inconsistenties.&lt;/li>
&lt;li>&lt;strong>Unit tests are not integration tests&lt;/strong> - You want to test results, not implmentation with Unit Tests.&lt;/li>
&lt;li>&lt;strong>Tests must be deterministic&lt;/strong> - You need a solid predictable result, so if it only passes sometimes, it&amp;rsquo;s not done.&lt;/li>
&lt;li>&lt;strong>Keep your tests idempotent&lt;/strong> - you should be able to run it multiple times without changing any outcomes, and it should not change any data or increment anything. One time or a million times should have the same effect.&lt;/li>
&lt;li>&lt;strong>Classes only test one class at a time, methods only test one method at a time.&lt;/strong> - An organizational method to pinpoint problems when they arise and help you identify dependencies in testing.&lt;/li>
&lt;li>&lt;strong>Include exceptions in your tests&lt;/strong>- You&amp;rsquo;re going to have exceptions so don&amp;rsquo;t ignore them, use them.&lt;/li>
&lt;li>&lt;strong>Don&amp;rsquo;t test functionality of 3rd party libraries with your own tests&lt;/strong> - Most quality libraries should have their own tests. If not consider mocks to produce consistent results&lt;/li>
&lt;li>&lt;strong>Always limit values&lt;/strong> - When working with values be mindful of your limits and set them (min max) for maximum consistency.&lt;/li>
&lt;li>&lt;strong>Tests should not require configuration or custom setup&lt;/strong> - Anyone should be able to jump in and make your tests work. &amp;ldquo;Works on my machine&amp;rdquo; should never apply here.&lt;/li>
&lt;/ul>
&lt;p>I hope this helps some of you out there learning and working with Unit Tests.&lt;/p></description></item><item><title>Dotnet: Common C# Interview Questions</title><link>https://www.jeremymorgan.com/blog/programming/c-sharp-interview-questions/</link><pubDate>Sun, 03 Aug 2014 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/c-sharp-interview-questions/</guid><description>&lt;p>I was reading a post about some common C# interview questions, and thought I&amp;rsquo;d share some of mine. These are questions that I asked in interviews, or was asked in past interviews. Try them out and see you how you do! I&amp;rsquo;m not going to post the answers here, if you don&amp;rsquo;t know them, find out!&lt;/p>
&lt;h3 id="common-c-and-net-interview-questions">Common C# (and .Net) Interview Questions&lt;/h3>
&lt;ul>
&lt;li>What are the different types of collections in .Net?&lt;/li>
&lt;li>What are the benefits offered by generics as opposed to other collections?&lt;/li>
&lt;li>What is the difference between a class and a struct?&lt;/li>
&lt;li>When calling a function, are parameters passed by value or by reference?&lt;/li>
&lt;li>What are the different ways to pass a parameter by reference?&lt;/li>
&lt;li>What are the mechanisms for maintaining state in an asp.net application?&lt;/li>
&lt;li>Describe inheritance. Describe different ways you can implement inheritance.&lt;/li>
&lt;li>What is dependency injection?&lt;/li>
&lt;li>How do you override a static method?&lt;/li>
&lt;li>Name some of the parts of the page life cycle in ASP.NET.&lt;/li>
&lt;li>Where I would validate something like an email address?&lt;/li>
&lt;li>What is the difference between public, static and void?&lt;/li>
&lt;li>What are Jagged Arrays?&lt;/li>
&lt;li>What is serialization?&lt;/li>
&lt;li>Can &amp;ldquo;this&amp;rdquo; be used within a static method?&lt;/li>
&lt;li>What is the difference between Array and Arraylist?&lt;/li>
&lt;li>Can a private virtual method be overridden?&lt;/li>
&lt;li>Describe the accessibility modifier &amp;ldquo;protected internal&amp;rdquo;.&lt;/li>
&lt;li>What are the differences between System.String and System.Text.StringBuilder?&lt;/li>
&lt;li>What&amp;rsquo;s the difference between the System.Array.CopyTo() and System.Array.Clone()?&lt;/li>
&lt;li>What&amp;rsquo;s the difference between an interface and abstract class?&lt;/li>
&lt;li>What is the difference between Finalize() and Dispose() methods?&lt;/li>
&lt;li>What&amp;rsquo;s an object pool?&lt;/li>
&lt;li>What is the difference between method overriding and method overloading?&lt;/li>
&lt;li>What is the difference between a Struct and a Class?&lt;/li>
&lt;li>What are Indexers?&lt;/li>
&lt;/ul>
&lt;h3 id="ms-sql">MS SQL&lt;/h3>
&lt;ul>
&lt;li>What are the different ways for storing behaviors in SQL?&lt;/li>
&lt;li>What are the different kinds of SQL joins? When would you use each?&lt;/li>
&lt;li>If you have a slow running query that looks at seldom changed data, how might you speed it up?&lt;/li>
&lt;li>Describe the different types of joins?&lt;/li>
&lt;li>What is the no-lock feature?&lt;/li>
&lt;li>How do you make sure you maintain your referential integrity?&lt;/li>
&lt;li>He asked me to describe the Controller?&lt;/li>
&lt;li>What is a clustering index?&lt;/li>
&lt;li>How do you handle an error in a SQL query?&lt;/li>
&lt;/ul>
&lt;p>{% include custom/asides/dotnet-newsletter-banner.html %}&lt;/p></description></item><item><title>Programming: Properties vs Fields in C#</title><link>https://www.jeremymorgan.com/blog/programming/properties-vs-fields/</link><pubDate>Sun, 04 May 2014 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/properties-vs-fields/</guid><description>&lt;p>&lt;em>Note: Updated for 2023&lt;/em>&lt;/p>
&lt;p>One of the areas that cause a lot of confusion for new C# developers is the idea of properties and fields. It&amp;rsquo;s an easy thing to mess up or get confused about. Here are some general guidelines to help you decide how to use these members in your project.&lt;/p>
&lt;h2 id="fields-the-basics">Fields: The Basics&lt;/h2>
&lt;p>Fields are variables that belong to a Class or a Struct. They&amp;rsquo;re like little storage containers that hold the data for your class.&lt;/p></description></item><item><title>Programming: Smell It Before You Eat It</title><link>https://www.jeremymorgan.com/blog/programming/smell-it-before-you-eat-it/</link><pubDate>Tue, 29 Apr 2014 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/smell-it-before-you-eat-it/</guid><description>&lt;p>Whether you&amp;rsquo;re developing for a personal project, small business or Fortune 100, you should take the time to make sure your changes aren&amp;rsquo;t going to break things. In times past this usually meant spending lots of money. These days the only thing you&amp;rsquo;ll need to spend for quality is time, and not much of it.&lt;/p>
&lt;h3 id="how-the-web-commando-publishes-a-web-page">How the web commando publishes a web page&lt;/h3>
&lt;p>We all know how the web commando works. You have a website with files on it, and you download them via FTP (gotta have that latest copy!) edit it in a text editor and push it back up. .Net folks: edit and quick publish. You open up the browser and check it to make sure it looks good, and move on.&lt;/p></description></item><item><title>Just How Fast Are GitHub Pages?</title><link>https://www.jeremymorgan.com/blog/programming/how-fast-are-github-pages/</link><pubDate>Fri, 07 Feb 2014 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/how-fast-are-github-pages/</guid><description>&lt;p>Recently GitHub rolled out some improvements to &lt;a href="https://github.com/blog/1715-faster-more-awesome-github-pages">GitHub Pages&lt;/a>, their free static page hosting service. As this is a static site I&amp;rsquo;ve recently had a lot of interest in static hosts and seeing which ones might be the best. I decided to do a comparison and see how some major services, including GitHub pages serve up static content. I was a bit surprised.&lt;/p>
&lt;h3 id="my-current-hosting">My Current Hosting&lt;/h3>
&lt;p>Currently I&amp;rsquo;m hosted at &lt;a href="https://affiliates.arvixe.com/track.php?id=5348&amp;amp;tid1=homepage">Arvixe Hosting&lt;/a> and I couldn&amp;rsquo;t be happier with it. The service is great, speed is great and it&amp;rsquo;s an excellent package. One thing I&amp;rsquo;ve noticed about them, is they serve up static pages like this one surprisingly fast:&lt;/p></description></item><item><title>Programming: Hazardous Attitudes in Software Development</title><link>https://www.jeremymorgan.com/blog/programming/hazardous-attitudes-in-software-development/</link><pubDate>Sat, 07 Dec 2013 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/hazardous-attitudes-in-software-development/</guid><description>&lt;p>With software projects it&amp;rsquo;s rare that a failure points to a single cause or person. Usually it&amp;rsquo;s a culmination of many smaller mistakes. With technology and formal project management best practices are usually well documented and available. One thing that isn&amp;rsquo;t talked about as much is attitude. The attitude of persons in your group or your group as a whole is one of the biggest factors of your success.&lt;/p>
&lt;p>As a volunteer firefighter my training often intersects with my career in development. Today while taking a class (L-180 Wildland Fire Leadership Development) I learned about a set of &amp;ldquo;hazardous attitudes&amp;rdquo; that get teams in trouble. Reading through it saw a parallel with software development. These attitudes on the fireground can get yourself or others killed so they&amp;rsquo;re especially important. Why not apply them to software development?&lt;/p></description></item><item><title>Web Development: Top Free Image Optimization Tools</title><link>https://www.jeremymorgan.com/blog/programming/free-image-optimization-tools/</link><pubDate>Tue, 17 Sep 2013 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/free-image-optimization-tools/</guid><description>&lt;p>Making your images load faster is extremely important for page load performance on your site. It makes your pages load faster, which makes for happier visitors, and better search engine performance for your site. Page load time is also a key factor in your bounce rate. Here are some tools I use commonly to reduce image size on my sites.&lt;/p>
&lt;h2 id="mac-osx">Mac OSX&lt;/h2>
&lt;p>Macs and image editing go hand in hand. A couple of the tools I really like are listed here.&lt;/p></description></item><item><title>Linux: Why Linux Mint is Awesome</title><link>https://www.jeremymorgan.com/blog/linux/linux-mint-is-awesome/</link><pubDate>Tue, 10 Sep 2013 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/linux/linux-mint-is-awesome/</guid><description>&lt;p>Linux Mint is one of the most under-rated Linux distributions out there, yet it provides a lot of value, even for seasoned Linux hackers. If you haven&amp;rsquo;t tried it out yet, you&amp;rsquo;re missing out.&lt;/p>
&lt;!-- more -->
&lt;h3 id="what-do-people-say-about-linux-mint">What do people say about Linux Mint?&lt;/h3>
&lt;p>&lt;img src="https://www.jeremymorgan.com/images/linux-mint-is-awesome/linux-mint-og.jpg" alt="Linux Mint">&lt;/p>
&lt;p>The Linux community doesn&amp;rsquo;t talk about Mint too much. What most people say is it&amp;rsquo;s bloated, too Windows-like and not very modern.&lt;/p>
&lt;p>They also complain about non-free software codecs and GNU stuff. It&amp;rsquo;s for &amp;ldquo;newbs&amp;rdquo;. But what if you don&amp;rsquo;t care about any of that?&lt;/p></description></item><item><title>Common Code Smells with Programming</title><link>https://www.jeremymorgan.com/blog/programming/common-code-smells/</link><pubDate>Wed, 28 Aug 2013 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/common-code-smells/</guid><description>&lt;p>You may have heard the term &amp;ldquo;code smells&amp;rdquo; lately, it seems its being talked about frequently again. In this short post I&amp;rsquo;ll explain what they are, and a few of them you may run across.&lt;/p>
&lt;h2 id="what-is-a-code-smell">What is a Code Smell?&lt;/h2>
&lt;p>A Code Smell is just a fancy word for an indicator of a bigger problem with your code. It&amp;rsquo;s language agnostic because you can have code smells in any application. It&amp;rsquo;s just a sign of bad construction that you can spot fairly quickly.&lt;/p></description></item><item><title>Programming: Dont Build El Caminos</title><link>https://www.jeremymorgan.com/blog/programming/dont-build-el-caminos/</link><pubDate>Wed, 29 May 2013 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/dont-build-el-caminos/</guid><description>&lt;p>The quickest way to disappoint everyone is by trying to please everyone and software is no different. Sometimes trying to make a &amp;ldquo;one size fits all&amp;rdquo; solution can get you into trouble.&lt;/p>
&lt;h3 id="remember-the-el-camino">Remember the El Camino?&lt;/h3>
&lt;p>Back in the late 60s GM made the El Camino, which was part car and part truck. While they were wildly popular with some, the fact is it wasn&amp;rsquo;t a car or a truck and didn&amp;rsquo;t do either very well.&lt;/p></description></item><item><title>Programming: The Single Responsibility Principle</title><link>https://www.jeremymorgan.com/blog/programming/single-responsibility-principle/</link><pubDate>Wed, 20 Mar 2013 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/single-responsibility-principle/</guid><description>&lt;p>There&amp;rsquo;s a lot of genius in simplicity. This applies to many things in life and definitely in software development. SRP, or Single Responsibility Principle is one of the foundations building better software. It&amp;rsquo;s a good way to keep code working as expected, and to avoid painting yourself in a corner.&lt;/p>
&lt;!-- more -->
&lt;h3 id="do-one-thing-and-do-it-well">Do one thing and do it well&lt;/h3>
&lt;p>The Single Responsibility Principle guides simplicity, and the rule itself is strikingly simple: There should never be more than one reason for a class to change. This is easier said than done of course, but the idea is if you have more than one reason to change a class, then you should break it into two classes.&lt;/p></description></item><item><title>We're here to put a dent in the universe</title><link>https://www.jeremymorgan.com/blog/general/a-dent-in-the-universe/</link><pubDate>Mon, 04 Feb 2013 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/general/a-dent-in-the-universe/</guid><description>&lt;p>The famous words of Steve Jobs have been ringing in my head a lot since my Dad passed away last week. He and Steve Jobs were not very much alike, in fact probably complete opposites. Dad wasn&amp;rsquo;t much of a dreamer or rock the boat kind of guy, and believed in treating everyone with respect. His style was not pushing people to be great but encouraging them to want it on their own. But they both shared one thing: wanting to make people&amp;rsquo;s lives better. Steve wanted to help strangers, but Dad made sure he took care of those around him.&lt;/p></description></item><item><title>Programming: What is a Polyglot Programmer?</title><link>https://www.jeremymorgan.com/blog/programming/what-is-a-polyglot-programmer/</link><pubDate>Thu, 17 Jan 2013 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/what-is-a-polyglot-programmer/</guid><description>&lt;p>The similarities between spoken or written language and computer code are amazing. Someone writing code can range from a terrible amateur to a polished professional. When speaking someone can range from barely comprehensible to giving speeches like an art form. Both an author and a software developer are artists in their own right, if they choose to be.&lt;/p>
&lt;p>The term &amp;ldquo;Polyglot&amp;rdquo; originated with spoken language to describe someone who is fluent in many languages. Surely few need convincing of the benefits of this: they enable greater travel opportunities and communication with a wider range of people with each language you know.&lt;/p></description></item><item><title>An Introduction to Object Oriented Programming</title><link>https://www.jeremymorgan.com/blog/programming/an-introduction-to-object-oriented-programming/</link><pubDate>Thu, 31 May 2012 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/an-introduction-to-object-oriented-programming/</guid><description>&lt;p>Today I&amp;rsquo;m going to talk about Object Oriented Programming (OOP). This is the first in a series of articles that will aim to teach you more about OOP and how you can use it to develop better software.&lt;/p>
&lt;h3 id="what-well-learn-with-this-article">What we&amp;rsquo;ll learn with this article:&lt;/h3>
&lt;ol>
&lt;li>What is OOP?&lt;/li>
&lt;li>What is an object?&lt;/li>
&lt;li>What is a class?&lt;/li>
&lt;li>What is inheritance?&lt;/li>
&lt;li>What is an interface?&lt;/li>
&lt;/ol>
&lt;p>This quick intro will lay a foundation of understanding so you can start learning this exciting way of developing.&lt;/p></description></item><item><title>Setting up Linux: Use a Package Manager or Build From Source?</title><link>https://www.jeremymorgan.com/blog/programming/setting-up-linux-use-a-package-manager-or-build-from-source/</link><pubDate>Sat, 12 May 2012 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/setting-up-linux-use-a-package-manager-or-build-from-source/</guid><description>&lt;p>There are a few different ways to do things in the Linux world and if you ask for the best way, you&amp;rsquo;ll get several different answers. Linux folk tend to be pretty opinionated and become polarized about issues, which creates difficulties and makes for one more thing to add to the list of reasons the masses don&amp;rsquo;t publicly adopt Linux.&lt;/p>
&lt;p>How you build your software is one of those dividing issues. People who favor package managers talk of ease of upgrading, not thinking about dependencies and stability. People who favor building from source talk of control and peak performance. The purpose of this article is to help you figure out which camp you should be in.&lt;/p></description></item><item><title>Old G4 + Debian Linux = Dirt Cheap Development Machine</title><link>https://www.jeremymorgan.com/blog/programming/old-g4-debian-linux-dirt-cheap-development-machine/</link><pubDate>Mon, 15 Aug 2011 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/old-g4-debian-linux-dirt-cheap-development-machine/</guid><description>&lt;p>So last week my laptop died on me. Motherboard took a dive, and unfortunately that was my &amp;ldquo;main machine&amp;rdquo;.  I know it takes me quite some time to find and fix up a machine, and decided a quick interim machine needed to be built. So I hit craigslist.&lt;/p>
&lt;p>I quickly found that if I wanted to spend 4-500 dollars on a laptop I&amp;rsquo;d have plenty to choose from. Most have Turion processors, or are some cheap knockoff. I just needed to finish up some PHP work, and these machines would work fine, but eventually I&amp;rsquo;m going to purchase a nice 17&amp;quot; laptop with all the bells and whistles and have a $500 machine that&amp;rsquo;s going to collect dust.&lt;/p></description></item><item><title>7 Ways to Make your Website Faster</title><link>https://www.jeremymorgan.com/blog/programming/7-ways-to-make-your-website-faster/</link><pubDate>Thu, 31 Mar 2011 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/7-ways-to-make-your-website-faster/</guid><description>&lt;p>Having a fast website has tons of advantages. Besides being better for SEO and getting crawled by search engines, it&amp;rsquo;s without a doubt better for your visitors. So here I will give a list that will explore some free ways to make your website faster.&lt;/p>
&lt;p>&lt;img src="https://www.jeremymorgan.com/images/7-ways-website-faster/how-to-make-your-website-faster-01.jpg" alt="How to make your website faster">&lt;/p>
&lt;h3 id="1-image-optimization">1. Image Optimization&lt;/h3>
&lt;p>Undoubtedly one of the most important areas to focus on when optimizing is images. They&amp;rsquo;re considerably larger than text files, and small image optimizations can go a long way towards making a site faster. Some ways you can do this:&lt;/p></description></item><item><title>A Geek's Trip Down Memory Lane - The BBS (Bulletin Board System)</title><link>https://www.jeremymorgan.com/blog/tech/a-geeks-trip-down-memory-lane/</link><pubDate>Mon, 27 Jul 2009 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/tech/a-geeks-trip-down-memory-lane/</guid><description>&lt;p>While browsing a forum recently, I found a thread that really made me reminisce. Someone has asked about browsing the internet before it was popular, and what it was like. Before the internet was in every home, before we were tweeting or facebooking, instant messaging or watching videos, the internet was a much simpler place.&lt;/p>
&lt;p>In 1988 or 89, I remember seeing the &amp;ldquo;internet&amp;rdquo; for the first time. It was at my buddy Ryan&amp;rsquo;s house (RIP) and we were both budding computer nerds, who loved learning about the latest technologies. He had somehow &amp;ldquo;acquired&amp;rdquo; access to telenet, and we used it to browse bulletin boards all over the country, without paying long distance fees.&lt;/p></description></item><item><title>Programming: How to use OR operator with Strings in C#</title><link>https://www.jeremymorgan.com/blog/programming/how-to-use-or-operator-with-strings-in-c/</link><pubDate>Mon, 08 Dec 2008 00:00:00 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/how-to-use-or-operator-with-strings-in-c/</guid><description>&lt;p>I just had this problem tonight, so I thought I&amp;rsquo;d share the solution. In many languages you can just drop in a string and compare it like this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="err">$&lt;/span>&lt;span class="n">city&lt;/span> &lt;span class="p">==&lt;/span> &lt;span class="s">&amp;#34;Portland&amp;#34;&lt;/span> &lt;span class="p">||&lt;/span> &lt;span class="err">$&lt;/span>&lt;span class="n">city&lt;/span> &lt;span class="p">==&lt;/span> &lt;span class="s">&amp;#34;Seattle&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// do something if city is Portland or Seattle&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>&lt;span class="k">else&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// do something else&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>And this works just fine. But in C#, strings are treated as &lt;em>objects&lt;/em>, so you have to do the same comparison as such:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="p">((&lt;/span>&lt;span class="n">city&lt;/span> &lt;span class="p">==&lt;/span> &lt;span class="s">&amp;#34;Portland&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">||&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">city&lt;/span> &lt;span class="p">==&lt;/span> &lt;span class="s">&amp;#34;Seattle&amp;#34;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// do something if city is Portland or Seattle&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>&lt;span class="k">else&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// do something else&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You have to put the parenthesis around it.&lt;/p></description></item><item><title>How to Learn Computer Programming</title><link>https://www.jeremymorgan.com/blog/programming/how-to-start-programming-for-free/</link><pubDate>Thu, 27 Dec 2007 13:29:51 +0000</pubDate><guid>https://www.jeremymorgan.com/blog/programming/how-to-start-programming-for-free/</guid><description>&lt;p>So you want to be a computer programmer? Want to write software? Here is how you can get started with this awesome hobby / profession right away, for next to nothing. I first wrote this article back in 2008 and a lot has changed since then, so I decided to start it over completely.&lt;/p>
&lt;p>&lt;em>Last update in 2016&lt;/em>&lt;/p>
&lt;h2 id="tips-for-getting-started">Tips for getting started&lt;/h2>
&lt;p>&lt;img src="https://www.jeremymorgan.com/images/how-to-learn-computer-programming/computer-programming-1.jpg" alt="How to learn Computer Programming">&lt;/p>
&lt;p>If I were to narrow down the two things that will ultimately determine your success here it&amp;rsquo;s this:&lt;/p></description></item></channel></rss>