Module 1 - Introduction
1. Welcome to the course2. Why Go3. Why start and build a blog?4. What about React/Vue/Angular?5. Getting setup and source filesModule 2 - Tech Stack Walkthrough
1. Introduction to Golang Part 12. Introduction to Golang Part 23. Introduction to Golang Part 34. Structuring Golang Applications5. Templating with Templ6. Just enough interactivity with HTMX7. Getting started with postgres8. Servers, routers and endpointsModule 3 - Creating the MVP
1. What are the minimal requirements?2. Doing some initial plumbing3. Embedding static assets4. Creating our views5. Tailwind & Utility-first CSS6. Embedding Assets7. Styling the Landing Page8. Styling the Article PageModule 4 - Managing Content
1. Choose your own adventure2. Writing in Markdown3. Parsing Markdown to HTML4. Frontmatter and Meta Information5. Serving the Content6. Making our Code examples look niceModule 5 - Adding the Database
1. What is a Migration?2. Our first Migration: Posts Table3. Creating the Database Layer4. Showing the Latest Posts5. Slugs and Human Readable URLsModule 6 - Managing the Blog
1. What are the minimum requirements?2. A new layout approaches3. Creating a rough outline4. Our second migration: Users Table5. Introduction to authentication6. Storing passwords securely7. Authenticating users8. Remember me9. Managing posts using a hypermedia API10. Our third migration: Altering Posts Table11. Only show posts marked readyModule 7 - Adding Subscribers
1. What are the minimum requirements?2. Our fourth migration: Subscribers Table3. Creating the subscription form4. Adding some interactivity with HTMX5. Saving new subscribers in the database6. Verifying subscriber emails7. Our fifth migration: Tokens Table8. Email validation view9. Email validation tokens10. Sending validation emails with SES11. Making it all come togetherIntroduction
Why Go
Summary
In this video, I explain why Go is an excellent choice for development. I emphasize its simplicity, comprehensive standard library, and deployment advantages. I discuss how Go's single binary compilation makes deployment straightforward, and highlight its high performance and low memory footprint. I also address how Go can help avoid the dependency fatigue common in languages like JavaScript.
Transcript
So why should you use Go? If we ignore the high salaries and the vast diversity of projects you can work on, Go is, in its essence, a very simple language that most people can pick up very fast. You generally have one way of doing things, which means you can focus on building the product and not the semantics of the language. While learning in and of itself can be fun, you reach a certain point in your career where the projects you work on should be more interesting than the technologies you used to build it with. If you've done any development in languages like JavaScript, you have very likely experienced a certain amount of fatigue, where you have to upgrade dependencies, you have trouble keeping up with the ecosystem, and so on, so on. You will generally experience that big guilt that you can leave a project for six months, come back to it, and pick up just where you started. But being simple is not enough. We also need to be able to build things. And this is where the standard library comes in. This contains everything you need to build web applications. So you will still use some external packages. But you have a solid foundation from which you can build pretty much everything without having it like break consistent, uh, consistently. And you are, you are certain that it's secure and it's maintained by people who know what they're doing. And as you see throughout this course, and especially if you're new to programming, developing application iterations. Being able to rely heavily on the standard library makes this process much more efficient as you don't have to go out and find packages, you don't have to debate between a lot of different packages. If you need something with JSON, it's there in the standard library. So we will be using the standard library heavily and just use some external packages sparingly whenever we need to. Having our application live only on a local computer is only going to be fun for so long. We want other people to use it as well. Lots of businesses have been created to solve this problem of getting your application live on the internet. But with Go and other languages that compile to a single binary, it's a different story. Most likely you would want to deploy your application to a Linux environment, which is where 99 percent of all applications lives. Go will compile to a single program that you can upload to any Linux environment and have it run. And should you want to containerize it using Docker, well Go works great here as well. This is very different from something like Python or JavaScript, where you have to distribute all of the source files along with any libraries they might need. So, having a single binary would also be great for version control and management of applications, since everything becomes, every release or build we do becomes a self contained version in and of itself. So, as you will see later on in this course, deployment actually becomes quite easy. I should probably also mention that Go is very performant. It has a low memory footprint and a great concurrency model. So while you can squeeze out a lot of users on like a small virtual private server, you can also go for the serverless route and have big savings because Go would be very fast and it would use low memory, which is kind serverless environment, right? So either option is available to you. Whatever it needs and while you probably won't need concurrency in your day to day jobs it's there and it's very easy to get started with compared to other languages so yeah fast performance and can increase a lot of savings.