I currently have some availability to help you with your project.What services do I provide? Here are some examples:Software architecture and API design adviceSecurity review of your projectAdvice on…| blog.miguelgrinberg.com
A couple of months ago there was an article titled Async Python is Not Faster making the rounds on social media. In it, the author Cal Paterson made the point that contrary to popular belief,…| blog.miguelgrinberg.com
In the Q&A session following my EuroPython 2025 presentation about the Microdot web framework, a member of the audience asked me what the performance of MicroPython running on a microcontroller…| blog.miguelgrinberg.com
My article on creating a React + Flask project is one of the most visited on this blog. Can you believe that I wrote it over 5 years ago?In this article and video I'm going to share how I'm building…| blog.miguelgrinberg.com
miguelgrinberg.com| blog.miguelgrinberg.com
People keep asking me If I use Generative AI tools for coding and what I think of them, so this is my effort to put my thoughts in writing, so that I can send people here instead of having to repeat…| blog.miguelgrinberg.com
The other day I shared my code editor window during a video call with a client, and he immediately did a double take. "How did you make your code look like that?", he wanted to know. Have a look at…| blog.miguelgrinberg.com
I've been given a review copy of The Quick Python Book, Fourth Edition by Naomi Ceder, published by Manning. Since I often get asked for Python book recommendations, I thought it would be a good idea…| blog.miguelgrinberg.com
A common need in web applications is to create a form that allows the user to enter a list of items, with the number of items not known in advance. This is a pattern often used when entering user…| blog.miguelgrinberg.com
In this tutorial I'm going to show you how to extend SQLAlchemy so that you can define database columns that are stored encrypted. In the solution I'm going to share, the columns that are designated…| blog.miguelgrinberg.com
In this article I'm going to review the steps you need to take to obtain an A+ SSL security rating for your website, as mine has.This tutorial applies to any hosting solution that uses Nginx as web…| blog.miguelgrinberg.com
I'm seeing a stream of "year in review" blog posts about all sorts of topics pop up to coincide with the start of 2025. I'm not sure if this is going to be a new tradition for me, but to follow this…| blog.miguelgrinberg.com
My standard response when someone asks me how I deal with Python being such a slow language is that Python is by far the fastest to write, cleanest, more maintainable programming language I know, and…| blog.miguelgrinberg.com
I often come across developers who know the mechanics of Python error handling well, yet when I review their code I find it to be far from good. Exceptions in Python is one of those areas that have a…| blog.miguelgrinberg.com
I'm sure you agree that it has become impossible to ignore Generative AI (GenAI), as we are constantly bombarded with mainstream news about Large Language Models (LLMs). Very likely you have tried…| blog.miguelgrinberg.com
This is the twenty third and last installment of the Flask Mega-Tutorial series, in which I'm going to tell you how to extend microblog with an application programming interface (or API) that clients…| blog.miguelgrinberg.com
This is the twenty second installment of the Flask Mega-Tutorial series, in which I'm going to tell you how to create background jobs that run independently of the web server.You are reading the 2024…| blog.miguelgrinberg.com
This is the twenty first installment of the Flask Mega-Tutorial series, in which I'm going to add a private message feature, along with user notifications that appear in the navigation bar without…| blog.miguelgrinberg.com
This is the twentieth installment of the Flask Mega-Tutorial series, in which I'm going to add a nice popup when you hover your mouse over a user's nickname.You are reading the 2024 edition of the…| blog.miguelgrinberg.com