yup.
This commit is contained in:
86
become-an-engineer.html
Normal file
86
become-an-engineer.html
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>rawley.xyz</title>
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body style="margin: 0; padding: 0; background-color: rgb(254, 249, 232)">
|
||||||
|
<a href="/">>> Home</a>
|
||||||
|
<div style="margin: 48px; width: 530px;">
|
||||||
|
<h1>Become an Engineer</h1>
|
||||||
|
<p>
|
||||||
|
This learning track assumes you have a computer built after 2004, with
|
||||||
|
<a href="https://debian.org">Debian Linux</a>, <a href="https://freebsd.org">FreeBSD</a> or <a href="https://openbsd.org">OpenBSD</a> installed. (Windows simply won't do.)
|
||||||
|
</p>
|
||||||
|
<h2>Start here (read both and do all of the exercises)</h2>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="https://mitp-content-server.mit.edu">Structure and Interpretation of Computer Programs by Sussman et. al</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://en.wikipedia.org/wiki/The_C_Programming_Language">The C Programming Language by K&R</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h2>Getting deeper (read all 3, do all exercises)</h2>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="https://algs4.cs.princeton.edu/home/">Algorithms by Robert Sedgewick</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://en.wikipedia.org/wiki/Types_and_Programming_Languages">Types and Programming Languages by Benjamin C. Pierce</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://www.macs.hw.ac.uk/~greg/books/gjm.lambook88.pdf">An Introduction to Functional Programming Through Lambda Calculus by Greg Michaelson</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h2>Low level learning</h2>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="https://mitpress.mit.edu/9780262640688/the-elements-of-computing-systems/">The Elements of Computing Systems by Noam Nisan and Shimon Schocken</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h2>Category theory</h2>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/">Category Theory for Programmers by Bartosz Milewski</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h2>High(er) Level Languages (pick at least 2)</h2>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="https://www.oreilly.com/library/view/programming-perl-4th/9781449321451/">Programming Perl by Christiansen, foy, and Orwant</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://learnyousomeerlang.com/">Learn You Some Erlang for Great Good by Fred Hebert</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="http://learnyouahaskell.com/">Learn You a Haskell for Great Good by Miran Lipovaca</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://www.stroustrup.com/tour2.html">A Tour of C++ by Stroustrup</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="http://www.cs.cmu.edu/~rwh/isml/book.pdf">Programming in Standard ML by Robert Harper</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://www.oreilly.com/library/view/the-ruby-programming/9780596516178/">The Ruby Programming Language by Flanagan & Matz</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>
|
||||||
|
This is the way to becoming a truly great software engineer. I've read all of these books, and I can say that they all manifest within
|
||||||
|
me a strong sense of confidence, and the ability to adapt to any situation that might come my way in computer science.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
You may be reading this list, thinking... what about Java or JavaScript??? Now, I don't think these languages are bad per-se, but I do think
|
||||||
|
they have the ability to destroy your life. Once you've used Java or JavaScript, there is a good chance you will become closed off from
|
||||||
|
the rest of the computing world, falling into a world of patterns and objects. You may also find that languages like these have the adverse
|
||||||
|
effect of having incredibly low skill-ceilings, which compounds the idea of you becoming stuck. A low ceiling, and a low floor, is a prison, not
|
||||||
|
a tool to conjure the spirits of the computer.
|
||||||
|
</p>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
3
cpanfile
3
cpanfile
@@ -1,3 +0,0 @@
|
|||||||
requires 'Text::Markdown';
|
|
||||||
requires 'Mojolicious';
|
|
||||||
requires 'Mojo::SQLite';
|
|
||||||
BIN
gnu_emacs.png
Normal file
BIN
gnu_emacs.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.8 KiB |
43
index.html
Normal file
43
index.html
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>rawley.xyz</title>
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body style="margin: 0; padding: 0; background-color: rgb(254, 249, 232)">
|
||||||
|
<div style="margin: 48px; width: 530px;">
|
||||||
|
<a href="https://openbsd.org"><img style="width: 300px; height: 240px;" src="puffy.png"/></a>
|
||||||
|
<p>
|
||||||
|
Christian, Husband, Dad, Functional programmer, Emacs fan and BSD user.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
I am the creator of many <a href="https://www.gnu.org/philosophy/free-sw.en.html">free-software</a> libraries and tools.
|
||||||
|
As well as an ambassador for reading and knowledge transfer. I'm currently working on building a
|
||||||
|
platform to make reading fun and accessible for everyone. I try my best to bring out the best in everyone,
|
||||||
|
by pushing the envelope of what is perceived to be possible.
|
||||||
|
</p>
|
||||||
|
<h2>Links</h2>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="https://github.com/rawleyfowler">Github</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://github.com/rawleyfowler/emacs">Emacs</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/become-an-engineer">The real software path.</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a>rawleyfowler at proton dot me</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div>
|
||||||
|
<a href="http://www.gnu.org/software/emacs">
|
||||||
|
<img src="gnu_emacs.png"/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
34
insert.pl
34
insert.pl
@@ -1,34 +0,0 @@
|
|||||||
#!/usr/bin/env perl
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings;
|
|
||||||
|
|
||||||
use Carp qw(croak);
|
|
||||||
use Mojo::SQLite;
|
|
||||||
use Mojo::File;
|
|
||||||
use feature qw(say);
|
|
||||||
|
|
||||||
my $db = Mojo::SQLite->new('sqlite:site.db')->db;
|
|
||||||
|
|
||||||
my $title = shift || croak 'Expected $1 to be title';
|
|
||||||
my $slug = shift || croak 'Expected $2 to be slug';
|
|
||||||
my $content = shift || croak 'Expected $3 to be md file';
|
|
||||||
|
|
||||||
$content = Mojo::File->new($content)->slurp;
|
|
||||||
|
|
||||||
my $post = {
|
|
||||||
title => $title,
|
|
||||||
slug => $slug,
|
|
||||||
content => $content
|
|
||||||
};
|
|
||||||
|
|
||||||
if ( my $old_post = $db->select( 'posts', ['id'], { slug => $slug } )->hash ) {
|
|
||||||
say 'Updating post.';
|
|
||||||
$db->update( 'posts', $post, { id => $old_post->{id} } );
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
say 'Inserting post.';
|
|
||||||
$db->insert( 'posts', $post );
|
|
||||||
}
|
|
||||||
|
|
||||||
say 'Finished.';
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.3 KiB |
@@ -1,133 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en" data-bs-theme="dark">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<meta name="description" content="Rawley.xyz, Rawley Fowler's web ring">
|
|
||||||
<title>rawley.xyz</title>
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
|
||||||
<style>
|
|
||||||
div.ticked > i::before {
|
|
||||||
content: "`";
|
|
||||||
}
|
|
||||||
|
|
||||||
div.ticked > i::after {
|
|
||||||
content: "`";
|
|
||||||
}
|
|
||||||
|
|
||||||
body * {
|
|
||||||
font-size: calc(0.33vw + 12px);
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body class="container fw-light text-decoration-none">
|
|
||||||
<nav class="d-flex flex-row mt-3">
|
|
||||||
<div class="me-3">
|
|
||||||
<a href="/">Home</a>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a href="/blog">Blog</a>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<h1 class="display-1 mt-3">Rawley Fowler</h1>
|
|
||||||
<p>
|
|
||||||
Hi, I'm Rawley, a Software Engineer from rural Saskatchewan, Canada.
|
|
||||||
I specialize in <a href="https://perl.org">Perl</a>, and <a href="https://go.dev">Go</a> development, tackling all areas
|
|
||||||
of the software life cycle. I also like to dabble in Pure Functional languages. At work I develop microservices using Java, SpringBoot, and PostgreSQL. I'm passionate about software performance,
|
|
||||||
functional programming, and making programs safer. If you have a position that you think I'd like (especially focusing on Perl, or Go), please feel free to <a href="mailto:rawleyfowler@proton.me">email</a> me.
|
|
||||||
Outside of my professional work, I spend a lot of time <a href="https://github.com/rawleyfowler">contributing</a> to open-source projects. You may or may not have used some of them :)
|
|
||||||
</p>
|
|
||||||
<h2 class="pt-5 display-3">Skills</h2>
|
|
||||||
<p>
|
|
||||||
The following are technologies that I can confidently say I am good at.
|
|
||||||
</p>
|
|
||||||
<h3 class="display-6">Programming Languages</h3>
|
|
||||||
<div class="ticked">
|
|
||||||
<i>Perl</i>
|
|
||||||
<i>Go</i>
|
|
||||||
<i>Raku (Perl 6)</i>
|
|
||||||
<i>OCaml</i>
|
|
||||||
<i>Haskell</i>
|
|
||||||
<i>Java</i>
|
|
||||||
<i>PlpgSQL</i>
|
|
||||||
</div>
|
|
||||||
<h3 class="display-6">Operating Systems</h3>
|
|
||||||
<div class="ticked">
|
|
||||||
<i>FreeBSD</i>
|
|
||||||
<i>GNU/Linux</i>
|
|
||||||
<i>OpenBSD</i>
|
|
||||||
<i>NetBSD</i>
|
|
||||||
</div>
|
|
||||||
<h3 class="display-6">Other</h3>
|
|
||||||
<div class="ticked">
|
|
||||||
<i>Docker</i>
|
|
||||||
<i>Docker Compose</i>
|
|
||||||
<i>PostgreSQL</i>
|
|
||||||
<i>MySQL</i>
|
|
||||||
<i>AWS</i>
|
|
||||||
<i>RabbitMQ</i>
|
|
||||||
<i>CouchDB</i>
|
|
||||||
<i>Podman</i>
|
|
||||||
</div>
|
|
||||||
<h2 class="pt-5 display-3">Experience</h2>
|
|
||||||
<p>
|
|
||||||
I've been a Software Engineer for around 3 years. I've been contributing to open-source for even longer.
|
|
||||||
</p>
|
|
||||||
<div>
|
|
||||||
<b>Farm Credit Canada (FCC)</b>: Software Developer Consultant. <b>Jan 2023</b> - <b>Present</b>
|
|
||||||
<p>
|
|
||||||
Designing, developing, and maintaining a large array of SpringBoot microservices to modernize core customer and lending business functions.
|
|
||||||
Maintenance on a multi-million line of code Java 7 monolith, including migrating code to new microservices.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<b><a href="https://github.com/mollusc-labs">Mollusc Labs</a></b>: Sole Proprietor. <b>Jun 2023</b> - <b>Present</b>
|
|
||||||
<p>
|
|
||||||
A small business that I am sole-proprietor of. This business exists to allow me to build software in my spare-time and license it under an organization.
|
|
||||||
When taking solo contracts I also use this business as the business name at which the work is being completed by.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<b>Saskatchewan Polytechnic</b>: Instructor. <b>May 2023</b> - <b>Jun 2023</b>
|
|
||||||
<p>
|
|
||||||
Instructed a single class during the summer semester at Saskatchewan Polytechnic.
|
|
||||||
This class covered Docker, Software Performance, Docker Compose, and the basics of Software Architecture.
|
|
||||||
Students in the end had to develop and deploy a microservice using Docker and a technology of their choice, which was then benchmarked on the last day of class.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<b>Dev-Pro Consulting</b>: Instructor. <b>Jun 2022</b> - <b>Jan 2023</b>
|
|
||||||
<p>
|
|
||||||
Worked on various internal projects at Dev-Pro including re-designing from the ground-up, a major internal product, using WebSockets and Angular 14 features.
|
|
||||||
Daily work consisted of developing with Angular, Java, and PostgreSQL, and deploying through an internal Jenkins CI/CD platform.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<h2 class="pt-5 display-3">Education</h2>
|
|
||||||
<div>
|
|
||||||
<b>Saskatchewan Polytechnic</b>: Computer Systems Technology. <b>Sept 2021</b> - <b>Jun 2023</b>
|
|
||||||
<p>
|
|
||||||
Took a 2 year diploma to upgrade my skills, this included courses in Azure Cloud, Advanced Database Management, and ended with a capstone project using
|
|
||||||
.NET, Vue.js, Docker, Pusher, Heroku, AWS RDS and PostgreSQL.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<b>University of Regina</b>: Bachelor of Science in Mathematics. <b>Sept 2020</b> - <b>Jun 2021</b>
|
|
||||||
<p>
|
|
||||||
Studied various mathematical concepts (mostly Linear Algebra, and Calculus), ultimately did not finish due to extraneous circumstances. Hoping to have the time one day to complete this degree.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="my-5">
|
|
||||||
Links: <a href="mailto:rawleyfowler@proton.me">rawleyfowler@proton.me</a> > <a href="https://github.com/rawleyfowler">GitHub</a> > <a href="https://github.com/mollusc-labs">Mollusc Labs</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
Rawley.xyz is powered by:
|
|
||||||
</div>
|
|
||||||
<footer class="d-flex flex-row flex-wrap my-3 mb-5">
|
|
||||||
<a href="https://www.perl.org"><img class="me-3" width="80" height="80" src="/perl.png" alt="The Perl Programming Language" /></a>
|
|
||||||
<a href="https://www.alpinelinux.org"><img width="80" height="80" src="alpine.png" alt="Alpine Linux" /></a>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
BIN
public/perl.png
BIN
public/perl.png
Binary file not shown.
|
Before Width: | Height: | Size: 33 KiB |
173
site.pl
173
site.pl
@@ -1,173 +0,0 @@
|
|||||||
#!/usr/bin/env perl
|
|
||||||
use 5.016;
|
|
||||||
|
|
||||||
use Mojolicious::Lite -signatures;
|
|
||||||
use Mojo::SQLite;
|
|
||||||
use Mojo::File;
|
|
||||||
use Carp qw(croak);
|
|
||||||
|
|
||||||
my $sql = Mojo::SQLite->new('sqlite:site.db');
|
|
||||||
helper db => sub { state $db = $sql->db };
|
|
||||||
|
|
||||||
$sql->migrations->name('posts_table')->from_string(<<EOF)->migrate;
|
|
||||||
-- 1 up
|
|
||||||
CREATE TABLE IF NOT EXISTS posts (
|
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
||||||
title TEXT,
|
|
||||||
content TEXT,
|
|
||||||
slug TEXT,
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
||||||
);
|
|
||||||
-- 1 down
|
|
||||||
DROP TABLE posts;
|
|
||||||
EOF
|
|
||||||
|
|
||||||
$sql->migrations->name('posts_index')->from_string(<<EOF)->migrate;
|
|
||||||
-- 2 up
|
|
||||||
CREATE INDEX IF NOT EXISTS slug_idx ON posts (slug);
|
|
||||||
-- 2 down
|
|
||||||
DROP INDEX slug_idx;
|
|
||||||
EOF
|
|
||||||
|
|
||||||
get '/' => sub {
|
|
||||||
my $c = shift;
|
|
||||||
$c->reply->static('index.html');
|
|
||||||
};
|
|
||||||
|
|
||||||
get '/blog' => sub {
|
|
||||||
my $c = shift;
|
|
||||||
$c->stash( posts => [ $c->db->select('posts')->hashes->each ] );
|
|
||||||
$c->render;
|
|
||||||
};
|
|
||||||
|
|
||||||
get '/blog/:post' => sub {
|
|
||||||
my $c = shift;
|
|
||||||
my $post = $c->db->select(
|
|
||||||
'posts',
|
|
||||||
[ 'title', 'content', 'slug' ],
|
|
||||||
{ slug => $c->param('post') }
|
|
||||||
)->hash;
|
|
||||||
|
|
||||||
return $c->render( template => 'not_found', status => 404 ) unless $post;
|
|
||||||
|
|
||||||
$c->stash( post => $post );
|
|
||||||
$c->render( template => 'post' );
|
|
||||||
};
|
|
||||||
|
|
||||||
app->start;
|
|
||||||
|
|
||||||
__DATA__
|
|
||||||
@@ not_found.html.ep
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en" data-bs-theme="dark">
|
|
||||||
%= include '_header', title => '404 Not Found'
|
|
||||||
<body class="container fw-light">
|
|
||||||
%= include '_nav'
|
|
||||||
<h1 class="mt-3 display-2">404 - Not Found</h1>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
@@ post.html.ep
|
|
||||||
% use Text::Markdown qw(markdown);
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en" data-bs-theme="dark">
|
|
||||||
<head>
|
|
||||||
<title><%= $post->{title} %></title>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
|
||||||
<link href="/post.css" rel="stylesheet">
|
|
||||||
<style>
|
|
||||||
body * {
|
|
||||||
font-size: calc(0.33vw + 13px);
|
|
||||||
}
|
|
||||||
h2 {
|
|
||||||
font-size: calc(24px + 0.33vw);
|
|
||||||
}
|
|
||||||
h3 {
|
|
||||||
font-size: calc(20px + 0.33vw);
|
|
||||||
}
|
|
||||||
h4 {
|
|
||||||
font-size: calc(18px + 0.33vw);
|
|
||||||
}
|
|
||||||
h5, h6 {
|
|
||||||
font-size: calc(16px + 0.33vw);
|
|
||||||
}
|
|
||||||
|
|
||||||
h2, h3, h4, h5, h6 {
|
|
||||||
font-weight: 300;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body class="container fw-light">
|
|
||||||
<div class="mt-3">
|
|
||||||
<a href="/blog"><< Go Back</a>
|
|
||||||
</div>
|
|
||||||
<h1 class="mt-3 display-2"><%= $post->{title} %></h1>
|
|
||||||
<div>
|
|
||||||
<%== markdown($post->{content}) %>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
@@ blog.html.ep
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en" data-bs-theme="dark">
|
|
||||||
%= include '_header', title => 'Blog'
|
|
||||||
<body class="container fw-light">
|
|
||||||
%= include '_nav'
|
|
||||||
<h1 class="mt-3 display-2">Blog</h1>
|
|
||||||
<p>
|
|
||||||
This is my blog; it represents my opinions, not that of my employer(s) past, present or future.
|
|
||||||
My blog is made up of Functional Programming, Perl & Raku, Rants, Politics, and whatever else I dream up.
|
|
||||||
If you are prone to becoming upset about things, this might not be the best place for you.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
All content is licensed under the <a href="https://creativecommons.org/licenses/by-sa/3.0/">Creative-Commons Attribution-ShareALike 3.0</a> license unless specified otherwise.
|
|
||||||
</p>
|
|
||||||
<div class="d-flex flex-row justify-content-between mt-3">
|
|
||||||
<h2>Title</h2>
|
|
||||||
<h2>Publish Date</h2>
|
|
||||||
</div>
|
|
||||||
% for (@$posts) {
|
|
||||||
<div class="d-flex flex-row justify-content-between mt-3">
|
|
||||||
<a href="/blog/<%= $_->{slug} %>"><%= $_->{title} %></a>
|
|
||||||
<div><%= $_->{created_at} %></div>
|
|
||||||
</div>
|
|
||||||
% }
|
|
||||||
%= include '_footer'
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
@@ _header.html.ep
|
|
||||||
<head>
|
|
||||||
<title><%= $title %></title>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
body * {
|
|
||||||
font-size: calc(0.33vw + 12px);
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
@@ _footer.html.ep
|
|
||||||
<div class="mt-5">Rawley.xyz is powered by:</div>
|
|
||||||
<footer class="d-flex flex-row flex-wrap mt-3 mb-5">
|
|
||||||
<a href="https://www.perl.org"><img class="me-3" width="80" height="80" src="/perl.png" alt="The Perl Programming Language" /></a>
|
|
||||||
<a href="https://www.alpinelinux.org"><img width="80" height="80" src="/alpine.png" alt="Alpine Linux" /></a>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
@@ _nav.html.ep
|
|
||||||
<nav class="d-flex flex-row text-decoration-none mt-3">
|
|
||||||
<div class="me-3">
|
|
||||||
<a href="/">Home</a>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a href="/blog">Blog</a>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
Reference in New Issue
Block a user