atlas news
    
Matt Layman : Python
17  janvier     00h00
Building SaaS with Python and Django #212.2
   In this episode, we continued on the sign up workflow simplification. The focus of this stream was on adding the background task that will send the magic link email to allow sign in. This is the second half of the stream because my internet cut out.
    00h00
Signin Email - Building SaaS #212.1
   In this episode, we continued on the sign up workflow simplification. The focus of this stream was on adding the background task that will send the magic link email to allow sign in.
10  janvier     00h00
Simplified Signup - Building SaaS #211
   In this episode, we began an update to the signup process to simplify things. I am replacing email and password with just email. Users will receive ’magic links’ via their email client to sign in. To do this, we are using django sesame.
27  décembre     00h00
Optimizing SQLite - Building SaaS #210
   In this episode, when worked on the newly migrated JourneyInbox site and focused on the database. Since me moved from Postgres to SQLite, I needed to make sure that SQLite was ready for users. We examined common configuration to optimize the database and applied that config to JourneyInbox.
20  décembre     00h00
Bootstrap Kamal On Droplet - Building SaaS #209.1
   In this episode, I worked to finish the cloud migration to DigitalOcean for JourneyInbox. We started the stream by bootstrapping Kamal on the server. I hit network issues so this stream is split into multiple parts and is of lower quality than normal.
    00h00
Docker Image For Kamal - Building SaaS #209.2
   In this episode, the second portion of the stream worked on fixing up the Docker image so that we could get the DigitalOcean droplet functional. This is the second stream chunk because I was having network issues and the first stream cut out.
    00h00
Postgres To SQLite - Building SaaS #209.3
   In this episode, the third portion of the stream covers how I migrated my Heroku backed Postgres database to SQLite. I finished the migration of my app from running on Heroku to running on DigitalOcean.
13  décembre     00h00
1Password and DigitalOcean Droplet - Building SaaS #208
   In this episode, I continued a migration of my JourneyInbox app from Heroku to DigitalOcean. We configured the secrets using Password and created the droplet that will host the app.
12  décembre     00h00
UV and Ruff: Next-gen Python Tooling
   Dive into the dynamic duo of modern Python development UV and Ruff
22  novembre     00h00
Huey Background Worker - Building SaaS #207
   In this episode, I continued a migration of my JourneyInbox app from Heroku to DigitalOcean. I switched how environment configuration is pulled and converted cron jobs to use Huey as a background worker. Then I integrated Kamal configuration and walked through what the config means.
15  novembre     00h00
Heroku To DigitalOcean - Building SaaS #206
   In this episode, I began a migration of my JourneyInbox app from Heroku to DigitalOcean. The first step to this move, since I’m going to use Kamal, is to put the app into a Docker image. We got the whole app into the Docker image, then cleaned up local development and the CI system after making...
06  novembre     00h00
Deploy Your Own Web App With Kamal 2
   Kamal offers zero downtime deploys, rolling restarts, asset bridging, remote builds, accessory service management, and everything else you need to deploy and manage your web app in production with Docker. Originally built for Rails apps, Kamal will work with any type of web app that can be...
18  octobre     00h00
Epic Debugging, Hilarious Outcome - Building SaaS #205
   In this episode, I dug into an issue with sign up. What I thought was going to be a minor issue to fix turned into a massively intense debugging session. We ended up going very deep with the django allauth package to understand what was going on.
27  septembre     00h00
Postgres to SQLite - Building SaaS #204
   In this episode, we worked on the cloud migration’s data strategy. I focused on how to convert a Postgres database into a SQLite database and planned out the process that I will follow to do the actual migration.
20  septembre     00h00
Docker Go, JS, Static Files - Building SaaS #203
   In this episode, we continued on the cloud migration path. We need to build a Docker container with all the necessary static files. Some of these come from Go via Hugo for a content blog. Some comes from JavaScript via Tailwind for CSS. Some come from Python via Sphinx for documentation. All need...
13  septembre     00h00
Cloud Migration Beginning - Building SaaS #202
   In this episode, we started down the path of migrating School Desk off of Heroku and onto Digital Ocean. Most of the effort was on tool changes and beginning to make a Dockerfile for deploying the app to the new setup.
