diff --git a/flake.nix b/flake.nix index d1828f0..1c20101 100644 --- a/flake.nix +++ b/flake.nix @@ -95,6 +95,16 @@ src = ./src/building-build-configs; }; + reading-college = + let + name = "reading-college"; + in + mkTalk { + inherit name; + + src = ./src/${name}; + }; + sculpin = mkTalk { name = "building-static-websites-sculpin"; src = ./src/building-static-websites-sculpin; diff --git a/src/reading-college/images/drupal-issue-1.png b/src/reading-college/images/drupal-issue-1.png new file mode 100644 index 0000000..9244f00 Binary files /dev/null and b/src/reading-college/images/drupal-issue-1.png differ diff --git a/src/reading-college/images/drupal-issue-2.png b/src/reading-college/images/drupal-issue-2.png new file mode 100644 index 0000000..5f8c311 Binary files /dev/null and b/src/reading-college/images/drupal-issue-2.png differ diff --git a/src/reading-college/images/drupal-issue-3.png b/src/reading-college/images/drupal-issue-3.png new file mode 100644 index 0000000..f5a94df Binary files /dev/null and b/src/reading-college/images/drupal-issue-3.png differ diff --git a/src/reading-college/images/forgejo.png b/src/reading-college/images/forgejo.png new file mode 100644 index 0000000..b7ff8c6 Binary files /dev/null and b/src/reading-college/images/forgejo.png differ diff --git a/src/reading-college/images/homelab.jpg b/src/reading-college/images/homelab.jpg new file mode 100644 index 0000000..15a62ea Binary files /dev/null and b/src/reading-college/images/homelab.jpg differ diff --git a/src/reading-college/images/immich.png b/src/reading-college/images/immich.png new file mode 100644 index 0000000..ebcfa03 Binary files /dev/null and b/src/reading-college/images/immich.png differ diff --git a/src/reading-college/images/jellyfin.png b/src/reading-college/images/jellyfin.png new file mode 100644 index 0000000..860e18f Binary files /dev/null and b/src/reading-college/images/jellyfin.png differ diff --git a/src/reading-college/images/override-node-options-1.png b/src/reading-college/images/override-node-options-1.png new file mode 100644 index 0000000..2b69070 Binary files /dev/null and b/src/reading-college/images/override-node-options-1.png differ diff --git a/src/reading-college/images/override-node-options-2.png b/src/reading-college/images/override-node-options-2.png new file mode 100644 index 0000000..5d876b0 Binary files /dev/null and b/src/reading-college/images/override-node-options-2.png differ diff --git a/src/reading-college/images/override-node-options-3.png b/src/reading-college/images/override-node-options-3.png new file mode 100644 index 0000000..07e9ba9 Binary files /dev/null and b/src/reading-college/images/override-node-options-3.png differ diff --git a/src/reading-college/images/override-node-options-4.png b/src/reading-college/images/override-node-options-4.png new file mode 100644 index 0000000..5230066 Binary files /dev/null and b/src/reading-college/images/override-node-options-4.png differ diff --git a/src/reading-college/images/override-node-options.png b/src/reading-college/images/override-node-options.png new file mode 100644 index 0000000..ad0a7e4 Binary files /dev/null and b/src/reading-college/images/override-node-options.png differ diff --git a/src/reading-college/images/peertube.png b/src/reading-college/images/peertube.png new file mode 100644 index 0000000..fabaf68 Binary files /dev/null and b/src/reading-college/images/peertube.png differ diff --git a/src/reading-college/images/tawny-tweet-1.png b/src/reading-college/images/tawny-tweet-1.png new file mode 100644 index 0000000..bf954fa Binary files /dev/null and b/src/reading-college/images/tawny-tweet-1.png differ diff --git a/src/reading-college/images/tawny-tweet-2.png b/src/reading-college/images/tawny-tweet-2.png new file mode 100644 index 0000000..ea425d4 Binary files /dev/null and b/src/reading-college/images/tawny-tweet-2.png differ diff --git a/src/reading-college/images/timmillwood-ono.png b/src/reading-college/images/timmillwood-ono.png new file mode 100644 index 0000000..be4eda4 Binary files /dev/null and b/src/reading-college/images/timmillwood-ono.png differ diff --git a/src/reading-college/images/twf-1.png b/src/reading-college/images/twf-1.png new file mode 100644 index 0000000..4eaecb3 Binary files /dev/null and b/src/reading-college/images/twf-1.png differ diff --git a/src/reading-college/images/twf-2.png b/src/reading-college/images/twf-2.png new file mode 100644 index 0000000..927a581 Binary files /dev/null and b/src/reading-college/images/twf-2.png differ diff --git a/src/reading-college/images/website.png b/src/reading-college/images/website.png new file mode 100644 index 0000000..d77b5c4 Binary files /dev/null and b/src/reading-college/images/website.png differ diff --git a/src/reading-college/slides.rst b/src/reading-college/slides.rst new file mode 100644 index 0000000..3b310b1 --- /dev/null +++ b/src/reading-college/slides.rst @@ -0,0 +1,347 @@ +BTEC Level 3 Computing and IT, Reading College +############################################## + +| + +.. class:: titleslideinfo + +Oliver Davies + +.. raw:: pdf + + PageBreak standardPage + +About me +======== + +* Started working in laptop repair and refurbishment in 2004. +* Self-taught freelance Software Developer since 2007. +* Full-time Software Developer since 2010. +* Lead Software Developer at Transport for Wales. +* Advocate and enthusiast of open source software. +* Developer, Consultant, Trainer +* Public speaker + +.. raw:: pdf + + TextAnnotation "Started in hardware doing laptop repair and refurbishment." + TextAnnotation "Student Essentials in 2004. Panasonic in 2006. Desktop support for Fujitsu at the DVLA from 2007 to 2010." + TextAnnotation "" + TextAnnotation "Learned software development from online courses - e.g. Lynda.com (now LinkedIn Learning), totaltraining.com. Early days of YouTube, no programming on Twitch." + PageBreak + +My education and qualifications +=============================== + +* 2003: 12 GCSEs C grade or above. +* 2004–2005: City & Guilds Level 2 Diploma for IT Professionals. +* 2004–2005: National Traineeship for IT Users (Level 2 ITQ for IT Users, Key Skills, CLAIT). +* 2005–2006: City & Guilds Level 3 Advanced Diploma for IT Professionals. +* 2007: OCN Level 2 Build Your Own PC. +* 2007–2009: HNC Computing (End User Support). + +What I use +========== + +* HTML +* CSS +* JavaScript +* PHP +* MySQL +* Drupal +* Git +* Linux/Nix + +.. raw:: pdf + + TextAnnotation "HTML - the structure and content of a web page." + TextAnnotation "" + TextAnnotation "CSS - styling and appearance. Text sizes, colours, layout." + TextAnnotation "" + TextAnnotation "JavaScript - extra interactivity and progressive enhancement." + TextAnnotation "" + TextAnnotation "PHP - server-side programming language." + TextAnnotation "" + TextAnnotation "MySQL - database for storing data." + TextAnnotation "" + TextAnnotation "Drupal - a content management system written in PHP." + TextAnnotation "" + TextAnnotation "Git - a version control system for managing code changes." + TextAnnotation "" + TextAnnotation "Linux/NixOS - a free and open source computer operating system for my laptop and servers." + TextAnnotation "" + TextAnnotation "Nix - a package manager with more than 120,000 packages and 20,000 operating system options." + PageBreak + +How I started +============= + +* 2nd Dan TAGB Tae Kwon-Do Black Belt. +* Built a website to show class times, locations, news, etc. +* Started with HTML and CSS. +* Evolved to PHP and MySQL, then Drupal. + +.. raw:: pdf + + TextAnnotation "Became my pet/lab project." + TextAnnotation "Evolved based on requirements." + TextAnnotation "Picked PHP over ASP." + TextAnnotation "Tried Joomla, Drupal 6 and something else." + TextAnnotation "Decided to go with Drupal after it was recommended on a forum." + PageBreak imagePage + +.. image:: images/twf-1.png + :width: 26cm + +.. image:: images/twf-2.png + :width: 26cm + +.. raw:: pdf + + PageBreak standardPage + +After that +========== + +* Built my own website and blog. +* Cattery website rebuild. +* Started freelancing. +* Full-time in 2010 for Horse & Country TV. +* First agency role in 2011. +* First public speaking presentation in 2012. + +.. raw:: pdf + + TextAnnotation "Documenting and sharing my learnings." + TextAnnotation "Designs to HTML, HTML to Drupal theme." + TextAnnotation "Zooba in Swansea. Introducton to eCommerce with Ubercart." + TextAnnotation "Freelancing experience made it easier to get a job." + TextAnnotation "First presentation at Unified Diff meetup in Cardiff about Drupal." + PageBreak + +What makes a website? +===================== + +.. code-block:: + + .htaccess + assets/images/od-logo.jpg + bco/index.html + build/tailwind.css + call/index.html + daily/2024/03/18/automated-drupal-11-compatibility-fixes/index.html + drupal-upgrade/index.html + favicon.ico + index.html + podcast/19-sam-mortenson/index.html + pricing/index.html + talks/taking-flight-with-tailwind-css/index.html + talks/tdd-test-driven-drupal/index.html + +Levels of complexity +==================== + +* Static website +* Static site generator (SSG) +* Framework or content management system (CMS) + +.. raw:: pdf + + TextAnnotation "Open a text editor like notepad or Vim and start typing HTML, open it in a browser and you're done." + TextAnnotation "Use a tool like Sculpin, Jekyll or Hugo to generate a static website." + TextAnnotation "Use a fully fledged CMS or framework like Drupal, WordPress, Symfony or Laravel." + PageBreak + +Static website +============== + +* Easy to create. +* No build step. +* Easy and cheap to host. +* Fast. +* Secure. +* Difficult to maintain. + +.. raw:: pdf + + TextAnnotation "If you have a lot of pages or frequently changing content, maintaining it becomes difficult (e.g. updating the same menu links on each page, updating the number of daily emails)." + PageBreak + +Static site generators +====================== + +* More complex to create. +* Requires an additional tool and dependencies. +* Easy to maintain. +* Fast and secure. +* Difficult for multiple or non-technical people to edit. + +Frameworks and CMSes +==================== + +* More complicated to build and host. +* Knowledge of programming languages like PHP, Ruby, Go, etc. +* Databases to store data. +* Containerisation and orchestration. +* Powerful and flexible. + +Free and open source software (FOSS) +==================================== + +* Code is public. +* Free to use. +* Open to contribution. +* Developed by companies, agencies, users, individuals, volunteers, hobbyists. +* Operating systems, programming languages, CMSes, CSS frameworks, text editors, standalone packages and scripts. +* Free code reviews. +* Code, documentation, mentoring, translation, event management, UX research. + +.. raw:: pdf + + TextAnnotation "Free as in puppy." + TextAnnotation "Contributions improve the software for everyone." + TextAnnotation "Contributions are free code reviews." + TextAnnotation "Opportunity to learn best practices whilst giving back." + TextAnnotation "Different forms of contribution." + PageBreak + +My first job interview +====================== + +* ~3 years of experience. +* In house working on Drupal 6. +* Passed the first stage interview. +* Able to show my blog posts and speak about the work I'd done. +* Asked to pick an issue on Drupal.org and speak about how I'd fix it. + +.. raw:: pdf + + TextAnnotation "2010 and I'd been doing stuff since 2007." + PageBreak imagePage + +.. image:: images/drupal-issue-1.png + :width: 22cm + +.. image:: images/drupal-issue-2.png + :width: 14cm + +.. image:: images/drupal-issue-3.png + :width: 14cm + +Software as a hobby +=================== + +* Attending, organising and speaking at meetups and conferences. +* Open source contributions and maintenance. +* Mentoring, teaching and content creation. +* Homelab and home server. +* Refurbishing unwanted laptops. + +.. raw:: pdf + + TextAnnotation "Given over 100 talks and workshops at events across UK and Europe." + TextAnnotation "" + TextAnnotation "Create and maintain open source projects." + TextAnnotation "" + TextAnnotation "I like to open source and make things public as much as I can." + TextAnnotation "" + TextAnnotation "Mentoring for bootcamps." + TextAnnotation "Made possible by my software development experience." + TextAnnotation "Career progression and project opportunities." + PageBreak imagePage + +.. image:: images/timmillwood-ono.png + :width: 22cm + +.. image:: images/override-node-options.png + :width: 24cm + +.. image:: images/override-node-options-1.png + :width: 18cm + +.. raw:: pdf + + TextAnnotation "These were the usage statistics from Drupal.org when I became the maintainer." + PageBreak + +.. image:: images/override-node-options-4.png + :width: 20cm + +| + +.. image:: images/override-node-options-3.png + :width: 20cm + +.. raw:: pdf + + PageBreak standardPage + +.. raw:: pdf + + PageBreak standardPage + +.. image:: images/tawny-tweet-1.png + :width: 18cm + +.. image:: images/tawny-tweet-2.png + :width: 18cm + +.. image:: images/homelab.jpg + :width: 18cm + +.. raw:: pdf + + PageBreak standardPage + +In my homelab +============= + +* My website and several other static websites. +* Forgejo (Git repository hosting). +* Peertube (video backups and streaming). +* Jellyfin (media server). +* Immich (photos). +* Audio Bookshelf (podcasts and audiobooks). +* Paperless-ngx (document management). +* Home Assistant. + +.. raw:: pdf + + PageBreak imagePage + +.. image:: images/website.png + :width: 12cm + +.. image:: images/forgejo.png + :width: 24cm + +.. image:: images/peertube.png + :width: 24cm + +.. image:: images/immich.png + :width: 22cm + +.. image:: images/jellyfin.png + :width: 24cm + +Final thoughts +============== + +* Keep things simple. +* Release before you're ready. +* Update early and often. +* Always be learning. +* Document everything. +* Work and learn in the open. +* Own your content. + +Thanks! +======= + +* https://www.oliverdavies.uk +* https://www.oliverdavies.uk/daily +* https://www.oliverdavies.uk/homelab +* https://code.oliverdavies.uk +* https://videos.oliverdavies.uk +* @opdavies@mastodon.social +* @opdavies@social.oliverdavies.uk