Hosting Static Website using FastAPI and Uvicorn

Here is an example program that allows you to host a static website with HTML, CSS and JPEG files using FastAPI and Uvicorn. The example assumes that all the static files are located inside the “site” directory and its sub-directories (e.g. css, images sub-directories etc).

from os.path import isfile
from fastapi import Response
from mimetypes import guess_type
from fastapi.responses import FileResponse
from fastapi import FastAPI

app = FastAPI()

@app.get("/{filename}")
async def get_site(filename):
    filename = './site/' + filename

    if not isfile(filename):
        return Response(status_code=404)
    else:
        return FileResponse(filename)

@app.get("/")
async def get_site_default_filename():
    return await get_site('index.html')

The World’s Biggest Startups: Top Unicorns of 2021 – Full Size

https://www.visualcapitalist.com/wp-content/uploads/2021/12/The-Worlds-Biggest-Startups-Top-Unicorns-of-2021-Full-Size.html

All these images were generated by Google’s latest text-to-image AI – The Verge

https://www.theverge.com/2022/5/24/23139297/google-imagen-text-to-image-ai-system-examples-paper

In each case, the text at the bottom of the image was the prompt fed into the program, and the picture above, the output. Just to stress: that’s all it takes. You type what you want to see and the program generates it.

Quanta Magazine: Computing Expert Says Programmers Need More Math

Quanta Magazine: Computing Expert Says Programmers Need More Math. https://www.quantamagazine.org/computing-expert-says-programmers-need-more-math-20220517/

How to reset MySQL root password on Ubuntu

Here are the steps to reset your MySQL root password on a Ubuntu server.

Step 1: Edit the file at /etc/mysql/my.cnf and add the following two lines to the end of the file.

[mysqld]
skip-grant-table

Step 2: Restart the MySQL server. The server will now skip over the password authentication.

sudo systemctl restart mysql.service

Step 3: Log in to MySQL server. Press enter when prompted for password. You should be able to login without password now.

mysql -u root -p
Enter password:

Step 4: Update the password of the root user.

update mysql.user set authentication_string = CONCAT('*', UPPER(SHA1(UNHEX(SHA1('yournewpasswordhere'))))) where user = 'root' and host = 'localhost';

Step 5: Exit MySQL, remove or comment away the two lines in /etc/mysql/mycnf, and restart the MySQL server.

sudo systemctl restart mysql.service

You should now be able to login to the MySQL server using your new password.

What 5 megabytes of computer data looked like in 1966: 62,500 punched cards, taking four days to load.

Creating the Commodore 64 – The Engineer Story

https://spectrum.ieee.org/commodore-64

In January 1981, a handful of semiconductor engineers at MOS Technology in West Chester, Pa., a subsidiary of Commodore International Ltd., began designing a graphics chip and a sound chip to sell to whoever wanted to make “the world’s best video game.” In January 1982, a home computer incorporating those chips was introduced at the Winter Consumer Electronics Show in Las Vegas, Nev. By using in-house integrated-circuit-fabrication facilities for prototyping, the engineers had cut the design time for each chip to less than nine months, and they had designed and built five prototype computers for the show in less than five weeks. What surprised the rest of the home-computer industry most, however, was the introductory price of the Commodore 64: $595 for a unit incorporating a keyboard, a central processor, the graphics and sound chips, and 64 kilobytes of memory instead of the 16 or 32 that were then considered the norm.

Build your own quantum computer with Google’s latest ‘simulator’ | Engadget

https://www.engadget.com/build-your-own-quantum-computer-with-googles-latest-simulator-124513737.html

Introduction to Python Virtual Environments

Python is a versatile programming language that is widely used for various applications, from web development to data science. One of the key features that makes Python so powerful is its ability to manage dependencies through virtual environments. In this blog post, we will explore what virtual environments are, why they are important, and how to create and use them in your Python projects.

What is a Virtual Environment?
A virtual environment is an isolated environment that allows you to manage dependencies for your Python projects. It ensures that each project has its own set of dependencies, which prevents conflicts between packages and makes it easier to manage different projects with different requirements.

Why Use a Virtual Environment?
Using a virtual environment has several benefits:

  • Isolation: Each project can have its own dependencies, which prevents conflicts between packages.
  • Reproducibility: You can easily re-create the environment on another machine, ensuring that your project works the same way everywhere.
  • Cleanliness: Your global Python installation remains clean and uncluttered.

    How to Create a Virtual Environment
    Creating a virtual environment in Python is straightforward. Follow these steps to get started:

    1. Install Python: Ensure you have Python installed on your system. You can download it from the https://www.python.org/.
    2. Create a Virtual Environment: Open your terminal or command prompt and navigate to your project directory. Run the following command to create a virtual environment:

      python -m venv myenv
    3. Activate the Virtual Environment:

      On Windows:

      myenv\Scripts\activate

      On macOS and Linux:

      source myenv/bin/activate
    4. Install Packages: Once the virtual environment is activated, you can install packages using pip:

      pip install package_name
    5. Deactivate the Virtual Environment: When you are done working, you can deactivate the virtual environment by simply running:

      deactivate
    6. Delete the Virtual Environment: If you want to remove the virtual environment, you can simply delete the myenv directory.

    Conclusion

    Virtual environments are an essential tool for managing dependencies in Python projects. They provide isolation, reproducibility, and cleanliness, making it easier to work on multiple projects with different requirements. By following the steps outlined in this blog post, you can create and use virtual environments to enhance your Python development workflow.

    You should be reading academic computer science papers – Stack Overflow Blog

    https://stackoverflow.blog/2022/04/07/you-should-be-reading-academic-computer-science-papers/

    As working programmers, you need to keep learning all the time. You check out tutorials, documentation, Stack Overflow questions, anything you can find that will help you write code and keep your skills current. But how often do you find yourself digging into academic computer science papers to improve your programming chops?