06  septembre     00h00
Kamal On A Droplet - Building SaaS #201
   In this episode, we continued working with the Kamal deploy tool. Last time, we build a demo image. With this session, we created a Digital Ocean Droplet i.e., VM and deployed to that. Along the journey, we learned a lot about how Kamal operates.
30  août     00h00
Kamal - Building SaaS #200
   In this episode, we pulled out a new tool. We spent the session using Kamal, a tool to deploy web apps directly to servers. Kamal offers a complete tool set to get apps running on bare metal or cloud machines. We played with the tool to see how far we go to get an app deployed to a new server.
29  août     00h00
No Frills, Just Go: Standard Library Only Web Apps
   How much can you build in Go with zero extra packages What is possible using nothing more than Go’s standard library In this talk, you’re going to find out
26  août     00h00
Layman’s Guide to Python Built-in Functions
   Quick Jump List A: abs, aiter, all, anext, any, ascii, B: bin, bool, breakpoint, bytearray, bytes, C: callable, chr, classmethod, compile, complex, D: delattr, dict, dir, divmod E: enumerate, eval, exec, F: filter, float, format, frozenset, G: getattr, globals, H: hasattr, hash, help, hex, I: id,...
23  août     00h00
Golang Middleware and DBs - Building SaaS #199
   In this episode, we continued the break from JourneyInbox to look through more of the Go standard library. In this session, we talked about middleware, request context, and using databases.
16  août     00h00
More Go Standard Library - Building SaaS #198
   In this episode, we continued the break from JourneyInbox to look through more of the Go standard library. In this session, we explored JSON serialization, Go template support, and embedding of static files for easy access.
15  août     00h00
PDF Text Extraction With Python
   Is your data locked up in portable document format PDFs In this talk we’re going to explore methods to extract text and other data from PDFs using readily available, open source Python tools such as pypdf , as well as techniques such as OCR optical character recognition and table extraction....
09  août     00h00
Go Standard Library App - Building SaaS #197
   In this episode, we are taking a break from JourneyInbox and exploring what kind of Go app we can make by just using the Go standard library.
    00h00
Go Standard Library App - Building SaaS #197.2
   In this episode, we are taking a break from JourneyInbox and exploring what kind of Go app we can make by just using the Go standard library. This is a continuation after an internet disconnection.
    00h00
Go Standard Library App - Building SaaS #197.3
   In this episode, we are taking a break from JourneyInbox and exploring what kind of Go app we can make by just using the Go standard library. This is another continuation after an internet disconnection.
    00h00
Go Standard Library App - Building SaaS #197.4
   In this episode, we are taking a break from JourneyInbox and exploring what kind of Go app we can make by just using the Go standard library. This is the final continuation after an internet disconnection.
07  août     00h00
An Opinionated Introduction to CI CD
   Continuous Integration Continuous Delivery or Deployment , CI CD, is a set of practices used by engineering organizations to improve the quality of software they deliver, how fast they deliver that software, and detect issues with that software before they affect end users. Unfortunately, the...
19  juillet     00h00
Activation Email Job - Building SaaS #196
   In this episode, we chatted about managing dependencies and the cost of maintenance. Then we got into some feature work and began building a job that will send users an email as reminder to activate their account shortly before it expires.
12  juillet     00h00
Trial Banner Inclusion Tag - Building SaaS #195
   In this episode, we worked on a trial banner that could persist across all pages on the site. Because the banner needed data that was only available on the index page, we had to refactor the banner into an inclusion template tag to make the tag work consistently.
20  juin     00h00
Password Resets and Signal Handling - Building SaaS #194
   In this episode, we hooked up the email confirmation signal to the prompt sending code so that new users can use JourneyInbox immediately. Then we focused on handling all the functionality related to the password reset feature. This meant customizing a bunch of django allauth forms.
13  juin     00h00
Boosting AI with Python: Using Click, Jinja2, and GPT Libraries
   n this session, we will explore how to use Python to enhance your AI projects with:
06  juin     00h00
Polish, Debug Toolbar, Email Signals - Building SaaS #193
   In this episode, we first added the Django debug toolbar to aid future troubleshooting. Then, following some PR cleanup, I added django denied as the authorization framework for the site. With those two packages integrated, I did some polishing work and began the effort to send prompts immediately...
