<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Projects from Thedro Neely</title>
    <link>https://www.thedroneely.com/projects/</link>
    <description>Recent Projects from Thedro Neely</description>
    <language>en-us</language><lastBuildDate>Thu, 05 May 2022 09:25:23 +0000</lastBuildDate>
    <atom:link href="https://www.thedroneely.com/projects/rss.xml" rel="self" type="application/rss+xml" />
      <item>
        <title>Micro Blog</title>
        <link>https://www.thedroneely.com/projects/micro-blog/</link>
        <pubDate>Thu, 05 May 2022 09:25:23 +0000</pubDate>
        <guid>https://www.thedroneely.com/projects/micro-blog/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://www.thedroneely.com/images/micro-blog.png&#34; alt=&#34;A Micro Blog&#34; title=&#34;
Mobile view of the front page.&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://micro.thedroneely.com/m/tags/docs/&#34;&gt;Demo&lt;/a&gt; and &lt;a href=&#34;https://www.thedroneely.com/git/thedroneely/canory/&#34;&gt;Source&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s been a while since putting together a personal


and this time it&amp;rsquo;s the ever so popular
&lt;a href=&#34;https://en.wikipedia.org/wiki/Microblogging&#34;&gt;micro blog&lt;/a&gt;. After writing
&lt;a href=&#34;https://www.thedroneely.com/posts/hugo-is-good/&#34;&gt;a brief on Hugo&lt;/a&gt;, further research indicated that
standing up a minimal but decent micro blog is not too hard. It should be
obvious, but the design is lifted (inspired) collectively from popular micro
blogs on the Internet (Twitter, Facebook, Tumblr, and
&lt;a href=&#34;https://joinmastodon.org/&#34;&gt;Mastodon&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://www.thedroneely.com/images/micro-blog-desktop.png&#34; alt=&#34;Desktop Layout&#34; title=&#34;
Desktop Layout&#34;&gt;&lt;/p&gt;
&lt;p&gt;The project&amp;rsquo;s name is canory, and no it&amp;rsquo;s not a play on the
&lt;a href=&#34;https://en.wikipedia.org/wiki/Domestic_canary&#34;&gt;domestic canary&lt;/a&gt;. It&amp;rsquo;s the
result of a

 script smashing the words &lt;em&gt;cannon&lt;/em&gt; and
&lt;em&gt;armory&lt;/em&gt; together to make &lt;em&gt;canory&lt;/em&gt;. Armored cannon is its code name,
presumably. If you&amp;rsquo;re going to try out this theme, fair warning that it&amp;rsquo;s
somewhat hacky and incomplete.
&lt;a href=&#34;https://micro.thedroneely.com/m/default/messages/quickstart/#default-messages-quickstart&#34;&gt;Read this thread&lt;/a&gt;
for an installation overview.&lt;/p&gt;
&lt;h2 id=&#34;pure-static-html&#34;&gt;Pure Static HTML&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;HTML&lt;/code&gt; is powerful and getting much more so. This micro blog is compiled to pure
&lt;code&gt;HTML&lt;/code&gt;. The only build steps involve running &lt;code&gt;hugo&lt;/code&gt; and copying &lt;code&gt;html&lt;/code&gt; files to
a place where the &lt;em&gt;almighty&lt;/em&gt; &lt;code&gt;index.html&lt;/code&gt; is understood. That could be a server,
content delivery network (&lt;code&gt;CDN&lt;/code&gt;), or whatever floats your boat. If you want to
explore the full powers of &lt;code&gt;HTML&lt;/code&gt; in all of its glory check out the
&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/HTML&#34;&gt;&lt;code&gt;MDN&lt;/code&gt; (Mozilla Developer Network) Web Docs&lt;/a&gt;
&amp;mdash; it&amp;rsquo;s the


source of truth on &lt;code&gt;HTML&lt;/code&gt; hands down.&lt;/p&gt;
&lt;h2 id=&#34;semantic-pact&#34;&gt;Semantic Pact&lt;/h2&gt;
&lt;p&gt;The markup consists of semantic tags, custom elements and no classes. Solo
maintaining, and handcrafting &lt;code&gt;CSS&lt;/code&gt;
(&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/CSS&#34;&gt;Cascading Style Sheets&lt;/a&gt;) is
much easier this way. Further application of this approach ventures into the
realm of
&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/Web_Components&#34;&gt;web components&lt;/a&gt;,
but only custom elements are written, without using any of the
&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/JavaScript&#34;&gt;&lt;code&gt;JavaScript&lt;/code&gt;&lt;/a&gt; &lt;code&gt;APIs&lt;/code&gt;
&lt;a href=&#34;https://en.wikipedia.org/wiki/API&#34;&gt;(Application Programming Interface)&lt;/a&gt; or
splitting similar constructions into components. The &lt;em&gt;semantic pact&lt;/em&gt; is my
jargon for this approach.&lt;/p&gt;
&lt;h2 id=&#34;content-security-policy&#34;&gt;Content Security Policy&lt;/h2&gt;
&lt;p&gt;Embedding is 
 business. Even though everything is
static, there&amp;rsquo;s no end to the perversity that an embed can do or leak into a
webpage.
&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy&#34;&gt;Content Security Policies&lt;/a&gt;
(&lt;code&gt;CSP&lt;/code&gt;) allow restricting what can happen on a web page with a fine degree of
accuracy.&lt;/p&gt;
&lt;p&gt;Usually my content policies are driven from a server configuration with headers,
but since this theme has to be as pure and as batteries included as possible,
policies are better written using &lt;code&gt;&amp;lt;meta&amp;gt;&lt;/code&gt; tags. Many fine folks
&lt;a href=&#34;https://blog.jeremylikness.com/blog/create-content-security-policy-csp-in-hugo/&#34;&gt;already do this&lt;/a&gt;
with &lt;code&gt;hugo&lt;/code&gt;. All inline scripts have been disabled, but disabling inline
&lt;code&gt;CSS&lt;/code&gt; conclusively will take a bit more cleverness.&lt;/p&gt;
&lt;h2 id=&#34;deno-and-javascript&#34;&gt;Deno and JavaScript&lt;/h2&gt;
&lt;p&gt;This runs nicely without
&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/JavaScript&#34;&gt;&lt;code&gt;JavaScript&lt;/code&gt;&lt;/a&gt;, and you
probably won&amp;rsquo;t even notice the difference, but there are some
&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Glossary/Progressive_Enhancement&#34;&gt;progressive enhancements&lt;/a&gt;
using standard &lt;code&gt;JavaScript&lt;/code&gt;. &lt;a href=&#34;https://deno.land/&#34;&gt;Deno&lt;/a&gt; is the &lt;em&gt;secret sauce&lt;/em&gt;
and a very 

program for strategically avoiding the &lt;a href=&#34;https://www.npmjs.com/&#34;&gt;&lt;code&gt;npm&lt;/code&gt;&lt;/a&gt; ecosystem
and creating a dynamic website. Inside the box, there&amp;rsquo;s optional
&lt;a href=&#34;https://www.typescriptlang.org/&#34;&gt;&lt;code&gt;TypeScript&lt;/code&gt;&lt;/a&gt;, bundling, executable compilation,
&lt;a href=&#34;https://deno.land/manual@v1.26.1/examples/import_export#remote-import&#34;&gt;remote imports&lt;/a&gt;
and more, all for free, and in &lt;em&gt;one&lt;/em&gt; executable &amp;mdash; &lt;code&gt;deno&lt;/code&gt;. Deno for now soft
harnesses bundling a few &lt;code&gt;JavaScript&lt;/code&gt; progressive enhancements, nothing especially
fancy.&lt;/p&gt;
&lt;h2 id=&#34;fetching-remote-data&#34;&gt;Fetching Remote Data&lt;/h2&gt;
&lt;p&gt;In &lt;a href=&#34;https://www.thedroneely.com/posts/hugo-is-good/&#34;&gt;my previous article&lt;/a&gt;, there&amp;rsquo;s no mention of Hugo&amp;rsquo;s
&lt;a href=&#34;https://gohugo.io/templates/data-templates/#get-remote-data&#34;&gt;remote data fetching&lt;/a&gt;
ability, and that&amp;rsquo;s because my tendency is to write about things only after
trying it out completely. Remote data fetching is a very powerful feature,
allowing one to collect dynamic data into the application at compile time and
cache that data. Right now, the micro blog can fetch &lt;code&gt;RSS&lt;/code&gt;
(&lt;a href=&#34;https://en.wikipedia.org/wiki/RSS&#34;&gt;Really Simple Syndication&lt;/a&gt;) feeds (hacky)
at build time. Hugo can fetch a wide array of data types including &lt;code&gt;JSON&lt;/code&gt;
&lt;a href=&#34;https://www.json.org/json-en.html&#34;&gt;(JavaScript Object Notation)&lt;/a&gt;, &lt;code&gt;CSV&lt;/code&gt;
&lt;a href=&#34;https://en.wikipedia.org/wiki/Comma-separated_values&#34;&gt;(Comma Separated Values)&lt;/a&gt;, and
&lt;code&gt;XML&lt;/code&gt; &lt;a href=&#34;https://www.w3.org/XML/&#34;&gt;(Extensible Markup Language)&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;current-limitations-of-hugo&#34;&gt;Current Limitations of Hugo&lt;/h2&gt;
&lt;p&gt;Hugo is about &lt;code&gt;80~90%&lt;/code&gt; complete by my estimation, at least for my imagined
purposes. This theme uses pretty much every feature of &lt;code&gt;hugo&lt;/code&gt; and has brushed up
against some limitations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Error Handling Generality&lt;/strong&gt;: Remote data fetching is a lightning rod for
failure. At the moment, many types of data fetching errors cannot be handled, so
compilation can fall down in varied situations. Fortunately the upstream
developers &lt;a href=&#34;https://github.com/gohugoio/hugo/issues/9737&#34;&gt;appear to be solving&lt;/a&gt;
this limitation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Page Data Structure&lt;/strong&gt;: It would be nice to programmatically instantiate a page
without &lt;a href=&#34;https://www.markdownguide.org/getting-started/&#34;&gt;Markdown&lt;/a&gt;
(&lt;a href=&#34;https://gohugo.io/content-management/page-resources/&#34;&gt;page resources&lt;/a&gt; may
&lt;a href=&#34;https://www.thenewdynamic.com/article/toward-using-a-headless-cms-with-hugo-part-2-building-from-remote-api/&#34;&gt;already allow&lt;/a&gt;
this by pre&amp;ndash;generating &lt;code&gt;markdown&lt;/code&gt;). The page data structure is still sort of a
mystery and maybe this is already possible &amp;mdash; that&amp;rsquo;s an investigation for
another time. Instantiating a post would allow weaving external data into the
page map. My theory is that, you&amp;rsquo;d need to rebuild the page structure manually
first to weave in your own data (for example multiple instances of micro blogs
connecting to each other in a cohesive way).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pagination Generality&lt;/strong&gt;: In terms of pagination, the separation of &lt;code&gt;taxonomy&lt;/code&gt;
and &lt;code&gt;term&lt;/code&gt; was a nice surprise when making this micro blog &amp;mdash; it ultimately
means that my main blog can be vastly simplified. What would be great is if
&lt;code&gt;hugo&lt;/code&gt; could paginate relative to any layout position, but this is probably outside of the
scope of &lt;code&gt;hugo&#39;s&lt;/code&gt; purpose.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;There you have it &amp;mdash; a quick overview of some technical details of note that
arose when crafting this theme. Now the fun of micro blogging begins.&lt;/p&gt;
</description>
      </item>
      
    
      <item>
        <title>News Aggregator</title>
        <link>https://www.thedroneely.com/projects/news-aggregator/</link>
        <pubDate>Wed, 11 Dec 2019 20:52:38 +0000</pubDate>
        <guid>https://www.thedroneely.com/projects/news-aggregator/</guid>
        <description>&lt;figure&gt;
  &lt;a href=&#34;https://www.thedroneely.com/images/news-aggregator.png&#34;&gt;
    &lt;img
      loading=&#34;lazy&#34;
      data-image-zoom=&#34;&#34;
      src=&#34;https://www.thedroneely.com/images/news-aggregator.png&#34;
      alt=&#34;&#34;
      title=&#34;&#34;
      width=&#34;203&#34;
      height=&#34;360&#34;
    /&gt;
  &lt;/a&gt;
  &lt;figcaption&gt;Mobile view of the front page.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;a href=&#34;https://www.bahrep.com&#34;&gt;Demo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a site that&amp;rsquo;s been in my personal use for while. It&amp;rsquo;s a local news
aggregator that gathers stories from around The Bahamas and creates a tight
newspaper esque view. The stories are gathered using old school
&lt;a href=&#34;https://en.wikipedia.org/wiki/RSS&#34;&gt;&lt;code&gt;RSS&lt;/code&gt;.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This website is generated using a simple

 site generator written in &lt;a href=&#34;https://go.dev/doc/&#34;&gt;Go&lt;/a&gt;.
I&amp;rsquo;ve hacked together my own static site generator after taking a peek at both
&lt;a href=&#34;https://github.com/gohugoio/hugo&#34;&gt;Hugo&lt;/a&gt; and
&lt;a href=&#34;https://git.sr.ht/~sircmpwn/openring&#34;&gt;Openring&amp;rsquo;s&lt;/a&gt; source code. The frontend
does not use any frameworks and is implemented with a nested

 based approach to obtain a complex

&lt;/p&gt;
&lt;p&gt;Automatic deployment happens with a simple
&lt;a href=&#34;https://en.wikipedia.org/wiki/POSIX&#34;&gt;&lt;code&gt;POSIX&lt;/code&gt;&lt;/a&gt; compliant shell script. The &lt;code&gt;RSS&lt;/code&gt;
fetch process is decoupled from the website generation process, allowing for
super fast site regeneration.&lt;/p&gt;
&lt;p&gt;Internal web pages are generated and passed through
&lt;a href=&#34;https://github.com/Y2Z/monolith&#34;&gt;&lt;code&gt;monolith&lt;/code&gt;&lt;/a&gt; to

 all assets into a single file. This file is served
in one 
 That is crazy &amp;mdash;
but here&amp;rsquo;s the result of a speed test. In a practical sense, the grade should be
closer to &lt;code&gt;F&lt;/code&gt; since all data is encoded into an &lt;em&gt;unoptimized&lt;/em&gt; document.&lt;/p&gt;
&lt;figure&gt;
  &lt;a href=&#34;https://www.thedroneely.com/images/bahrep-speed-test.png&#34;&gt;
    &lt;img
      loading=&#34;lazy&#34;
      data-image-zoom=&#34;&#34;
      src=&#34;https://www.thedroneely.com/images/bahrep-speed-test.png&#34;
      alt=&#34;&#34;
      title=&#34;&#34;
      width=&#34;800&#34;
      height=&#34;533&#34;
    /&gt;
  &lt;/a&gt;
  &lt;figcaption&gt;Speed Test Results&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;ol&gt;
&lt;li&gt;Note: The source is nothing to write home about but I&amp;rsquo;ll be adding a link to
it once my laziness subsides.&lt;/li&gt;
&lt;/ol&gt;
</description>
      </item>
      
    
      <item>
        <title>Resume</title>
        <link>https://www.thedroneely.com/projects/bulma-resume/</link>
        <pubDate>Tue, 16 Oct 2018 21:37:32 +0000</pubDate>
        <guid>https://www.thedroneely.com/projects/bulma-resume/</guid>
        <description>&lt;figure&gt;
  &lt;a href=&#34;https://www.thedroneely.com/images/bulma-resume.png&#34;&gt;
    &lt;img
      loading=&#34;lazy&#34;
      data-image-zoom=&#34;&#34;
      src=&#34;https://www.thedroneely.com/images/bulma-resume.png&#34;
      alt=&#34;&#34;
      title=&#34;&#34;
      width=&#34;203&#34;
      height=&#34;360&#34;
    /&gt;
  &lt;/a&gt;
  &lt;figcaption&gt;Mobile view of the front page.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;a
  href=&#34;https://www.thedroneely.com/resume&#34;
  title=&#34;https://www.thedroneely.com/resume&#34;
  rel=&#34;noopener no-referrer&#34;
  &gt;Demo&lt;/a&gt; and
&lt;a
  href=&#34;https://www.thedroneely.com/git/thedroneely/thedroneely.com/tree/app/views/resume.view.php&#34;
  title=&#34;https://www.thedroneely.com/git/thedroneely/thedroneely.com/tree/app/views/resume.view.php&#34;
  rel=&#34;noopener no-referrer&#34;
  &gt;Source&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Searching for &amp;ldquo;CSS Framework&amp;rdquo; in DuckDuckGo, Bing, or Google will turn up many
results for &lt;a
  href=&#34;https://bulma.io/&#34;
  title=&#34;https://bulma.io/&#34;
  rel=&#34;noopener no-referrer&#34;
  &gt;Bulma&lt;/a&gt; CSS. This framework appears to be
everyone&amp;rsquo;s new toy. In my camp, Bulma CSS has been a pleasure to work with so
far. This comes from someone who ends up breaking frameworks every so often.&lt;/p&gt;
&lt;p&gt;This is less of a project and more of a quick demonstration of modern resume
design using Bulma. Something like this could take a bit of time to get right
from scratch, but Bulma&amp;rsquo;s Flexbox based design makes it almost effortless.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a simple web-page but the possibilities are endless. We can add some
overlays, sprinkle in a bit of JavaScript or divvy up additional information
into active tabs. In addition to Bulma, many good things have been said about
&lt;a
  href=&#34;https://tachyons.io/&#34;
  title=&#34;https://tachyons.io/&#34;
  rel=&#34;noopener no-referrer&#34;
  &gt;Tachyons&lt;/a&gt; and &lt;a
  href=&#34;https://tailwindcss.com/&#34;
  title=&#34;https://tailwindcss.com/&#34;
  rel=&#34;noopener no-referrer&#34;
  &gt;Tailwind CSS,&lt;/a&gt;
which are also excellent lightweight alternatives to
&lt;a
  href=&#34;https://getbootstrap.com/&#34;
  title=&#34;https://getbootstrap.com/&#34;
  rel=&#34;noopener no-referrer&#34;
  &gt;Bootstrap.&lt;/a&gt;&lt;/p&gt;
</description>
      </item>
      
    
      <item>
        <title>Personal Portfolio</title>
        <link>https://www.thedroneely.com/projects/personal-portfolio/</link>
        <pubDate>Fri, 01 Jun 2018 21:37:32 +0000</pubDate>
        <guid>https://www.thedroneely.com/projects/personal-portfolio/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://www.thedroneely.com/images/personal-portfolio.png&#34; alt=&#34;Mobile front page of the website&#34; title=&#34;
Mobile view of the front page.&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.thedroneely.com&#34;&gt;Demo&lt;/a&gt; and
&lt;a href=&#34;https://www.thedroneely.com/git/thedroneely/thedroneely.com&#34;&gt;Source&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is the website you&amp;rsquo;re browsing right now. The structure is based on design
patterns from the &lt;a href=&#34;https://github.com/laravel/laravel#readme&#34;&gt;Laravel&lt;/a&gt; &lt;code&gt;PHP&lt;/code&gt;
framework. The comments are handled by &lt;a href=&#34;https://posativ.org/isso&#34;&gt;Isso&lt;/a&gt; &amp;mdash; a
backend commenting server written in &lt;a href=&#34;https://www.python.org/&#34;&gt;Python.&lt;/a&gt; The
static parts of this website are compiled by &lt;a href=&#34;https://gohugo.io&#34;&gt;Hugo,&lt;/a&gt; while
the &lt;a href=&#34;https://secure.php.net&#34;&gt;&lt;code&gt;PHP&lt;/code&gt;&lt;/a&gt; front controller handles the rest.&lt;/p&gt;
&lt;p&gt;The backend traffic dashboard is integrated into the website using
&lt;a href=&#34;https://goaccess.io&#34;&gt;GoAccess&lt;/a&gt; which is a traffic monitor that reads the access
logs of &lt;a href=&#34;https://github.com/nginx/nginx&#34;&gt;&lt;code&gt;nginx&lt;/code&gt;&lt;/a&gt;. Nothing much else to it. This
website is small, lean, and compact since it was intended to run on a tiny
&lt;a href=&#34;https://www.raspberrypi.org&#34;&gt;Raspberry Pi.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;content-management-system&#34;&gt;Content Management System&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;https://www.thedroneely.com/images/cockpit-cms.png&#34; alt=&#34;Cockpit content management system&#34; title=&#34;
Cockpit dashboard&#34;&gt;&lt;/p&gt;
&lt;p&gt;The content on this site is sometimes edited using an &amp;ldquo;&lt;code&gt;API&lt;/code&gt; driven
&lt;a href=&#34;https://en.wikipedia.org/wiki/Headless_content_management_system&#34;&gt;headless&lt;/a&gt;
&lt;code&gt;CMS&lt;/code&gt;&amp;rdquo; 
 &lt;a href=&#34;https://getcockpit.com/&#34;&gt;Cockpit.&lt;/a&gt; The
&lt;a href=&#34;https://github.com/iakta/hugocockpit#readme&#34;&gt;Hugo Cockpit&lt;/a&gt; addon is

 to control &lt;code&gt;hugo&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://www.thedroneely.com/images/cockpit-cms-post.png&#34; alt=&#34;Cockpit dashboard editor&#34; title=&#34;
Editing an article in the Cockpit dashboard&#34;&gt;&lt;/p&gt;
</description>
      </item>
      
    
      <item>
        <title>Voiceover Website</title>
        <link>https://www.thedroneely.com/projects/voiceover-website/</link>
        <pubDate>Mon, 07 May 2018 21:37:32 +0000</pubDate>
        <guid>https://www.thedroneely.com/projects/voiceover-website/</guid>
        <description>&lt;figure&gt;
  &lt;a href=&#34;https://www.thedroneely.com/images/voiceover-website.png&#34;&gt;
    &lt;img
      loading=&#34;lazy&#34;
      data-image-zoom=&#34;&#34;
      src=&#34;https://www.thedroneely.com/images/voiceover-website.png&#34;
      alt=&#34;&#34;
      title=&#34;&#34;
      width=&#34;203&#34;
      height=&#34;360&#34;
    /&gt;
  &lt;/a&gt;
  &lt;figcaption&gt;Mobile view of the front page.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;a
  href=&#34;https://www.edwinmattiacci.com&#34;
  title=&#34;https://www.edwinmattiacci.com&#34;
  rel=&#34;noopener no-referrer&#34;
  &gt;Demo&lt;/a&gt; and
&lt;a
  href=&#34;https://www.thedroneely.com/git/thedroneely/edwinmattiacci.com&#34;
  title=&#34;https://www.thedroneely.com/git/thedroneely/edwinmattiacci.com&#34;
  rel=&#34;noopener no-referrer&#34;
  &gt;Source&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Voice acting is one of my secret hobbies, and this website is but a small
gateway. Many web applications consisting of &lt;code&gt;HTML&lt;/code&gt;, &lt;code&gt;CSS&lt;/code&gt;, &amp;amp; &lt;code&gt;JavaScript&lt;/code&gt; are
hidden away on my computer but consider this the first that actually does
something.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s made using a combination of &lt;a
  href=&#34;https://secure.php.net&#34;
  title=&#34;https://secure.php.net&#34;
  rel=&#34;noopener no-referrer&#34;
  &gt;PHP&lt;/a&gt; for dynamic
content and &lt;a
  href=&#34;https://gohugo.io&#34;
  title=&#34;https://gohugo.io&#34;
  rel=&#34;noopener no-referrer&#34;
  &gt;Hugo&lt;/a&gt; for static content &amp;ndash; a
&lt;a
  href=&#34;https://github.com/mariadb&#34;
  title=&#34;https://github.com/mariadb&#34;
  rel=&#34;noopener no-referrer&#34;
  &gt;MySQL&lt;/a&gt; database for the backend, and
&lt;a
  href=&#34;https://github.com/nginx/nginx&#34;
  title=&#34;https://github.com/nginx/nginx&#34;
  rel=&#34;noopener no-referrer&#34;
  &gt;Nginx&lt;/a&gt; as the web server. Everything sits
behind a front controller and the project structure is based on a very barebones
implementation of the &lt;a
  href=&#34;https://github.com/laravel/laravel&#34;
  title=&#34;https://github.com/laravel/laravel&#34;
  rel=&#34;noopener no-referrer&#34;
  &gt;Laravel&lt;/a&gt; framework.&lt;/p&gt;
&lt;p&gt;The content of this site is stored in markdown files and the static components
of the website are recompiled by &lt;a
  href=&#34;https://gohugo.io&#34;
  title=&#34;https://gohugo.io&#34;
  rel=&#34;noopener no-referrer&#34;
  &gt;Hugo.&lt;/a&gt; The comment section
is handled by a &lt;code&gt;PHP&lt;/code&gt; commenting system called
&lt;a
  href=&#34;http://tildehash.com/?page=hashover&#34;
  title=&#34;http://tildehash.com/?page=hashover&#34;
  rel=&#34;noopener no-referrer&#34;
  &gt;HashOver.&lt;/a&gt;&lt;/p&gt;
</description>
      </item>
      
    
  </channel>
</rss>
