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