class: center, middle background-color: black # Dockering Everything ??? Hello I am Steve McQuaid. As many of you probably do, I enjoy looking for ways to make my life easier and more efficient. In this talk I'd love to share some of the problems I've faced, from editing markdown to dealing with slow ISPs, and how I've managed to make my life easier by attempting to dockerize everything in sight --- name: ForSlideInterLinking # HowTo: Presentation Shortcuts 1. Open the HTML file in a browser (via 'file://' or local webserver) 2. Press 'c' to clone the current view into a new, synced window 3. Press 'p' in the original window to enter Presenter Console 4. Move the cloned window to projector / screen display 5. Press 'f' to make the cloned window fullscreen Hint: You can always press 'h' to see an overview of all available key commands. --- class: center, middle # Why? * Save time. * It is Fun. * Because we can. ??? Why would we want to dockerize and automate things? Want to be able to quickly do something that was previously laborious. Buildling things is enjoyable Why not exercise our abilities and creativity --- class: center, middle # Principles * Portable * Assume docker, bash (optional, but usable without), make (optional) * Quick to build/use/modify * Easy to understand ??? notes --- # Automation Requirements * Utilize Convention * Functional * Portable * Iteratable * Easily Understood ??? From an Infrastructure perspective, challenge = bootstrapping/dependency hell Docker allows functionality, portability. --- class: center, middle # Basic Process * Write code to do something * Get a shell in ubuntu container, install the stuff that you need. * Convert to dockerfile * Wrap with utility scripts --- # Learnings * Not all networks are fast, long time to compile, slow iterations * Production and development are different (dont multiline apt-get installs) * Find base images for your commonly used languages, reuse patterns that work well * Have common structure and boiler plate ready to go Polishing cli programs is complicated - common argparse framework Patterns for sensitive information - veracrypt --- # Examples: Projects Narrative/Learnings Use bash when you know commands in ubuntu Write code when you dont, have bindings ready Pre Built isp test weechat --- ## Learnings / Patterns * Make + Bash Scripts * Starter Code * Document in Code * make Help/Readme + docker container working --- class: center, middle # Formatting Examples --- # Large Heading ## Small Heading Lorem Ipsum dolor sit amet, sic transit gloria mundi. Consectetur adipiscing elit. Mauris quis mi tellus. Sed massa massa, luctus id efficitur et, fringilla vel velit. Nullam efficitur ante et sapien fermentum semper. Morbi vehicula sapien enim. --- class: top, center # Top Center Lorem Ipsum dolor sit amet, sic transit gloria mundi. Consectetur adipiscing elit. Mauris quis mi tellus. Sed massa massa, luctus id efficitur et, fringilla vel velit. Nullam efficitur ante et sapien fermentum semper. Morbi vehicula sapien enim. --- # Numbered List 1. Lorem Ipsum 2. Dolor Sit Amet 3. Sic transit 4. Gloria Mundi ??? Your presenter notes --- # Bulletpoint List * Lorem Ipsum * Dolor Sit Amet * Sic transit * Gloria Mundi ??? Your presenter notes --- class: center, middle, blackbg background-image: url(media/flexboxbg.jpg) #### And Now -- ### For Some -- # Incrementation -- ## On The Same Slide --- background-image: url(media/pixybay-polygon-906202_1280.jpg) class: top, center # BLOCKQUOTE .blockquote[Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris quis mi tellus. Sed massa massa, luctus id efficitur et, fringilla vel velit. Nullam efficitur ante et sapien fermentum semper. Morbi vehicula sapien enim, vitae sagittis elit pharetra semper. Etiam pharetra maximus orci sed scelerisque mauris. Etiam pharetra maximus orci sed scelerisquest. Author Name, 2001] ??? Your presenter notes --- background-image: url(media/pixybay-polygon-906202_1280.jpg) # Code Snippet ```js // Configurable Syntax Highlighing var key; var a = []; a[0] = "a"; a[10] = "b"; a[10000] = "c"; for (key in a) { if (a.hasOwnProperty(key) && // Detail Comment /^0$|^[1-9]\d*$/.test(key) && key <= 0123456789 ) { console.log(a[key]); } } ``` --- class: top, center  .footnote[Photo Credits] ??? Your presenter notes --- class: center, middle, redbg background-image: url(media/pixybay-polygon-906202_1280.jpg) # Background Tinting ## blackbg, redbg & bluebg ??? Your presenter notes --- class: top, center # Two Columns .left-column[ ] .right-column[ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris quis mi tellus. Sed massa massa, luctus id efficitur et, fringilla vel velit. Nullam efficitur ante et sapien fermentum semper. Morbi vehicula sapien enim, vitae sagittis elit pharetra semper. Etiam pharetra maximus orci, sed scelerisque mauris lacinia quis. Aliquam erat volutpat.] ??? Your presenter notes --- class: center, middle # The End ##### [Steve McQuaid](https://github.com/stevemcquaid/)