atlas news
    
Matt Layman : Python
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 with Python and Django #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 with Python and Django #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 with Python and Django #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 with Python and Django #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 with Python and Django #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 with Python and Django #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 with Python and Django #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 with Python and Django #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 with Python and Django #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 with Python and Django #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 with Python and Django #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 with Python and Django #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 with Python and Django#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 with Python and Django #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...
04  janvier     00h00
Legal and Stripe - Building SaaS with Python and Django #179
   In this episode, we took care of the legal obligations of the site by setting up Terms of Service and a Privacy Policy page. Then we moved on to the next portion of signup, which is to configure Stripe to create customers and prepare, ultimately, to accept subscription payments.
30  décembre     00h00
Python, Markdown, and Tailwind: Best Buds
   You are rendering content with Python and want to show some Markdown, but you style your pages with Tailwind. With Tailwind’s built in reset, how can you style the tags of your rendered HTML that come from Markdown This article shows how that can be done. Specifically, I am assuming that you are...
21  décembre     00h00
Sign Up - Building SaaS with Python and Django #178
   In this episode, we did some work on the sign up template. In the process, we added some base template styling, talked about branding, and considered the other elements that are required before we can turn on sign up for others. I also cover waffle as a feature flag tool.
11  décembre     00h00
Tailwind CSS on Python and Heroku - Building SaaS
   Tailwind CSS is a fantastic tool for making CSS easy to use on your webapps. On the video, I added Tailwind CSS to my Django app and showed how to use it and deploy it to Heroku which required some extra configuration for JavaScript support .
09  décembre     00h00
WhiteNoise For Static Files - Building SaaS
   This video is all about adding the popular WhiteNoise package into my Django app to serve static files e.g., CSS, JavaScript, and images directly from the app. I walk through the process from start to finish and deploy it live to show how things work.
07  décembre     00h00
Operations, WhiteNoise, and Tailwind - Building SaaS with Python and Django #177
   In this episode, I worked through a couple of issues discovered after having the site be operational for real use. From there, we moved onto some fundamental technology and integrated WhiteNoise to handle static files for the application. After adding WhiteNoise, we hooked up Tailwind CSS.
03  décembre     00h00
Saturday stream explorer
   I was looking for new thing to do to improve my stream. This is mostly me goofing off.
01  décembre     00h00
Switch an Existing Python Project To Ruff
   On a recent Building SaaS stream, we switched from using flake , Black, isort, and bandit completely over to a single tool, Ruff. Watch an experienced Pythonista work through many of the options and do a full conversion to this powerful tool
30  novembre     00h00
Message Parsing and Ruff - Building SaaS with Python and Django #176
   In this episode, we finished off the core portion of the application by parsing entries out of the messages sent back by SendGrid. We set up the Heroku Scheduler to start the daily flow of emails to get the system started. After completing that, I set up the project to use Ruff instead of the...
16  novembre     00h00
Parse Inbound Email - Building SaaS with Python and Django #175
   In this episode, we switched to the inbound side and parsed an email to transform it into a journal entry. This caused us to look into the dateutil library and look at Python’s standard email module to use EmailMessage.
02  novembre     00h00
Idempotent Jobs - Building SaaS with Python and Django #174
   In this episode, we cleaned up the email sending job. I had to make some changes based on some discoveries that I made while researching how to track responses and associate the journal entries back to the user. While doing this clean up, we added a new Prompt model to make the email sending job...
19  octobre     00h00
Email Round Trip - Building SaaS with Python and Django #173
   In this episode, we took advantage of having all the DNS configuration complete and tried to find the path to connect the outgoing prompt email to the incoming journal entry from a user. We did this with some old school print debugging and logging on production to see exactly what data is provided...
12  octobre     00h00
Practical AI: HuggingFace Transformers and Diffusers for Beginners
   This presentation provides a straightforward overview of the HuggingFace Transformers and Diffusers libraries. Aimed at those without a deep understanding of AI or ML, we’ll focus on practical, hands on applications. We conclude by setting up a Flask app that generates AI images, demonstrating how...