March 20, 2023 » Screaming At My Screen » [Archived Version]
When working on a Django application the de facto recommendation for a task queue is Celery. I believe this is a good recommendation. It is kind of like buying IBM - “no one was ever fired for buying IBM”. I started using Django Q more recently and it is doing a great job. One system I built using it processes roughly 400k tasks per day. Surely not the largest system and surely not the most impressive number, but decent enough to say that Django Q is a solid choice. But as with many smaller pr…
Read MoreMarch 20, 2023 » Screaming At My Screen » [Archived Version]
It feels like common knowledge and an accepted fact that you want to run PostgreSQL in production. And have some sort of load balancer to be able to scale your application server horizontally. Throw in Redis for caching and you have the most generic web application stack I can come up with. At scale this makes a ton of sense. It is a battle tested stack, that will most likely not fail you and if it does, there are tons of resources on how to fix it. Those are a lot of moving parts you want to k…
Read MoreMarch 20, 2023 » Screaming At My Screen » [Archived Version]
One of the most common way to handle user uploaded content is persisting the data to disk, or uploading it to an object store like AWS S3. Serving the content back to the user (or others) often is handled by returning the URL to the file. What is oftentimes missing is proper authentication and authorization, as engineers seem to believe no one will leak URLs, run enumeration attacks or simply try random strings. This is not just a data breach waiting to happen, it is one happening way too often…
Read MoreMarch 20, 2023 » Screaming At My Screen » [Archived Version]
One of the best ways to deploy a Django project while maintaining some sanity is Docker. A single, beefy VM or bare metal host will likely bring you a long way when just starting a new project or while working on a side project that does not have to scale to infinity and beyond. Usually you build a Docker image, upload it to a container registry and deploy from the registry. This results in a few more moving parts than I am okay with for a quick side project or something small (like this blog).…
Read MoreMarch 20, 2023 » Screaming At My Screen » [Archived Version]
One of my current projects involves an API. Not surprising in the year 2023. During business hours data is primarily read. Payloads are large and the underlying data model is as complex as it needs to be. Lots of data and a complex data model is usually a good way to make sure your API is slow. And this project was no exception. While there are many different ways how you can approach this, I opted for the one with the smallest change to the codebase possible and the least amount of change requ…
Read MoreMarch 19, 2023 » Better Simple » [Archived Version]
This post doesn’t contain any technical details. It’s about my background and recent history. I want to tell you about these things so that you can better understand me. Feel free to skip it if you’d like or rage at my entitlement. I went to school at a small midwestern school for my Bachelors degree in Computer Engineering. While it was interesting and mostly enjoyable, I truly learned the most from my internship at Direct Supply. I was hired on as a software engineering intern the summer bet…
Read MoreMarch 19, 2023 » Better Simple » [Archived Version]
As of this week, I’ve completed my first project that was submitted on this site. It was for a friend who has been learning to program to be more efficient at his job. He asked me to help him parse out some information from an image on a web page. At first I thought he meant some typical web scraping, but then found out that he wanted to determine what numbers were printed on rendered charts. It was a bit daunting at first, so I told him that I may not have a solution for him. Then I started s…
Read MoreMarch 19, 2023 » Better Simple » [Archived Version]
Over the past few weeks I’ve been doing a lot of self reflection. One thing that came out of it was the realization that I am currently operating without any goals. I had to-do lists for clients and projects, but no real goals to help myself grow. To rectify this, I decided that I should create daily and weekly goals. Daily Goals: Help someone on the #django channel Solve one Project Euler question Make one commit to public project Come up with one app or business idea Make Emily s…
Read MoreMarch 19, 2023 » Better Simple » [Archived Version]
Some potential clients may be scared by the uncertainty of how a software project is completed. This is completely understandable. We don’t expect clients to know this nor do we require them to fully understand it either. Better Simple’s process is (unsurprisingly) simple. At the core of it, it’s about managing expectations. If you’re surprised at the end of a project, then we’ve failed. The process itself should be methodical and consistent. Better Simple’s process breaks down into the followi…
Read MoreMarch 19, 2023 » Better Simple » [Archived Version]
The problem the client was having was that she had to spend around an hour every night to collect all the day’s order information, format it into a CSV and then send it over to her drop shipment company. Since she wasn’t familiar with SQL nor did she have a reasonable administration view to her data, she was collecting all of this information through emails. In the end, I was able to automate this process for her along with sending out an extra notification for her. Now every night, the syste…
Read More