---
# System prepended metadata

title: 007 Internal

---

# 007 Internal


Theme: 

- introduction

- 10 Richard: What's a `#!` ?
    - what is this thing on the logo?
    - Turning any script to an executable
    - #!python
    - #!/usr/bin/env python
    - #!make -f
    - #!
    - Next time: how to make a python scirpt suitable for this

- 15 Radovan: Distributing a Python package/script on PyPI
   - https://github.com/bast/pypi-howto
   - https://github.com/ResearchSoftwareHour/demo-pypi
   - https://flit.readthedocs.io/ there is also Poetry
   - using flit and github actions
   - script
   - README.md
   - local test before upload
   - `pip install --index-url https://test.pypi.org/simple/ your-package`
   - test-pypi and dependencies
   - "half-baked packages" because it's too easy to package
   - comments
       - think about your naming - don't take good names for throwaway packages
       - is flit as stable as basic setup.py?
           - so you have to have flit to install from git repo now?
       - should requirements list 

=== halftime===

- 10-15 Richard: packaging software for science
   - how could we get the "latest" dependencies at a specific date in past

- 10 Richard: Blub paradox
    - https://en.wikipedia.org/wiki/Paul_Graham_(programmer)#The_Blub_paradox
    - Original source: http://www.paulgraham.com/avg.html
    - Definition of the paradox
    - When is it worth staying with the simpler solution?
        - time investment
        - number of contributors who can use it
        - ecosystem
    - When is it worth moving to more complex solutions?
    - How do you learn complex solutions, if you just need to "get stuff done"?
    - Examples:
        - docker and containers
        - moving from make to cmake
        - moving from one language to another

- conclusion
- epilogue discussion
    - Richard: commit messages starting with filename, opinions?
    - github actions and on: [push, pull-request]


## Ideas


- What are our favorite Python packages that we use all the time and others perhaps don't know
   - click
   - tqdm
   - tabulate
   - flit

- Github actions: board game network finished
- 
    - board game networks example



- module -> script, __main__, argument parsing

- 5 minutes Radovan
    - probably shows Cicero unless I get an inspiration





