Compare commits
No commits in common. "10666a91ad78011702526c7b3d387121f616b751" and "c014001c83b4185388445b9f6fc29c1e37705b4e" have entirely different histories.
10666a91ad
...
c014001c83
|
@ -1,10 +1,8 @@
|
||||||
# basedData.io
|
# Bitlab21
|
||||||
|
|
||||||
My name is Sam Chance, and this is my personal site.
|
Welcome to Bitlab21! My name is Sam Chance, and this is my personal site.
|
||||||
|
|
||||||
I am an professional Analytics Engineer with a passion for working with data.
|
I host various content here that interests me.
|
||||||
|
|
||||||
I build data pipelines for analytical projects, some of which I host on this site.
|
|
||||||
|
|
||||||
Feel free to look around. If you have any questions, then you can email me on *contact@sjplab.com*.
|
Feel free to look around. If you have any questions, then you can email me on *contact@sjplab.com*.
|
||||||
|
|
||||||
|
@ -14,30 +12,32 @@ This site is still very much under construction.
|
||||||
|
|
||||||
### Shortcuts to some of my work:
|
### Shortcuts to some of my work:
|
||||||
|
|
||||||
- [basedData Data Lab](/data-lab) A selection of charts and metrics obtained from public data
|
[Bitcoin metrics](/bitcoin) A selection of charts and metrics obtained from public data
|
||||||
|
|
||||||
- [Map Printing Service](https://semitamaps.com) A free map printing service based on Openstreetmaps
|
[Semita Maps](https://semitamaps.com) A free map printing service based on Openstreetmaps
|
||||||
|
|
||||||
- [Code base](https://git.bitlab21.com) My personal self-hosted git repo using Gitea
|
[Code base](https://git.bitlab21.com) My personal self-hosted git repo using Gitea
|
||||||
|
|
||||||
- [Nixos config](https://git.bitlab21.com/sam/nixos) My Nixos configuration
|
[Nixos config](https://git.bitlab21.com/sam/nixos) My Nixos configuration
|
||||||
|
|
||||||
|
[Recipes](/recipes) My personal recipe book
|
||||||
|
|
||||||
### Software I use:
|
### Software I use:
|
||||||
|
|
||||||
- [**Neovim**](https://neovim.io/) for text editing (my neovim config is part of my [nixos](https://git.bitlab21.com/sam/nixos) configuration)
|
[**Neovim**](https://neovim.io/) for text editing (my neovim config is part of my [nixos](https://git.bitlab21.com/sam/nixos) configuration)
|
||||||
|
|
||||||
- I use **Linux** on all my machines
|
I use **Linux** on all my machines
|
||||||
|
|
||||||
- **Nixos** and **Arch Linux** are my Linux distros of choice
|
**Nixos** and **Arch Linux** are my Linux distros of choice
|
||||||
|
|
||||||
- [**dwm**](https://dwm.suckless.org) is my window manager (my dwm [config](https://git.bitlab21.com/sam/dwm))
|
[**dwm**](https://dwm.suckless.org) is my window manager (my dwm [config](https://git.bitlab21.com/sam/dwm))
|
||||||
|
|
||||||
- [**st**](https://st.suckless.org) is my terminal emulator (my st [config](https://git.bitlab21.com/sam/st))
|
[**st**](https://st.suckless.org) is my terminal emulator (my st [config](https://git.bitlab21.com/sam/st))
|
||||||
|
|
||||||
- I use [**QGIS**](https://www.qgis.org/) and [**Postgis**](https://postgis.net/) for geospatial work
|
I use [**QGIS**](https://www.qgis.org/) and [**Postgis**](https://postgis.net/) for geospatial work
|
||||||
|
|
||||||
- [**DBT**](https://github.com/dbt-labs/dbt-core) for data modelling
|
[**DBT**](https://github.com/dbt-labs/dbt-core) for data modelling
|
||||||
|
|
||||||
- [**Postgres**](https://www.postgresql.org/) is my relational database of choice to power my backends
|
[**Postgres**](https://www.postgresql.org/) is my relational database of choice to power my backends
|
||||||
|
|
||||||
- [**Hugo**](https://gohugo.io/) to build this [**website**](https://git.bitlab21.com/sam/bitlab21.com)
|
[**Hugo**](https://gohugo.io/) to build this [**website**](https://git.bitlab21.com/sam/bitlab21.com)
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
title: "Data Lab"
|
||||||
|
---
|
||||||
|
|
||||||
|
Welcome to the __Data Lab__. Here I present a collection of different data-driven projects I've worked on.
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
title: "basedData Data Lab"
|
|
||||||
---
|
|
||||||
|
|
||||||
Welcome to the basedData __Data Lab__. Here I present a collection of different data-driven projects I've worked on.
|
|
|
@ -1,5 +1,5 @@
|
||||||
baseURL = 'https://baseddate.io/'
|
baseURL = 'https://bitlab21.com/'
|
||||||
languageCode = 'en-gb'
|
languageCode = 'en-gb'
|
||||||
title = 'baseddata.io'
|
title = 'Bitlab21'
|
||||||
|
|
||||||
markup.highlight.noClasses=false
|
markup.highlight.noClasses=false
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
<script src="https://cdn.jsdelivr.net/npm/echarts@5.5.1/dist/echarts.min.js"></script>
|
|
||||||
<div id="chart">
|
<div id="chart">
|
||||||
<canvas id="{{ .id }}"></canvas>
|
<canvas id="{{ .id }}"></canvas>
|
||||||
<script src="{{ .src }}"></script>
|
<script src="{{ .src }}"></script>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<header>
|
<header>
|
||||||
<nav class="navbar" role="navigation">
|
<nav class="navbar" role="navigation">
|
||||||
<div class="navbar__left">
|
<div class="navbar__left">
|
||||||
<a href="/"><strong>basedData.io</strong></a>
|
<a href="/"><strong>Bitlab21.com</strong></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="navbar__right">
|
<div class="navbar__right">
|
||||||
<div class="navbar-links">{{ partial "navbarlinks.html" . }}</div>
|
<div class="navbar-links">{{ partial "navbarlinks.html" . }}</div>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<li class="navbar_link_dropdown">
|
<li class="navbar_link_dropdown">
|
||||||
<a href="#" class="dropbtn">Projects</a>
|
<a href="#" class="dropbtn">Projects</a>
|
||||||
<div class="navbar-link-dropdown-content">
|
<div class="navbar-link-dropdown-content">
|
||||||
<a href="/data-lab">Data Lab</a>
|
<a href="/data-analysis">Data Analysis</a>
|
||||||
<a href="https://semitamaps.com">Map Printing</a>
|
<a href="https://semitamaps.com">Map Printing</a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -112,11 +112,6 @@ a:hover {
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.home-page li {
|
|
||||||
left: 25px;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.profile-img {
|
.profile-img {
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
|
|
|
@ -1,21 +1,13 @@
|
||||||
let dataArr = [];
|
let dataArr = [];
|
||||||
const myChart = echarts.init(document.getElementById("chart"));
|
const myChart = echarts.init(document.getElementById("chart"));
|
||||||
|
|
||||||
async function fetchDataForChart() {
|
$.get("https://api.bitlab21.com/price", {}, (response) => {
|
||||||
try {
|
dataArr = response;
|
||||||
const apiEndpoint = "https://api.bitlab21.com/price";
|
console.log(dataArr);
|
||||||
const response = await fetch(apiEndpoint);
|
initEchart();
|
||||||
if (!response.ok) {
|
});
|
||||||
throw new Error(`HTTP error! status: ${response.status}`);
|
|
||||||
}
|
|
||||||
const dataArr = await response.json();
|
|
||||||
initEchart(dataArr);
|
|
||||||
} catch (error) {
|
|
||||||
console.error("Fetching data failed:", error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function initEchart(dataArr) {
|
function initEchart() {
|
||||||
const option = {
|
const option = {
|
||||||
backgroundColor: backgroundColor,
|
backgroundColor: backgroundColor,
|
||||||
tooltip: {
|
tooltip: {
|
||||||
|
@ -64,5 +56,3 @@ function initEchart(dataArr) {
|
||||||
|
|
||||||
myChart.setOption(option);
|
myChart.setOption(option);
|
||||||
}
|
}
|
||||||
|
|
||||||
fetchDataForChart();
|
|
||||||
|
|
|
@ -97,7 +97,7 @@ function nFormatter(value, digits) {
|
||||||
: "0";
|
: "0";
|
||||||
}
|
}
|
||||||
|
|
||||||
window.addEventListener("resize", function () {
|
$(window).on("resize", function () {
|
||||||
if (myChart != null && myChart != undefined) {
|
if (myChart != null && myChart != undefined) {
|
||||||
myChart.resize();
|
myChart.resize();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +1,13 @@
|
||||||
let dataArr = [];
|
let dataArr = [];
|
||||||
const myChart = echarts.init(document.getElementById("chart"));
|
const myChart = echarts.init(document.getElementById("chart"));
|
||||||
|
|
||||||
async function fetchDataForChart() {
|
$.get("https://api.bitlab21.com/feerates", {}, (response) => {
|
||||||
try {
|
dataArr = response;
|
||||||
const apiEndpoint = "https://api.bitlab21.com/feerates";
|
console.log(dataArr);
|
||||||
const response = await fetch(apiEndpoint);
|
initEchart();
|
||||||
if (!response.ok) {
|
});
|
||||||
throw new Error(`HTTP error! status: ${response.status}`);
|
|
||||||
}
|
|
||||||
const dataArr = await response.json();
|
|
||||||
initEchart(dataArr);
|
|
||||||
} catch (error) {
|
|
||||||
console.error("Fetching data failed:", error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function initEchart(dataArr) {
|
function initEchart() {
|
||||||
const option = {
|
const option = {
|
||||||
backgroundColor: backgroundColor,
|
backgroundColor: backgroundColor,
|
||||||
tooltip: {
|
tooltip: {
|
||||||
|
@ -107,4 +99,3 @@ function initEchart(dataArr) {
|
||||||
|
|
||||||
myChart.setOption(option);
|
myChart.setOption(option);
|
||||||
}
|
}
|
||||||
fetchDataForChart();
|
|
||||||
|
|
|
@ -1,21 +1,13 @@
|
||||||
let dataArr = [];
|
let dataArr = [];
|
||||||
const myChart = echarts.init(document.getElementById("chart"));
|
const myChart = echarts.init(document.getElementById("chart"));
|
||||||
|
|
||||||
async function fetchDataForChart() {
|
$.get("https://api.bitlab21.com/hashrate", {}, (response) => {
|
||||||
try {
|
dataArr = response;
|
||||||
const apiEndpoint = "https://api.bitlab21.com/hashrate";
|
console.log(dataArr);
|
||||||
const response = await fetch(apiEndpoint);
|
initEchart();
|
||||||
if (!response.ok) {
|
});
|
||||||
throw new Error(`HTTP error! status: ${response.status}`);
|
|
||||||
}
|
|
||||||
const dataArr = await response.json();
|
|
||||||
initEchart(dataArr);
|
|
||||||
} catch (error) {
|
|
||||||
console.error("Fetching data failed:", error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function initEchart(dataArr) {
|
function initEchart() {
|
||||||
const option = {
|
const option = {
|
||||||
backgroundColor: backgroundColor,
|
backgroundColor: backgroundColor,
|
||||||
tooltip: {
|
tooltip: {
|
||||||
|
@ -114,4 +106,3 @@ function initEchart(dataArr) {
|
||||||
|
|
||||||
myChart.setOption(option);
|
myChart.setOption(option);
|
||||||
}
|
}
|
||||||
fetchDataForChart();
|
|
||||||
|
|
|
@ -1,21 +1,13 @@
|
||||||
let dataArr = [];
|
let dataArr = [];
|
||||||
const myChart = echarts.init(document.getElementById("chart"));
|
const myChart = echarts.init(document.getElementById("chart"));
|
||||||
|
|
||||||
async function fetchDataForChart() {
|
$.get("https://api.bitlab21.com/miner_rewards", {}, (response) => {
|
||||||
try {
|
dataArr = response;
|
||||||
const apiEndpoint = "https://api.bitlab21.com/miner_rewards";
|
console.log(dataArr);
|
||||||
const response = await fetch(apiEndpoint);
|
initEchart();
|
||||||
if (!response.ok) {
|
});
|
||||||
throw new Error(`HTTP error! status: ${response.status}`);
|
|
||||||
}
|
|
||||||
const dataArr = await response.json();
|
|
||||||
initEchart(dataArr);
|
|
||||||
} catch (error) {
|
|
||||||
console.error("Fetching data failed:", error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function initEchart(dataArr) {
|
function initEchart() {
|
||||||
const option = {
|
const option = {
|
||||||
backgroundColor: backgroundColor,
|
backgroundColor: backgroundColor,
|
||||||
tooltip: {
|
tooltip: {
|
||||||
|
@ -146,4 +138,3 @@ checkboxLog.addEventListener("change", (e) => {
|
||||||
dataZoom: dataZoom((start = isChecked ? 0 : 90)),
|
dataZoom: dataZoom((start = isChecked ? 0 : 90)),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
fetchDataForChart();
|
|
||||||
|
|
Loading…
Reference in New Issue