Personal blog written from scratch using Node.js, Bootstrap, and MySQL.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jrtechs 05b9a230bc point quad tree post 1 week ago
.github/ISSUE_TEMPLATE Created a template for creating blog post issues on git repository. 1 year ago
.idea Added a sitemap generator 2 years ago
admin Got the category pages to work under the routes system. 1 year ago
blog fixed youtube rendering and code on /posts 2 months ago
blogContent point quad tree post 1 week ago
docs added image for readme update 4 months ago
includes fixed youtube rendering and code on /posts 2 months ago
photography Worked on implementing photo post pages. 1 year ago
routes fixed svg width again 2 months ago
sites Got the project sites working and fixed bug with pagination bar. 1 year ago
templates fixed youtube rendering and code on /posts 2 months ago
utils simplified some of my dated sql logic 4 months ago
.gitignore Added git ignore to project. 1 year ago Create 1 year ago
LICENSE Updated License 2 years ago quick update to readme 4 months ago
config.json Started working on rss feed 9 months ago
docker-compose.yml Created docker script to run mysql db for local development. 9 months ago
jrtechs.service Created systemd script to run blog. 1 year ago Created admin server and fixed code highlighting. 2 years ago
package.json Started working on rss feed 9 months ago
previewer.js Got the photos post to have their write up display above the photos. 1 year ago
robots.txt added meta stuff for google 2 years ago
run Finished vim configuration post. 1 year ago
server.js Got the project sites working and fixed bug with pagination bar. 1 year ago
sitemap.txt Started working on rss feed 9 months ago


This is a personal blog where I write about everything from projects to tutorials on sophisticated machine learning algorithms.
If you want to stay up to date with new posts, subscribe to my RSS feed.

This project is a custom express application that uses pandoc to render latex/markdown files as HTML pages.
This site has its very own admin portal to manage posts and downloads.

Posts Page


  • mysql
  • node + npm
  • pandoc
  • nxinx (for https)


Installing the node-dependencies is as easy as running the npn install command:

npm install

All configurations are currentl found in the config.json file.
In this file you specify things like port, sql connection, etc.

There is a provided bash script that will run the application

chmod +x

For deployment I used a Nginx
proxy to expose the node application running on port 8000 to port 80. This proxy is necessary
because you can’t run a node application as port 80 unless you are root, which would be a
security vulnerability.

Unless otherwise stated, everything in this repository can be
assumed to fall under these two licenses depending on what type of file it is.

Code, scripts

All code, scripts, or other technical / programmatic items in this repo are
assumed fall under the Mozilla Public License 2.0
unless otherwise stated.

Guides, articles, posts, misc. content

Creative Commons Attribution-ShareAlike 4.0 International License

All guides, scripts, posts, or otherwise non-programmatic content in this
repo is assumed to fall under
the Creative Commons Attribution-ShareAlike 4.0 International
unless otherwise stated.

Node Dependencies

- express
- express-session
- mysql
- sanitizer
- promise
- highlight
- crypto
- remarkable
- markdown
- highlight.js
- compression
- memory-cache --save
- request
- nodemailer
- nodemailer-smtp-transport
- whiskers
- node-pandoc

Color scheme

The color scheme has been changing a lot recently.

Adobe Color Wheel

top 2C3E50
secondary 498FBE
highlight:00F0E1, 88BAFF

Image Optimization

Stuff for automated image compression

apt-get install jpegoptim
apt-get install optipng


NGINX Configuration
    listen 80;

    # redirect http requests to https
    return 301$request_uri;

    listen 443 ssl http2;


    ssl_certificate /etc/letsencrypt/live/;
    ssl_certificate_key /etc/letsencrypt/live/;

    location / {
        proxy_pass http://localhost:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;

Projects Sites

As I develop more projects I would like an easy way to add and host them on my website without having to create another sub-domain and generate more ssl certs.
I simply want the project site to be accessible under

State Diagram of Plan