#183 Need a beautiful database editor? Look to the Bees!
Python Bytes - A podcast by Michael Kennedy and Brian Okken - Mondays
   Categories:
Sponsored by DigitalOcean: pythonbytes.fm/digitalocean
Special guest: Calvin Hendryx-Parker @calvinhp
Brian #1: fastpages: An easy to use blogging platform, with enhanced support for Jupyter Notebooks.
- Uses GH actions to Jekyll blog posts on GitHub Pages.
 - Create posts with code, output of code, formatted text, directory from Jupyter Notebooks.
 - Altair interactive visualizations
 - Collapsible code cells that can be open or closed by default.
 - Metadata like title, summary, in special markdown cells.
 - twitter cards and YouTube videos
 - tags support
 - Support for pure markdown posts
 - and even MS Word docs for posts. (but really, don’t).
 - Documentation and introduction written in fastpages itself, https://fastpages.fast.ai/
 
Michael #2: BeeKeeper Studio Open Source SQL Editor and Database Manager
- Use Beekeeper Studio to query and manage your relational databases, like MySQL, Postgres, SQLite, and SQL Server.
 - Runs on all the things (Windows, Linux, macOS)
 - Features
- Autocomplete SQL query editor with syntax highlighting
 - Tabbed interface, so you can multitask
 - Sort and filter table data to find just what you need
 - Sensible keyboard-shortcuts
 - Save queries for later
 - Query run-history, so you can find that one query you got working 3 days ago
 - Default dark theme
 
 - Connect: Alongside normal connections you can encrypt your connection with SSL, or tunnel through SSH. Save a connection password and Beekeeper Studio will make sure to encrypt it to keep it safe.
 - SQL Auto Completion: Built-in editor provides syntax highlighting and auto-complete suggestions for your tables so you can work quickly and easily.
 - Open Lots of Tabs: Open dozens of tabs so you can write multiple queries and tables in tandem without having to switch windows.
 - Save queries
 - View Table Data: Tables get their own tabs too! Use our table view to sort and filter results by column.
 
Calvin #3: 2nd Annual Python Web Conference
- The most in-depth Python conference for web developers
- Targeted at production users of Python
 - Talks on Django, Flask, Twisted, Testing, SQLAlchemy, Containers, Deployment and more
 
 - June 17th-19th — One day of tutorials and two days of talks in 3 tracks
 - Keynote talks by 
- Lorena Mesa
 - Hynek Schlawack
 - Russell Keith-Magee
 - Steve Flanders
 
 - Fireside Chat with Carl Meyer about Instragram’s infrastructure, best practices
 - Participate in 40+ presentations and 6 tutorials
 - Fun will be had and connections made
- Virtual cocktails
 - Online gaming
 - Board game night
 
 - Tickets are $199 and $99 for Students
- As a bonus, for every Professional ticket purchased, we'll donate a ticket to an attendee in a developing country.
 - As a Python Bytes listener you can get a 20% discount with the code PB20
 
 
Brian #4: Mimesis - Fake Data Generator
- “…helps generate big volumes of fake data for a variety of purposes in a variety of languages.”
 - Custom and generic data providers
 - >33 locales
 - Lots of locale dependent providers, like address, Food, Person, …
 - Locale independent providers.
 - Super fast. Benchmarking with 10k full names was like 60x faster than Faker.
 - Data generation by schema. Very cool
 
    >>> from mimesis.schema import Field, Schema
    >>> _ = Field('en')
    >>> description = (
    ...     lambda: {
    ...         'id': _('uuid'),
    ...         'name': _('text.word'),
    ...         'version': _('version', pre_release=True),
    ...         'timestamp': _('timestamp', posix=False),
    ...         'owner': {
    ...             'email': _('person.email', domains=['test.com'], key=str.lower),
    ...             'token': _('token_hex'),
    ...             'creator': _('full_name'),
    ...         },
    ...     }
    ... )
    >>> schema = Schema(schema=description)
    >>> schema.create(iterations=1)
- Output:
    [
      {
        "owner": {
          "email": "[email protected]",
          "token": "cc8450298958f8b95891d90200f189ef591cf2c27e66e5c8f362f839fcc01370",
          "creator": "Veronika Dyer"
        },
        "name": "widget",
        "version": "4.3.1-rc.5",
        "id": "33abf08a-77fd-1d78-86ae-04d88443d0e0",
        "timestamp": "2018-07-29T15:25:02Z"
      }
    ]
Michael #5: Schemathesis
- A tool for testing your web applications built with Open API / Swagger specifications.
 - Supported specification versions:
- Swagger 2.0
 - Open API 3.0.x
 
 - Built with:
 - It reads the application schema and generates test cases which will ensure that your application is compliant with its schema.
 - Use: There are two basic ways to use Schemathesis:
 - CLI supports passing options to 
hypothesis.settings. - To speed up the testing process Schemathesis provides 
-w/--workersoption for concurrent test execution - If you'd like to test your web app (Flask or AioHTTP for example) then there is 
--appoption for you - Schemathesis CLI also available as a docker image
 - Code example:
 
    import requests
    import schemathesis
    schema = schemathesis.from_uri("http://0.0.0.0:8080/swagger.json")
    @schema.parametrize()
    def test_no_server_errors(case):
        # `requests` will make an appropriate call under the hood
        response = case.call()  # use `call_wsgi` if you used `schemathesis.from_wsgi`
        # You could use built-in checks
        case.validate_response(response)
        # Or assert the response manually
        assert response.status_code < 500
Calvin #6: Finding secrets by decompiling Python bytecode in public repositories
- Jesse’s initial research revealed that thousands of GitHub repositories contain secrets hidden inside their bytecode.
 - It has been common practice to store secrets in Python files that are typically ignored such as 
settings.py,config.pyorsecrets.py, but this is potentially insecure - Includes a nice crash course on Python byte code and cached source
 - This post comes with a small capture-the-flag style lab for you to try out this style of attack yourself.
- You can find it at https://github.com/veggiedefender/pyc-secret-lab/
 
 - Look through your repositories for loose 
.pycfiles, and delete them - If you have 
.pycfiles and they contain secrets, then revoke and rotate your secrets - Use a standard gitignore to prevent checking in 
.pycfiles - Use JSON files or environment variables for configuration
 
Extras:
Michael:
- Python 3.9.0b1 Is Now Available for Testing
 - Python 3.8.3 Is Now Available
 - Ventilators and Python: Some particle physicists put some of their free time to design and build a low-cost ventilator for covid-19 patients for use in hospitals. https://arxiv.org/pdf/2003.10405.pdf Search of the PDF for Python: 
- "Target computing platform: Raspberry Pi 4 (any memory size), chosen as a trade-off between its computing power over power consumption ratio and its wide availability on the market; • Target operating: Raspbian version 2020-02-13; • Target programming language: Python 3.5; • Target PyQt5: version 5.11.3."
 - "The MVM GUI is a Python3 software, written using the PyQt5 toolkit, that allows steering and monitoring the MVM equipment."
 
 
Brian:
- Call for Volunteers! Python GitHub Migration Work Group
- migration from bugs.python.org to GitHub
 
 
Calvin:
- Learn Python Humble Bundle
- Pay $15+ and get an amazing set of Python books to start learning at all levels
 - Book Industry Charitable Foundation
 - The No Starch Press Foundation
 
 
Joke:
More O’Really book covers




