From 792bddad56fa91301c5305f42d3e9007593f745d Mon Sep 17 00:00:00 2001 From: Solomon Laing Date: Sat, 2 Jul 2022 22:56:03 +0930 Subject: [PATCH] moved posts from old site and started customising --- .gitignore | 8 + .gitmodules | 6 + config.toml | 10 +- content/posts/an-old-new-upgrade-to-my-k8s.md | 188 +++++++++++++++ content/posts/example.md | 21 ++ content/posts/first-hugo-post.md | 6 + .../hardkernel-odroid-kubernetes-cluster.md | 31 +++ content/posts/icons-svgs-fonts-and-icomoon.md | 80 +++++++ content/posts/k3s-on-odroid-mc1s-a-guide.md | 216 ++++++++++++++++++ content/posts/this-website.md | 23 ++ static/favicon.ico | Bin 0 -> 318 bytes static/style.css | 3 + themes/inklo | 1 + 13 files changed, 590 insertions(+), 3 deletions(-) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 content/posts/an-old-new-upgrade-to-my-k8s.md create mode 100644 content/posts/example.md create mode 100644 content/posts/first-hugo-post.md create mode 100644 content/posts/hardkernel-odroid-kubernetes-cluster.md create mode 100644 content/posts/icons-svgs-fonts-and-icomoon.md create mode 100644 content/posts/k3s-on-odroid-mc1s-a-guide.md create mode 100644 content/posts/this-website.md create mode 100644 static/favicon.ico create mode 100644 static/style.css create mode 160000 themes/inklo diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cd2be44 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +# Generated files by hugo +/public/ +/resources/_gen/ +/assets/jsconfig.json +hugo_stats.json + +# Temporary lock file while building +/.hugo_build.lock diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e2668b8 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "themes/blank"] + path = themes/blank + url = https://github.com/vimux/blank +[submodule "themes/inklo"] + path = themes/inklo + url = ssh://git@gitlab.inkletblot.com:10622/inkletblot/inklo diff --git a/config.toml b/config.toml index e1ddfc8..4b39876 100644 --- a/config.toml +++ b/config.toml @@ -1,4 +1,8 @@ -baseURL = 'http://example.org/' +baseURL = 'https://inkletblot.com/' languageCode = 'en-us' -title = 'My New Hugo Site' -theme = 'blank' +title = "Ink's Space" +theme = 'inklo' + +[params] + favicon = "/favicon.ico" + stylesheet = "/style.css" diff --git a/content/posts/an-old-new-upgrade-to-my-k8s.md b/content/posts/an-old-new-upgrade-to-my-k8s.md new file mode 100644 index 0000000..949812f --- /dev/null +++ b/content/posts/an-old-new-upgrade-to-my-k8s.md @@ -0,0 +1,188 @@ +--- +title: "An Old New Upgrade to My K8s" +date: 2021-12-21 +draft: false +--- + +# An Old New Upgrade to Kube + +By Me. + +## Intro + +I have had a little kubernetes cluster up and running for some time on a collection of Odroid MC1's and an N2. However, recently (I mean not so recently now but for the sake of the story) I attempted to update it and all went wrong, I got rancher set up on it but nothing, and I mean NOTHING, is compiled for armhv7. So, I gave up. I've actually now put linux mint on the N2 and use it as a home theater PC which works quite well. + +After some time, and lots of forgetting, I came across an auction (for the locals [Mason Grey Strange](https://mgs.net.au)) that runs once a month selling old and new IT equipment. In the auction I found a set of HP-t620s which were being sold in lots of 5 for pittance. Seeing them reminded me of my original cluster so I bought them to replace it. + +## The Setup + +Unfortunately, I didn't actually record the process of setting up rancher, however, given that it was being set up on standard x86_64 architecture one could pick any of the myriad of guides for setting up rancher (which I set up in a VM on my server) with a k3s cluster (the t620s), which is what I did. + +![Current Rancher Dashboard](https://gitlab.inkletblot.com/inkletblot/simple-blog-api/-/raw/master/assets/rancher.png) + +## It's Use + +For a period of time I didn't set up anything on it. I did integrate it with my gitlab server, but integration was as far as I took it, I didn't bother with setting up any CI/CD related things. + +However, I quickly realised that using it to replace my existing CI/CD solution for the couple of projects I've got it set up on would be a fun little undertaking at probably simplify things for me. + +> As an aside, I'm yet to put much thought into security for my server or the applications I run on it, I use basic best practice however, my old CI/CD solution broke most of them, and more. So using the k3s cluster was definitely an upgrade there. + +As such, that is what I did. + +Not only is the API for this website running on it, all my gitlab runners run on it now. The setup was very simple, with most of it being standard k3s/k8s and gitlab integration configuration. All in all it greatly simplified my gitlab setup and I'm very happy with it. + +When I started writing this I had a much grander vision for the end result, however, it really isn't that grand. The final solution for the CI/CD can be found [here](). Using helm simplified things greatly. + +## Extras + +I don't have a comprehensive list of useful things and stuff I did while implementing all of this. I did it some time ago and didn't note much of it down. However, I will try and list of some of the bits and pieces I have. + +### Deployment.yaml + +This is used by helm as part of the CI/CD pipeline for deploying the app (I believe, it's been a while and I could be wrong). + + apiVersion: apps/v1 + kind: Deployment + metadata: + name: simple-blog-api + labels: + app: python + spec: + replicas: 3 + selector: + matchLabels: + app: python + strategy: + type: RollingUpdate + rollingUpdate: + maxSurge: 1 + maxUnavailable: 33% + template: + metadata: + labels: + app: python + spec: + containers: + - name: python + image: inkletblot/simple-blog-api: + ports: + - containerPort: 5000 + livenessProbe: + httpGet: + path: /posts + port: 5000 + initialDelaySeconds: 2 + periodSeconds: 2 + readinessProbe: + httpGet: + path: /posts + port: 5000 + initialDelaySeconds: 2 + periodSeconds: 2 + +### gitlab-ci.yml + +This is the gitlab-ci configuration I'm using. It integrates with docker (as I couldn't get a local registry working with my current setup). I'll be entirely honest here, I don't exactly know how the helm integration works, I believe it works magically in the background using the variables supplied to the pipeline through gitlab. + + image: docker:20.10.5 + + stages: + - build + - push + - deploy + + .docker_before_script: + before_script: + - echo -n $CI_REGISTRY_TOKEN | docker login -u + "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY + + build: + extends: .docker_before_script + stage: build + tags: + - docker + script: + - docker pull $CI_REGISTRY_IMAGE:latest || true + - docker build --cache-from + $CI_REGISTRY_IMAGE:latest --tag + $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA . + - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA + + # Tag the "master" branch as "latest" + push latest: + extends: .docker_before_script + stage: push + tags: + - docker + script: + - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA + - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA + $CI_REGISTRY_IMAGE:latest + - docker push $CI_REGISTRY_IMAGE:latest + only: + - master + + # Docker tag any Git tag + push tag: + extends: .docker_before_script + stage: push + tags: + - docker + only: + - tags + script: + - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA + - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA + $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG + - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG + + # Docker Deploy + # Not currently in use, here for posterity. + # deploy: + # extends: .docker_before_script + # stage: deploy + # tags: + # - docker + # environment: + # name: Production + # url: "$LIVE_SERVER_FQDN" + # before_script: + # - 'command -v ssh-agent >/dev/null || ( apt-get + update -y && apt-get install openssh-client -y)' + # - eval $(ssh-agent -s) + # - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - + # - mkdir -p ~/.ssh + # - chmod 700 ~/.ssh + # - '[[ -f /.dockerenv ]] && echo -e "Host + *\n\tStrictHostKeyChecking no\n\n" >> ~/.ssh/config' + # script: + # - echo 'sed 's/"$CI_REGISTRY_IMAGE".*/ + "$CI_REGISTRY_IMAGE":"$CI_COMMIT_SHA"'' + # - ssh -J "$PROD_SERVER_USER"@"$LIVE_SERVER_FQDN" + "$PROD_SERVER_USER"@"$PROD_SERVER_LOCAL_HOST_NAME" "cd + simple-blog-api && sed -i 's/simple-blog-api.*/ + simple-blog-api:"$CI_COMMIT_SHA"\x27/' docker-compose. + yml && docker-compose up -d --remove-orphans + --force-recreate" + + # Helm Deploy + # Currently in use, works with *Magic* + deploy: + stage: deploy + image: + name: alpine/helm:latest + entrypoint: [""] + script: + - helm upgrade + --install + --wait + --set image.tag=${CI_COMMIT_SHA} + simple-blog-api-${CI_COMMIT_REF_SLUG} + devops/simple-blog-api + environment: + name: production + +That is about all I can come up with at the moment. I hope it is useful for someone. + +-ink diff --git a/content/posts/example.md b/content/posts/example.md new file mode 100644 index 0000000..76df608 --- /dev/null +++ b/content/posts/example.md @@ -0,0 +1,21 @@ +--- +title: "Exmaple" +date: 2021-06-02 +draft: false +--- + +## Test Post + +This is an example of rendering a page of mostly styled html from markdown + +I'm *hoping* that this works. + + + #!python + # Some python script would look like this + print("hello world.") + + +You can also have code inline like `this`. + +[Here](https://www.example.com) is a link for good measure. diff --git a/content/posts/first-hugo-post.md b/content/posts/first-hugo-post.md new file mode 100644 index 0000000..b5f7c51 --- /dev/null +++ b/content/posts/first-hugo-post.md @@ -0,0 +1,6 @@ +--- +title: "First Hugo Post" +date: 2022-07-02T22:26:56+09:30 +draft: true +--- + diff --git a/content/posts/hardkernel-odroid-kubernetes-cluster.md b/content/posts/hardkernel-odroid-kubernetes-cluster.md new file mode 100644 index 0000000..3121569 --- /dev/null +++ b/content/posts/hardkernel-odroid-kubernetes-cluster.md @@ -0,0 +1,31 @@ +--- +title: "Hardkernel Odroid Kubernetes Cluster" +date: 2022-06-16 +draft: false +--- + +# Odroid Cluster + +Say hello to my little odroid kubernetes cluster project. + +Details are: 5 x Odroid-MC1's as worker nodes. All up 10gb RAM and 40 cores. 1 x Odroid-N2 as master node. Plus 5v 20a power supply and Netgear GS108. + +Got parts as a Christmas present to myself some years ago with no plan as to what I was going to with them. While putting it together I though I could use it to learn Kubernetes as I've seen others do similar things. + +I followed [this](https://www.digitalocean.com/community/tutorials/how-to-create-a-kubernetes-cluster-using-kubeadm-on-ubuntu-18-04) tutorial loosely and it's all working wonderfully. It's cool to be introduced to ansible, which I had heard about but not used before. I'm currently developing some apps that I'd like to run on it. + +![My odroid MC1 and N2 cluster](https://gitlab.inkletblot.com/inkletblot/simple-blog-api/-/raw/master/assets/odroid-cluster-2.jpg) + +-ink + +# Update Mid 2021 + +I decided to totally rebuild this having never been able to get Rancher set up on it. See the details of that [here](https://www.inkletblot.com/projects/k3s-on-odroid-mc1s-a-guide) + +-ink + +# Update 2021-12-21 + +I have sadly now decomissioned this little cluster. The five MC1 units are currently unused and the N2 is now my media PC in my bedroom. Not all is sad though, I decomissiod it because I replaced it with a bigger and better setup using old HP t620 thin clients, of which I got 5 for a rediculously good price at a local IT liquidation auction. See more [here](https://www.inkletblot.com/projects/an-old-new-upgrade-to-kube) + +-ink diff --git a/content/posts/icons-svgs-fonts-and-icomoon.md b/content/posts/icons-svgs-fonts-and-icomoon.md new file mode 100644 index 0000000..1a7e8ac --- /dev/null +++ b/content/posts/icons-svgs-fonts-and-icomoon.md @@ -0,0 +1,80 @@ +--- +title: "Icons, SVGs, Fonts, and Icomoon" +date: 2021-07-28 +draft: true +--- + +# Icomoon for Icon Managament + +## Icons, SVGs, Fonts, and Icomoon. + +Early in the year I, for a project at work, was tasked with coming up with a solution to deal with icons. We had decided to use FluentUI icons from microsoft, but the 2Mb font file that they provide was a bit much to include in the app. So a solution was required. We wanted our solution to be easily versioned and source controlled. + +After some time looking at different methods of processing font files to either parse out unwanted fonts or transpose wanted ones to a new file I realised that it was a pointless endeavour and I called it quits. At least from what I saw, fonts suck and I don't want anything to do with them. After some time feeling sorry for myself for a bit I decided to have a look at how primetek deal with their icons prime-icons, which we had considered for use but then abandoned. + +> an ironic note is that I end at the solution primetek use - as far as I can see - but not right away. + +### A potential solution + +I noticed the use of some clever CSS/font work, creating a tag and prepending it with a specific character of a font, which just happens to be an icon. + +The basics of the solution are below. + + #!scss + @charset "UTF-8"; + @font-face { + font-family: "icomoon"; + src: url("fonts/icomoon.eot?36cs2a"); + src: url("fonts/icomoon.eot?36cs2a#iefix") format("embedded-opentype"), url("fonts/icomoon.ttf?36cs2a") + format("truetype"), url("fonts/icomoon.woff?36cs2a") format("woff"), + url("fonts/icomoon.svg?36cs2a#icomoon") format("svg"); + font-weight: normal; + font-style: normal; + font-display: block; + } + [class^="my-icons-"], + [class*=" my-icons-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: "icomoon" !important; + speak: never; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + .my-icons-icon-1:before { + content: ""; + } + + .my-icons-icon-2:before { + content: ""; + } + +Then to insert the icon where it is wanted one can simply do the following + +`` + +And the icon specified as content in the scss above will sit in the place of the `` tag. + +### Icomoon + +This lead me to looking at solutions for converting a collection of SVGs to a singular font file. Microsoft provides SVG copies of all of the fluent icons on github so we had easy access to all the icons we wanted in that format. Turns out this is not an easy task to do without a large amount of work. Originally we had wanted an in house solution to complete this conversion. But alas. + +Realising that completing the conversion (on a short timescale without a lot of work) was totally unrealistic, I started looking at online solutions and came across Icomoon. This was after quite some searching throughout which I never heard it mentioned. I'm not sure which search term found it but I know that it was a direct search that did and not an article or forum post that lead me to it. + +Upon uploading some test icons and downloading the font file I realised that I had stumbled upon the very same solution that primetek was using for prime-icons, give or take some small changes that they have made to make things better/easier for their users. + +### The end + +And with that, I had found our solution. + +Icomoon is really a magical black box but what it produces is brilliant. + +Source controlling the processed files and building the font and css into an npm package that we store in a private registry worked great and we have been using the same solution since, approx. 8 months I think. If ever you need a simple way of producing your own set of easily usable icons for a project, I suggest Icomoon. + +-ink. diff --git a/content/posts/k3s-on-odroid-mc1s-a-guide.md b/content/posts/k3s-on-odroid-mc1s-a-guide.md new file mode 100644 index 0000000..19f6bdd --- /dev/null +++ b/content/posts/k3s-on-odroid-mc1s-a-guide.md @@ -0,0 +1,216 @@ +--- +title: "K3s on Odroid MC1s, a Guide." +date: 2021-08-09 +draft: false +--- + +# DISCLAIMER + +This is not really a guide, it's essentially my notes from when I set up k3s on my Odroid MC1 cluster. + +# Setting up an Odroid MC1/N2 K3S cluster + +I initially saw a video by NetworkChuck about setting up a Raspberry Pi k3s cluster, see his blog post [here](https://learn.networkchuck.com/courses/take/ad-free-youtube-videos/lessons/26093614-i-built-a-raspberry-pi-super-computer-ft-kubernetes-k3s-cluster-w-rancher). I first went and tried to set up k3s on [my Odroid cluster](https://www.inkletblot.com/hardkernel-odroid-kubernetes-cluster) using his method, however as noted at the bottom of this post, I had some issues with it. So, after some time trying to fix the issues that were preventing me from getting his method working, I went looking for another option. + +## My personal notes + +I have included these just in case they lead someone else in the right direction in the future. + +> It seems networkchuck's setup does not work for me on my odroids, it gets installed but is failing consistently for some reason. +> I will try with this/these soon: +> [option 1](https://medium.com/@amadmalik/installing-kubernetes-on-raspberry-pi-k3s-and-docker-on-ubuntu-20-04-ef51e5e56), +> [option 2](https://computingforgeeks.com/install-kubernetes-on-ubuntu-using-k3s/) + +> It seems that this is my issue: [Kubernetes CGROUP PIDS](https://forum.odroid.com/viewtopic.php?p=321432&sid=cfa9f65dab7eaa4a56c67b0bafe6ff60#p321432) + +## The Docker Method + +### Initial Setup + +Firstly, set up master and worker hosts. + +My set up is odroid n2 as master with ip address 180 +and then 5 odroid mc1s as workers with ips 181-5 + +Both network and hostname can be setup by mounting rootfs and manually editing/adding the required files + +Example netplan '10-config.yaml': + + #!yaml + network: + version: 2 + renderer: networkd + ethernets: + eth0: + addresses: [192.168.0.XXX/16] + gateway4: 192.168.0.1 + nameservers: + addresses: [192.168.0.1, 1.1.1.1] + search: [mydomain] + +Also set timezone if you want. + +`sudo timedatectl set-timezone Australia/Adelaide` + +In my case the following was used: + +1. flash image to micro sdcard +2. mount micro sdcard rootfs partition: + `mount /dev/mmkblk... /mnt/tmp` +3. edit `/etc/hostname` and add the netplan config above to `/etc/netplan` +4. unmount `/mnt/tmp` +5. stick sdcard in odroid SBC and power on. + +### Kernel Patch for MC1s + +We must rebuild kernel with updated options so that cgroup_pids is enabled. Hardkernel has a guide [here](https://wiki.odroid.com/odroid-xu4/os_images/linux/ubuntu_5.4/ubuntu_5.4/kernel_build_guide) for rebuilding, only two edits are required after the `make odroidxu4_defconfig` step, they are covered [here](https://forum.odroid.com/viewtopic.php?p=321432&sid=cfa9f65dab7eaa4a56c67b0bafe6ff60#p321432) + +note that the following tools are required for the build: bison, flex, libssl-dev, and bc + +`apt install bison flex libssl-dev bc -y` + +### The K3S install + +Run the following on all nodes: + + #!shell + iptables -F \ + && update-alternatives --set iptables /usr/sbin/iptables-legacy \ + && update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy \ + && reboot + + apt update; apt upgrade -y; apt autoremove -y; apt clean; apt install docker.io curl -y + reboot + + systemctl start docker + systemctl enable docker + + systemctl status docker + + # Be sure that the firewall is disabled for ease + ufw disable + +Then run the following only on the master node: + + #!shell + # for master + curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" sh -s - --docker + + # check its running + systemctl status k3s + kubectl get nodes + + # Get token from master, make sure to store it somewhere + cat /var/lib/rancher/k3s/server/node-token + +Then run the following on the worker nodes, updating the command for each: + + #!shell + # for workers + # Fill this out ... + curl -sfL http://get.k3s.io | K3S_URL=https://:6443 K3S_TOKEN= + K3S_NODE_NAME="odroid-mc1-X" sh -s - --docker + + systemctl status k3s-agent + +And thus you should be done, check the master node to see: + + #!shell + # Check node was added on master + kubectl get nodes + +And all should be up and running correctly, it was for me at least. + +I have kept the following notes attached here for posterity, really they came first in this effort - chronologically - but given I stopped at random near the end I felt it better to lead with the successful solution. + +-ink + +--- + +## Networkchuck + +This did not initially work for me and I gave up on it, I think the issue was actually the cgroup_pids thing covered above but once I got my second attempt working I didn't want to come back to this. + +Once these have been set up with ip addresses and hostnames (odroid-n2, odroid-mc1-1(to 5)), you will want to set up ssh access to each machine, I have a couple of ansible playbooks that I use for this. + +Either the following to set up users and access: + + #!yml + - hosts: all + become: yes + tasks: + - name: create the 'kuber' user + user: name=kuber append=yes state=present createhome=yes bash=/bin/bash + + - name: allow 'kuber' to have passwordless sudo + lineinfile: + dest: /etc/sudoers + line: "kuber ALL=(ALL) NOPASSWD: ALL" + validate: "visudo -cf %s" + + - name: set up authorised keys for the 'kuber' user + authorized_key: user=kuber key="{{item}}" + with_file: + - ~/.ssh/id_rsa.pub + + +Or if you already set up users: + + #!yml + - hosts: all + become: yes + tasks: + - name: set up authorised keys for the 'root' user + authorized_key: user=root key="{{item}}" + with_file: + - ~/.ssh/id_rsa.pub + +The above can be used with a hosts file such as the following + + [masters] + master ansible_host=192.168.0.XXX ansible_user= ansible_ssh_pass= + + [workers] + worker1 ansible_host=192.168.0.XXX ansible_user= ansible_ssh_pass= + worker2... + ... + + [all:vars] + ansible_python_interpreter=/usr/bin/python3 + +Then the following commands: + + #!shell + sudo iptables -F \ + && sudo update-alternatives --set iptables /usr/sbin/iptables-legacy \ + && sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy \ + && sudo reboot + +useful command formatted from step 2.2.1 of reference material [here](https://learn.networkchuck.com/courses/take/ad-free-youtube-videos/lessons/26093614-i-built-a-raspberry-pi-super-computer-ft-kubernetes-k3s-cluster-w-rancher) + +Then the following on the master node: + +`curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" sh -s -` + +Then on the master node grab its node token + +`sudo cat /var/lib/rancher/k3s/server/node-token` + +Then run the following on each of the workers: +(note in my case curl was not installed) + +[your server] = master node ip + +YOURTOKEN = token from above + +servername = unique name for node (I use hostname) + + #!shell + curl -sfL https://get.k3s.io | K3S_TOKEN="YOURTOKEN" + K3S_URL="https://[your server]:6443" K3S_NODE_NAME="servername" sh -z + + # I used + apt install curl -y && curl -sfL https://get.k3s.io | + K3S_TOKEN="YOURTOKEN" K3S_URL="https://[your server]:6443" K3S_NODE_NAME="servername" sh -z + +Sadly this is where my notes ended as, although the install worked, all of the system pods were failing and thus I moved on to the method listed above. diff --git a/content/posts/this-website.md b/content/posts/this-website.md new file mode 100644 index 0000000..0e9697d --- /dev/null +++ b/content/posts/this-website.md @@ -0,0 +1,23 @@ +--- +title: "This Website" +date: 2022-06-13 +draft: false +--- + +# Inkletblot[]().com + +This website has existed in one for or another for upwards of 10 years at this point. It is essentially the catalyst for my love of programming, technology, and for my choice of study at university, and my career. When I first created it I was in my early teens and it was created using solely HTML and CSS. Since then each time I learn of some new technology through uni, on my own steam, or at work, I rework the site a little bit. The current design is my favourite so far. It's also the most complex. + +### A little timeline + +* 2009 - sites initial creation, very basic hand rolled static site. Contents is a bio and some downloads (probably poorly considered by my teen self) to different things I liked. + +* 2010-2014 - site remains largely unchanged, it is re-created early on and has downloads removed. + +* 2015 - a forum is created (now removed until further notice) and added to the site following a long forgotten tutorial on how to create a PHP based forum. Along with this, the knowledge gained from creating the forum is used to create a very basic gallery. It was open to the public for uploads and there was a global clear button. Very simple comment threads were also used. + +* 2018 - a major change occurs. The forum, site, and gallery, are all recreated in angularjs and node APIs are built for the forum and gallery. This came from a web dev topic I completed at uni. Everything looked pretty similar to the previous iteration the implementations were completely new. I hosted the node APIs on the Kubernetes cluster I talk about in another post. Their management was a pain though for reasons I won't get into here which leads me to... + +* 2020-2021 - the site is rewritten yet again, this time using angular11 (something I was introduced to through work). The forum and gallery are removed from the site and instead a simple blog is added. I will cover the simple blog api I have created in another post however you can find it on my [gitlab](https://gitlab.inkletblot.com/inkletblot/simple-blog-api). I do plan on recreating the forum and gallery at some point. However, I think I am going to fucus on this little blog for now. I want to add more content and make it a bit more feature rich if I can. + +* the future - I guess we will see. diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..abeb8dd21d239e350ea466128d6c6896117afdc8 GIT binary patch literal 318 zcmZvXF$%&!5Ji7tMC^8p2&OSv1Y@U-wM4~QOvK)E1OyS%S}1r1TPrKO93qVuut{a* zIulJQXLkL?*Mc*K7&p!H2?qr literal 0 HcmV?d00001 diff --git a/static/style.css b/static/style.css new file mode 100644 index 0000000..72739ab --- /dev/null +++ b/static/style.css @@ -0,0 +1,3 @@ +body { + background: #747474 +} diff --git a/themes/inklo b/themes/inklo new file mode 160000 index 0000000..6bc835f --- /dev/null +++ b/themes/inklo @@ -0,0 +1 @@ +Subproject commit 6bc835f483981915aaf1f205a3fdb93ebef397f0