30  mai     00h00
About, FAQ, and Home Page - Building SaaS #192
   In this episode, we worked on some core pages to round out the JourneyInbox user interface. This led us to work updating UI layout, writing copy, and doing other fundamentals for making templated pages.
23  mai     00h00
Export Journal Feature - Building SaaS #191
   In this episode, I started with cleaning up a few small items. After those warmups, we moved on to building an export feature that will allow users to take their journal entries if they want to leave the service.
16  mai     00h00
Settings and Billing Portal - Building SaaS #190
   In this episode, I worked on the settings page for the user. This was a vital addition because it allows users to access the Stripe billing portal and close their account if they no longer wish to use JourneyInbox.
18  avril     00h00
Importing Content - Building SaaS #189
   In this episode, I built the import view that is needed to allow users to add their own journal entries to JourneyInbox. After completing that, I handled the pull requests from dependabot, then I worked on some quality of life to do better handling with beta user trials.
    00h00
Why Django and why not Flask?
   Why would someone pick Django over Flask That’s the question that I got on stream and here is my answer.
04  avril     00h00
Flash messages and content encodings - Building SaaS #188
   In this episode, we added flash messages after a rough start with some networking issues . Then I tracked down a thorny issue. We found that there is a non breaking space with ’timesince’ that affects the encoding and what links Gmail adds to emails.
03  avril     00h00
NATS: Connecting Apps Over a Network Easily
   NATS is an awesome open source technology to help connect code together over a network. Whether you’re build a distributed microservice architecture or connecting IoT devices, NATS provides the tools you need to do that easily. In this talk, you’ll learn about NATS via a presentation with plenty of...
28  mars     00h00
Start Polishing - Building SaaS #187
   In this episode, we attacked the issue list. JourneyInbox is live and serving user and now it’s time to start polishing and building the full set of features. There are so many easy targets to fix that we focused on a few clear improvements to user experience and the user interface.
21  mars     00h00
Post-launch Punchlist - Building SaaS #186
   In this episode, we had a bunch of issues to resolve post launch. I set the code that causes trials to expire, made updates to who receives prompt emails, and added some polish to the sign up process and interface to make it clear what will happen in the flow. After those modifications, we worked...
08  mars     00h00
Do It Live - Building SaaS #185
   In this episode, we deployed all our user setup and Stripe configuration change to the live site and tested the new flows end to end. Along the way, we found a bug in djstripe as well as some final bugs in the JourneyInbox configuration that prevented things from working. This is why you test
07  mars     00h00
Final Pre-live Features - Building SaaS #184
   In this episode, we completed the final features needed to get the site open for others to sign up. This included some dynamic limiting of the number of people allowed to sign up. We also had to add the template styling for the login page.
22  février     00h00
Finish Stripe Integration - Building SaaS #183
   In this episode, we completed the Stripe integration. I added all the necessary test code, incorporated the webhook for handling account activation, and wrote the view that Stripe needed to redirect to on successful signup.
15  février     00h00
Algorithmic Art with Python
   In this talk, we’re going to start from nothing and build out our own tools for making art in Python, no AI needed We’ll show how Python’s expressiveness allows us to describe graphics elegantly and use that to make some unique art programmatically.
08  février     00h00
Stripe Checkout - Building SaaS #182
   In this episode, we did work to get the Stripe checkout session going. We set up Stripe Product and Price objects to get the subscription plan ready and got the Stripe checkout session working mostly end to end
25  janvier     00h00
Payments Gateway - Building SaaS #181
   In this episode, we continued on the Stripe integration. I worked on a new payments gateway interface to access the Stripe APIs needed for creating a check out session. We hit some bumps along the way because of djstripe’s new preference for putting the Stripe keys into the database exclusively.
18  janvier     00h00
Design and Stripe - Building SaaS #180
   In this episode, I started with a plan to work on Stripe checkout, but realized that I needed to come up with a better plan and also improve the base template of the app. We ended up doing more design work than working with Stripe, but we ended the stream with a solid plan of what to do next.
06  janvier     00h00
Fun With Scrapy Link Validation on CI
   Here’s my scenario: I have a static site generator that is building HTML pages for a community project that I’m working on. How can I make sure, automatically, that all the links to other internal pages within the site continue to work In this article, I’ll show you how I managed to do that using...