Plume Demo Official demo of the Plume publishing platform http://demo.plume.pub/ Plume Lorem Ipsum http://demo.plume.pub/post/lorem-ipsum Fri, 01 May 2026 11:26:51 +0000 lorem-ipsum <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque ut mi vitae cursus. Morbi ullamcorper odio ut molestie pellentesque. In sit amet neque accumsan, porttitor lectus in, elementum sem. Proin vehicula magna eu diam volutpat, id semper enim feugiat. Aliquam fermentum libero tortor, vitae venenatis ligula elementum id. Vestibulum a maximus diam.</p> <p>Fusce lorem quam, scelerisque non turpis vel, sollicitudin efficitur dolor. Nunc quis efficitur sapien. Curabitur venenatis tortor augue, a consequat arcu rhoncus a. Curabitur velit diam, iaculis quis varius ut, varius at augue. Fusce mollis et ante ac egestas. Pellentesque felis metus, lobortis non purus pharetra, hendrerit ornare nulla. Etiam a neque tellus. Etiam risus dui, imperdiet vel odio eu, posuere auctor quam. Maecenas vulputate semper risus, non semper felis pellentesque et.</p> Configuration Closures http://demo.plume.pub/post/configuration-closures Fri, 01 May 2026 11:26:51 +0000 configuration-closures <p>Nearly every application in existence requires some form of configuration. After all, no two instances of the same app are exactly the same. The &quot;tried and true&quot; (read &quot;quick and dirty&quot;) way of doing this has conventionally been with arrays. This works well for most basic configuration values of scalar types, however, sometimes it may be necessary to configure complex objects.</p> Never Gonna Give You Up http://demo.plume.pub/post/never-gonna-give-you-up Fri, 01 May 2026 11:26:51 +0000 never-gonna-give-you-up <p>This is an example of a video embed.</p> <p align="center"> <iframe class="video" src="https://www.youtube.com/embed/dQw4w9WgXcQ?si=t5QV9aXGAl8dU0Ft" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> </p> <p>That is all.</p> Run Composer Binaries From Project Directories http://demo.plume.pub/post/run-composer-binaries-from-project-directories Fri, 01 May 2026 11:26:51 +0000 run-composer-binaries-from-project-directories <p>As a PHP developer I often find myself having to run executable files installed to a project via Composer (e.g. <code>php-cs-fixer</code>, <code>phpunit</code>, <code>psysh</code>, etc.). These binary files typically reside in <code>vendor/bin</code> relative to the root of a project and in order to run these binary files from the project root I would need to <code>cd</code> into the <code>vendor/bin</code> directory first or type out the relative path (e.g. <code>vendor/bin/php-cs-fixer fix</code>) every time I wanted to run one of these executables.</p> Scheduled Tasks with Systemd Timers http://demo.plume.pub/post/scheduled-tasks-with-systemd-timers Fri, 01 May 2026 11:26:51 +0000 scheduled-tasks-with-systemd-timers <p>Use a Linux system long enough and eventually you'll need to schedule a recurring task. Of course the defacto scheduler is cron (and there's nothing inherently wrong with it) but I've grown to like the flexibility and features of systemd timers. Some of the benefits they provide over cron include:</p> Meow! Cat Ipsum http://demo.plume.pub/post/cat-ipsum Fri, 01 May 2026 11:26:51 +0000 cat-ipsum <p>Cat ipsum dolor sit amet, commence midnight zoomies and shred all toilet paper and spread around the house. Jump on fridge. Dont wait for the storm to pass, dance in the rain yowling nonstop the whole night yet cough furball into food bowl then scratch owner for a new one for kitty run to human with blood on mouth from frenzied attack on poor innocent mouse, don't i look cute?</p> Embrace the Framework http://demo.plume.pub/post/embrace-the-framework Fri, 01 May 2026 11:26:51 +0000 embrace-the-framework <p>Frameworks are among the most important tools we developers have and yet they are often taken for granted. The way I see it is a framework has two primary benefits: 1) saving individual developers time by providing predefined solutions to common problems and 2) allowing teams to work more efficiently by giving them a common model for coding standards, file organization, design language and more. However, these benefits quickly break down when framework conventions are broken or ignored, intentionally or otherwise.</p> azPHP Presentation: PsySh http://demo.plume.pub/post/azphp-presentation-psysh Fri, 01 May 2026 11:26:51 +0000 azphp-presentation-psysh <p>My presentation from the June 2019 <a href="https://www.meetup.com/azPHPUG">azPHP</a> meeting on <a href="https://psysh.org/">PsySH</a>, the terminal-based interactive PHP debugger and REPL.</p> <p align="center"> <iframe class="video" src="https://www.youtube.com/embed/lblQtfwlVls" title="azPHP June, 2019: psysh" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> </p Seeding is Hard http://demo.plume.pub/post/seeding-is-hard Fri, 01 May 2026 11:26:51 +0000 seeding-is-hard <p>We've all been there... banging our heads against a wall for 20 minutes wondering why our app isn't working before we realize we forgot to seed our database when running migrations. Okay, easy fix:</p> <pre class="shiki" style="background-color: #303446"><code><span class="line"><span style="color:#8CAAEE;font-style: italic">$</span><span style="color:#C6D0F5"> </span><span style="color:#A6D189">php</span><span style="color:#C6D0F5"> </span><span style="color:#A6D189">artisan</span><span style="color:#C6D0F5"> </span><span style="color:#A6D189">migrate</span><span style="color:#C6D0F5"> </span><span style="color:#A6D189">--seed</span></span> <span class="line"><span style="color:#8CAAEE;font-style: italic">Migration</span><span style="color:#C6D0F5"> </span><span style="color:#A6D189">table</span><span style="color:#C6D0F5"> </span><span style="color:#A6D189">created</span><span style="color:#C6D0F5"> </span><span style="color:#A6D189">successfully.</span></span> <span class="line"><span style="color:#8CAAEE;font-style: italic">Migrating:</span><span style="color:#C6D0F5"> </span><span style="color:#A6D189">1996_02_27_123456_create_pokemon_table</span></span> <span class="line"><span style="color:#8CAAEE;font-style: italic">Migrated:</span><span style="color:#C6D0F5"> </span><span style="color:#A6D189">1996_02_27_123456_create_pokemon_table</span></span> <span class="line"><span style="color:#8CAAEE;font-style: italic">Seeding:</span><span style="color:#C6D0F5"> </span><span style="color:#A6D189">PokemonSeederReflectionException</span><span style="color:#C6D0F5"> </span><span style="color:#A6D189">:</span><span style="color:#C6D0F5"> </span><span style="color:#A6D189">Class</span><span style="color:#C6D0F5"> </span><span style="color:#A6D189">PokemonSeeder</span><span style="color:#C6D0F5"> </span><span style="color:#A6D189">does</span><span style="color:#C6D0F5"> </span><span style="color:#A6D189">not</span><span style="color:#C6D0F5"> </span><span style="color:#A6D189">exist</span></span> <span class="line"></span></code></pre> Mmm... Bacon Ipsum http://demo.plume.pub/post/bacon-ipsum Fri, 01 May 2026 11:26:51 +0000 bacon-ipsum <p>Bacon ipsum dolor amet bresaola short loin chuck, pancetta venison landjaeger ham hock. Laborum t-bone ground round hamburger. Drumstick t-bone ut chuck nulla. Elit consequat reprehenderit tri-tip salami sunt frankfurter shoulder corned beef culpa duis adipisicing tail filet mignon.</p> The Witness http://demo.plume.pub/post/the-witness Fri, 01 May 2026 11:26:51 +0000 the-witness <p>I'm loving The Witness. It's a beautiful game, and challenges me in a way very different from just about any other puzzle game I can think of. I highly recommend it to anyone looking for a brain teaser and something off the beaten path of modern games.</p> Carl Sagan Ipsum http://demo.plume.pub/post/sagan-ipsum Fri, 01 May 2026 11:26:51 +0000 sagan-ipsum <p>Preserve and cherish that pale blue dot venture not a sunrise but a galaxyrise another world star stuff harvesting star light are creatures of the cosmos. Realm of the galaxies permanence of the stars a mote of dust suspended in a sunbeam two ghostly white figures in coveralls and helmets are softly dancing radio telescope stirred by starlight. Citizens of distant epochs Sea of Tranquility concept of the number one a very small stage in a vast cosmic arena cosmic ocean dispassionate extraterrestrial observer.</p> Setting Up an Ubuntu Web Server http://demo.plume.pub/post/setting-up-an-ubuntu-web-server Fri, 01 May 2026 11:26:51 +0000 setting-up-an-ubuntu-web-server <p>Having set up several Debian and Ubuntu web servers in the past I thought it would be a good idea to share my process. The following is a relatively comprehensive guide to installing and configuring an Apache based web server with some optimizations and basic resource monitoring. I primarily work with Ubuntu servers, but most of the commands here should work exactly the same in Debian or Ubuntu. I've tried to note where differences may occur.</p> Increasing the Size of a Virtual Hard Drive in VirtualBox http://demo.plume.pub/post/increasing-the-size-of-a-virtual-hard-drive-in-virtualbox Fri, 01 May 2026 11:26:51 +0000 increasing-the-size-of-a-virtual-hard-drive-in-virtualbox <p>I work in Linux primarily but run a Windows 7 virtual machine in VirtualBox so I can use Photoshop and do some necessary testing. Today my VM ran out of space. Silly me thought 20GB would be enough, but after installing service pack 1, dozens of Windows updates and a few programs I had less than 1GB of space left. After a little searching I found an easy way to increase the size of a virtual disk.</p> The 3-2-1 Backup Rule http://demo.plume.pub/post/3-2-1-backup-rule Fri, 01 May 2026 11:26:51 +0000 3-2-1-backup-rule <p>Too many people today don't backup their files. And of those that do, many don't do it well. An easy way to remember a &quot;safe&quot; way to backup your data is with the &quot;3-2-1 Backup Rule&quot; which goes like this:</p> <ul> <li>Keep 3 copies of any important files (your primary/working copy counts as one)</li> <li>Store your files on 2 different media types (Example: Hard drive and in the Cloud)</li> <li>Always have 1 copy off site</li> </ul> Yar Pirate Ipsum http://demo.plume.pub/post/pirate-ipsum Fri, 01 May 2026 11:26:51 +0000 pirate-ipsum <p>Prow scuttle parrel provost Sail ho shrouds spirits boom mizzenmast yardarm. Pinnace holystone mizzenmast quarter crow's nest nipperkin grog yardarm hempen halter furl. Swab barque interloper chantey doubloon starboard grog black jack gangway rutters.</p> Join multiple .avi files in Ubuntu http://demo.plume.pub/post/join-multiple-avi-files-in-ubuntu Fri, 01 May 2026 11:26:51 +0000 join-multiple-avi-files-in-ubuntu <p>I was just in a bit of a pickle and needed to join two .avi files together while in Ubuntu. There are a number of solutions out there, but the most simple solution I could find was via avimerge. Here's how I did it.</p>