lukeonline

source for my website
git clone https://git.lukeonline.net/repos/lukeonline
Log | Files | Refs | README | LICENSE

commit 876c99a2f2e69b870c3c4aa95f8f639e97b08de2
parent dec24555ca4ecc18b1e05c6660546a6b12c863ba
Author: LukeJ <luke.jones.2567@gmail.com>
Date:   Tue, 29 Sep 2026 13:56:07 +0100

feat: add content to vcs

Diffstat:
Apublic/assets/github.svg | 72++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apublic/assets/linkedin.svg | 4++++
Apublic/blog/image/090326/backlinks.png | 0
Apublic/blog/image/090326/board.png | 0
Apublic/blog/image/090326/homepage.png | 0
Apublic/blog/image/130924/01.jpg | 0
Apublic/blog/image/130924/02.jpg | 0
Apublic/blog/image/130924/03.jpg | 0
Apublic/blog/image/130924/04.jpg | 0
Apublic/blog/image/130924/05.jpg | 0
Apublic/blog/image/130924/06.jpg | 0
Apublic/blog/image/130924/07.jpg | 0
Apublic/blog/image/130924/08.jpg | 0
Apublic/blog/image/130924/09.jpg | 0
Apublic/blog/image/130924/10.jpg | 0
Apublic/blog/image/130924/11.jpg | 0
Apublic/blog/image/130924/12.jpg | 0
Apublic/blog/image/130924/13.jpg | 0
Apublic/blog/image/130924/14.jpg | 0
Apublic/blog/image/130924/15.jpg | 0
Apublic/blog/image/130924/video.mp4 | 0
Apublic/blog/image/211024/graphics.png | 0
Apublic/blog/image/211024/screenshot1.png | 0
Apublic/blog/image/211024/screenshot2.png | 0
Apublic/blog/image/241024/screenshot1.png | 0
Apublic/blog/image/241024/screenshot2.png | 0
Apublic/blog/image/241024/screenshot3.png | 0
Apublic/blog/image/241024/screenshot4.png | 0
Apublic/blog/image/251024/newgraphics.png | 0
Apublic/blog/image/261024/fullview.jpg | 0
Apublic/blog/image/261024/ladder.JPG | 0
Apublic/blog/image/261024/lens.jpg | 0
Apublic/photos/source/202207200001.jpg | 0
Apublic/photos/source/202208050001.jpg | 0
Apublic/photos/source/202208050002.jpg | 0
Apublic/photos/source/202208060001.jpg | 0
Apublic/photos/source/202208060002.jpg | 0
Apublic/photos/source/202208070001.jpg | 0
Apublic/photos/source/202208070002.jpg | 0
Apublic/photos/source/202208070003.jpg | 0
Apublic/photos/source/202208070004.jpg | 0
Apublic/photos/source/202307170001.jpg | 0
Apublic/photos/source/202310080001.jpg | 0
Apublic/photos/source/202402160001.jpg | 0
Apublic/photos/source/202407240001.jpg | 0
Apublic/photos/source/202409160001.jpg | 0
Apublic/photos/source/202411060001.jpg | 0
Apublic/photos/source/202501290001.jpg | 0
Apublic/photos/source/202501290002.jpg | 0
Apublic/photos/source/202501290003.jpg | 0
Apublic/photos/source/202501290004.jpg | 0
Apublic/photos/source/202503160001.jpg | 0
Apublic/photos/source/202503250001.jpg | 0
Apublic/photos/source/202503250002.jpg | 0
Apublic/photos/source/202504130001.jpg | 0
Apublic/photos/source/202504240001.jpg | 0
Apublic/photos/source/202504250001.jpg | 0
Apublic/photos/source/202504250002.jpg | 0
Apublic/photos/source/202504250003.jpg | 0
Apublic/photos/source/202505010001.jpg | 0
Apublic/photos/source/202505010002.jpg | 0
Apublic/photos/source/202505010003.jpg | 0
Apublic/photos/source/202505010004.jpg | 0
Apublic/photos/source/202506010001.jpg | 0
Apublic/photos/source/202506010002.jpg | 0
Apublic/photos/source/202506270001.jpg | 0
Apublic/photos/source/202506270002.jpg | 0
Apublic/photos/source/202506270003.jpg | 0
Apublic/photos/source/202506280001.jpg | 0
Apublic/photos/source/202506280002.jpg | 0
Apublic/photos/source/202506280003.jpg | 0
Apublic/photos/source/202507020001.jpg | 0
Apublic/photos/source/202508010001.jpg | 0
Apublic/photos/source/202508010002.jpg | 0
Apublic/photos/thumb/202207200001.jpg | 0
Apublic/photos/thumb/202208050001.jpg | 0
Apublic/photos/thumb/202208050002.jpg | 0
Apublic/photos/thumb/202208060001.jpg | 0
Apublic/photos/thumb/202208060002.jpg | 0
Apublic/photos/thumb/202208070001.jpg | 0
Apublic/photos/thumb/202208070002.jpg | 0
Apublic/photos/thumb/202208070003.jpg | 0
Apublic/photos/thumb/202208070004.jpg | 0
Apublic/photos/thumb/202307170001.jpg | 0
Apublic/photos/thumb/202310080001.jpg | 0
Apublic/photos/thumb/202402160001.jpg | 0
Apublic/photos/thumb/202407240001.jpg | 0
Apublic/photos/thumb/202409160001.jpg | 0
Apublic/photos/thumb/202411060001.jpg | 0
Apublic/photos/thumb/202501290001.jpg | 0
Apublic/photos/thumb/202501290002.jpg | 0
Apublic/photos/thumb/202501290003.jpg | 0
Apublic/photos/thumb/202501290004.jpg | 0
Apublic/photos/thumb/202503160001.jpg | 0
Apublic/photos/thumb/202503250001.jpg | 0
Apublic/photos/thumb/202503250002.jpg | 0
Apublic/photos/thumb/202504130001.jpg | 0
Apublic/photos/thumb/202504240001.jpg | 0
Apublic/photos/thumb/202504250001.jpg | 0
Apublic/photos/thumb/202504250002.jpg | 0
Apublic/photos/thumb/202504250003.jpg | 0
Apublic/photos/thumb/202505010001.jpg | 0
Apublic/photos/thumb/202505010002.jpg | 0
Apublic/photos/thumb/202505010003.jpg | 0
Apublic/photos/thumb/202505010004.jpg | 0
Apublic/photos/thumb/202506010001.jpg | 0
Apublic/photos/thumb/202506010002.jpg | 0
Apublic/photos/thumb/202506270001.jpg | 0
Apublic/photos/thumb/202506270002.jpg | 0
Apublic/photos/thumb/202506270003.jpg | 0
Apublic/photos/thumb/202506280001.jpg | 0
Apublic/photos/thumb/202506280002.jpg | 0
Apublic/photos/thumb/202506280003.jpg | 0
Apublic/photos/thumb/202507020001.jpg | 0
Apublic/photos/thumb/202508010001.jpg | 0
Apublic/photos/thumb/202508010002.jpg | 0
Asrc/content/blog/021025.md | 19+++++++++++++++++++
Asrc/content/blog/081124.md | 17+++++++++++++++++
Asrc/content/blog/090326.md | 62++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/content/blog/110226.md | 23+++++++++++++++++++++++
Asrc/content/blog/110525.md | 25+++++++++++++++++++++++++
Asrc/content/blog/130924.md.ignore | 19+++++++++++++++++++
Asrc/content/blog/141124.md | 11+++++++++++
Asrc/content/blog/160825.md | 9+++++++++
Asrc/content/blog/200326.md | 9+++++++++
Asrc/content/blog/210726.md | 15+++++++++++++++
Asrc/content/blog/211024.md | 25+++++++++++++++++++++++++
Asrc/content/blog/241024.md | 43+++++++++++++++++++++++++++++++++++++++++++
Asrc/content/blog/251024.md | 15+++++++++++++++
Asrc/content/blog/261024.md | 23+++++++++++++++++++++++
Asrc/content/blog/310526.md | 29+++++++++++++++++++++++++++++
Asrc/content/blog/image/090326/backlinks.png | 0
Asrc/content/blog/image/090326/board.png | 0
Asrc/content/blog/image/090326/homepage.png | 0
Asrc/content/blog/image/130924/01.jpg | 0
Asrc/content/blog/image/130924/02.jpg | 0
Asrc/content/blog/image/130924/03.jpg | 0
Asrc/content/blog/image/130924/04.jpg | 0
Asrc/content/blog/image/130924/05.jpg | 0
Asrc/content/blog/image/130924/06.jpg | 0
Asrc/content/blog/image/130924/07.jpg | 0
Asrc/content/blog/image/130924/08.jpg | 0
Asrc/content/blog/image/130924/09.jpg | 0
Asrc/content/blog/image/130924/10.jpg | 0
Asrc/content/blog/image/130924/11.jpg | 0
Asrc/content/blog/image/130924/12.jpg | 0
Asrc/content/blog/image/130924/13.jpg | 0
Asrc/content/blog/image/130924/14.jpg | 0
Asrc/content/blog/image/130924/15.jpg | 0
Asrc/content/blog/image/130924/video.mp4 | 0
Asrc/content/blog/image/211024/graphics.png | 0
Asrc/content/blog/image/211024/screenshot1.png | 0
Asrc/content/blog/image/211024/screenshot2.png | 0
Asrc/content/blog/image/241024/screenshot1.png | 0
Asrc/content/blog/image/241024/screenshot2.png | 0
Asrc/content/blog/image/241024/screenshot3.png | 0
Asrc/content/blog/image/241024/screenshot4.png | 0
Asrc/content/blog/image/251024/newgraphics.png | 0
Asrc/content/blog/image/261024/fullview.jpg | 0
Asrc/content/blog/image/261024/ladder.JPG | 0
Asrc/content/blog/image/261024/lens.jpg | 0
Asrc/content/photos/photos.json | 853+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/content/photos/photos.json.disabled | 660+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
163 files changed, 1933 insertions(+), 0 deletions(-)

diff --git a/public/assets/github.svg b/public/assets/github.svg @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="98" + height="96" + version="1.1" + id="svg845" + sodipodi:docname="github.svg" + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"> + <metadata + id="metadata851"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs849" /> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1920" + inkscape:window-height="1017" + id="namedview847" + showgrid="false" + inkscape:zoom="5.498116" + inkscape:cx="72.925203" + inkscape:cy="60.608389" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:current-layer="svg845" /> + <path + fill-rule="evenodd" + clip-rule="evenodd" + d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z" + fill="#fff" + id="path843" + style="fill:#000000" /> + <path + style="fill:#000000;stroke:#59acfb;stroke-width:0" + d="M 31.729274,95.184489 C 25.195306,92.679033 19.82835,89.206529 14.747632,84.197105 7.1994636,76.754854 2.5709033,67.764951 0.68300781,56.879839 0.32090905,54.792073 0.27310643,53.898185 0.27449644,49.240858 0.27617865,43.604411 0.38522671,42.494309 1.3694757,38.094038 2.9301104,31.116927 6.3361964,24.10493 11.018344,18.230236 c 1.588008,-1.992476 5.36431,-5.766927 7.342714,-7.339117 7.20021,-5.7218314 15.283393,-9.1774773 24.371985,-10.41928059 3.089591,-0.42214062 9.096401,-0.42214062 12.185992,0 7.782841,1.06339419 14.590598,3.64289279 21.001172,7.95746399 12.192222,8.2058496 19.946137,21.3005126 21.398081,36.1366706 0.264427,2.701955 0.102108,9.314804 -0.288866,11.768224 -1.340383,8.411132 -4.401228,15.752213 -9.337138,22.39404 -2.249686,3.027207 -6.815168,7.622735 -9.674427,9.738096 -3.853924,2.851241 -7.597501,4.94536 -11.822232,6.613235 -2.07534,0.819318 -3.166181,0.972707 -3.968172,0.557982 -1.182814,-0.611657 -1.176488,-0.559303 -1.199661,-9.92761 -0.02003,-8.097779 -0.0378,-8.519011 -0.415672,-9.85162 -0.472325,-1.665723 -1.150752,-3.065365 -1.983157,-4.091393 -0.656978,-0.809795 -0.586467,-0.973231 0.419878,-0.973231 0.898246,0 5.07886,-0.935368 6.903088,-1.544493 7.778716,-2.597373 12.05057,-7.717549 13.658401,-16.370735 0.454122,-2.444041 0.440863,-8.928229 -0.02232,-10.912829 -0.656578,-2.813267 -1.948404,-5.506686 -3.633008,-7.574716 L 75.152148,33.40533 75.51062,32.047189 c 0.777864,-2.947093 0.599362,-7.033657 -0.45329,-10.377455 l -0.424322,-1.347873 -1.717834,0.0205 c -1.397056,0.01668 -2.044969,0.127362 -3.469699,0.592774 -1.952905,0.637948 -4.842113,2.06139 -7.020905,3.459027 -1.334543,0.856073 -1.483417,0.909517 -2.062046,0.740235 -1.429566,-0.41823 -5.530167,-1.073447 -7.989815,-1.276659 -4.345767,-0.359039 -9.843361,0.0572 -14.164905,1.072477 l -1.524211,0.358088 -1.931518,-1.195899 c -3.954772,-2.448593 -7.098268,-3.662651 -9.873428,-3.813241 l -1.757975,-0.09539 -0.481558,1.524091 C 21.562578,25.115 21.391645,28.879688 22.174553,31.939436 l 0.36648,1.432263 -0.829147,1.103009 c -3.40311,4.527136 -4.587004,9.432466 -3.893014,16.13026 1.198216,11.564167 7.242368,17.953757 18.821175,19.896848 1.000342,0.167872 2.08692,0.34725 2.414618,0.398617 l 0.595811,0.0934 -0.636345,0.776577 c -0.805791,0.98336 -1.458138,2.404165 -1.849365,4.027901 -0.168335,0.698649 -0.328898,1.363893 -0.356805,1.478317 -0.04665,0.191257 -2.180213,0.964944 -3.421989,1.240904 -0.289226,0.06427 -1.231485,0.115741 -2.093908,0.114372 -1.924336,-0.0031 -3.523935,-0.46042 -5.032324,-1.438851 -1.307159,-0.847904 -2.06972,-1.675991 -3.494115,-3.794371 -1.899342,-2.824728 -4.175318,-4.529428 -6.651734,-4.982134 -1.056433,-0.193123 -2.279175,-0.09918 -2.890957,0.222112 -0.191069,0.100346 -0.318291,0.377104 -0.318291,0.69241 0,0.620844 0.657051,1.33608 2.173263,2.365722 2.044059,1.388093 3.609216,3.504029 5.002305,6.762614 0.744273,1.740938 1.821442,3.136458 3.256939,4.219509 1.188405,0.896626 1.912093,1.259832 3.461813,1.737428 2.487492,0.766599 5.616648,0.859535 9.068092,0.26932 l 0.682051,-0.116635 v 4.852662 c 0,5.33426 -0.05781,5.664273 -1.08533,6.195623 -0.832181,0.430338 -1.765617,0.322157 -3.734502,-0.432814 z" + id="path853" /> + <path + style="fill:#000000;stroke:#59acfb;stroke-width:0" + d="M 31.729274,95.186024 C 25.190798,92.68436 19.851252,89.229109 14.747632,84.197105 7.1724687,76.728238 2.3700247,67.316023 0.618433,56.505569 0.21908007,54.040846 0.06366777,47.091939 0.34555702,44.304542 1.1533461,36.316902 3.9243524,28.526017 8.2609917,22.049726 10.405771,18.846734 11.891322,17.039314 14.621794,14.310749 22.280699,6.6571901 31.826889,1.958041 42.733043,0.47287608 45.491944,0.09717784 51.622166,0.04916688 54.282454,0.38242285 65.198542,1.749889 74.867243,6.3448733 82.633056,13.855854 c 6.330927,6.123179 11.14999,14.397182 13.299352,22.83408 1.133727,4.450221 1.540357,7.739464 1.540357,12.459984 0,7.679424 -1.498666,14.407848 -4.727281,21.223654 -2.438037,5.146845 -5.393464,9.289715 -9.716794,13.620844 -5.140736,5.15001 -10.837749,8.862738 -17.246564,11.239537 -1.936584,0.71821 -2.77362,0.807495 -3.593824,0.38335 -1.135717,-0.587301 -1.134649,-0.5782 -1.16088,-9.904944 -0.02273,-8.082758 -0.04141,-8.524282 -0.416922,-9.854039 -0.471666,-1.670254 -1.148408,-3.064521 -1.992148,-4.104342 -0.6149,-0.7578 -0.617523,-0.768566 -0.205862,-0.844644 0.229337,-0.04238 1.39913,-0.246046 2.599542,-0.452583 5.774823,-0.993589 9.770668,-2.830306 12.918194,-5.937932 4.316055,-4.261343 6.316123,-10.396457 6.037562,-18.519915 -0.166256,-4.848413 -1.28462,-8.106791 -3.947759,-11.501896 l -0.865053,-1.102814 0.371389,-1.352573 c 0.2955,-1.076181 0.374299,-1.928649 0.385629,-4.171719 0.01493,-2.955771 -0.232789,-4.570364 -1.029122,-6.707745 l -0.364567,-0.978508 -1.660483,0.09464 c -2.772128,0.157998 -5.646058,1.258728 -9.768826,3.741509 l -2.106289,1.268433 -1.440381,-0.345937 c -3.452902,-0.829282 -6.345441,-1.135878 -10.716287,-1.135878 -4.363356,0 -7.174747,0.299939 -10.724697,1.144185 l -1.448793,0.344551 -1.825056,-1.14396 C 30.675444,21.548656 27.155227,20.23515 24.324523,20.232196 l -1.220813,-0.0013 -0.467202,1.500514 c -1.075556,3.454378 -1.242477,7.157572 -0.460398,10.214082 l 0.368035,1.43835 -0.712665,0.926097 c -1.776582,2.308638 -2.954571,4.759297 -3.693944,7.684792 -0.355429,1.406335 -0.405274,2.063631 -0.397775,5.245417 0.0063,2.669633 0.09541,4.121599 0.334901,5.456415 1.101588,6.139728 3.524249,10.494603 7.46563,13.419898 2.99045,2.219513 6.64897,3.65714 11.190695,4.397414 0.950325,0.154897 1.990915,0.325297 2.312423,0.378666 l 0.584557,0.09704 -0.657959,0.856919 c -0.847259,1.103463 -1.422212,2.362069 -1.805242,3.951781 -0.168335,0.698648 -0.328898,1.363893 -0.356805,1.478317 -0.04665,0.191257 -2.180213,0.964943 -3.421989,1.240903 -0.289226,0.06428 -1.231485,0.115742 -2.093908,0.114372 -1.924336,-0.0031 -3.523935,-0.460419 -5.032324,-1.438851 -1.30305,-0.845236 -2.003508,-1.604664 -3.513451,-3.809239 -1.920279,-2.803686 -3.882391,-4.32257 -6.294202,-4.872387 -2.024906,-0.461615 -3.547444,-0.118645 -3.547444,0.799106 0,0.601215 0.739349,1.412129 2.181598,2.392767 1.975422,1.343162 3.514505,3.359333 4.764569,6.2415 0.824504,1.900989 1.430697,2.815797 2.632044,3.972021 1.843207,1.773974 4.079402,2.719684 7.2729,3.07578 1.636049,0.18243 3.920543,0.06769 6.111301,-0.306939 l 0.682051,-0.116635 v 4.852662 c 0,5.33426 -0.05781,5.664273 -1.08533,6.195623 -0.831652,0.430065 -1.764959,0.322283 -3.734502,-0.431279 z" + id="path855" /> + <path + style="fill:#000000;stroke:#59acfb;stroke-width:0" + d="M 31.729274,95.186024 C 25.190798,92.68436 19.851252,89.229109 14.747632,84.197105 7.1193006,76.675816 2.3716076,67.327499 0.58461756,56.309802 0.12122177,53.452732 0.12700717,44.817194 0.59422747,41.965639 1.8420986,34.349588 4.403767,27.767643 8.468585,21.733281 10.53196,18.67013 11.85098,17.07893 14.621471,14.310749 22.281214,6.657392 31.795573,1.9730145 42.733043,0.47006593 46.137862,0.00220025 52.193409,0.04924587 55.627129,0.57024021 66.007512,2.1452444 75.201672,6.6683269 82.633056,13.855854 c 6.20548,6.001848 11.026055,14.187591 13.190577,22.398711 1.343907,5.09811 1.744481,8.664528 1.600308,14.247969 -0.1331,5.154648 -0.667192,8.561257 -2.069173,13.197823 -2.32182,7.678618 -6.3445,14.30169 -12.326078,20.294059 -5.129799,5.139053 -10.836916,8.861808 -17.234353,11.241973 -1.921809,0.715008 -2.783874,0.80607 -3.606035,0.380914 -1.13311,-0.585954 -1.131964,-0.576185 -1.161271,-9.902616 -0.02535,-8.067774 -0.04494,-8.52944 -0.418128,-9.856367 -0.459269,-1.632987 -1.051546,-2.860058 -1.946203,-4.032123 -0.629005,-0.824042 -0.635025,-0.847247 -0.239237,-0.922274 0.223302,-0.04233 1.395933,-0.247118 2.605847,-0.455083 2.764742,-0.475216 4.9728,-1.109977 7.100789,-2.041298 C 76.302937,64.830677 80.380724,57.067178 79.964777,45.87607 79.789224,41.152772 78.667381,37.924973 76.009913,34.497008 l -0.854937,-1.102814 0.370427,-1.352573 c 0.566152,-2.067242 0.548037,-6.562724 -0.0355,-8.809672 -0.233811,-0.900308 -0.551591,-1.955075 -0.706175,-2.343924 l -0.28106,-0.707001 -1.667878,0.09951 c -2.710918,0.161735 -6.224691,1.546 -10.259223,4.041659 L 61.00519,25.293588 59.55357,24.944974 C 52.869202,23.339692 44.136087,23.38134 37.762975,25.048895 l -1.059639,0.277259 -1.759509,-1.108362 C 31.113615,21.805039 27.587653,20.43747 24.785541,20.277832 l -1.6692,-0.0951 -0.45507,1.524607 c -0.762774,2.555498 -0.918802,3.606163 -0.915157,6.162559 0.0028,1.945593 0.08678,2.768926 0.404593,3.965529 l 0.401092,1.510143 -1.081918,1.490885 c -1.40154,1.931327 -2.622418,4.484667 -3.234879,6.765419 -0.455452,1.696061 -0.488259,2.070429 -0.486133,5.547355 0.0017,2.771609 0.08567,4.19535 0.327202,5.547355 1.586018,8.878034 5.986526,14.099515 14.090592,16.719385 1.6751,0.541524 3.407173,0.91392 6.876747,1.478505 l 0.584557,0.09512 -0.657959,0.856919 c -0.847259,1.103464 -1.422212,2.362069 -1.805242,3.951781 -0.168335,0.698649 -0.328898,1.363893 -0.356805,1.478317 -0.04665,0.191257 -2.180213,0.964944 -3.421989,1.240904 -0.289226,0.06427 -1.231485,0.115741 -2.093908,0.114372 -1.924336,-0.0031 -3.523935,-0.46042 -5.032324,-1.438851 -1.281081,-0.830987 -2.067237,-1.67373 -3.361533,-3.603498 -1.319565,-1.967445 -3.079239,-3.662348 -4.537149,-4.370148 -1.398193,-0.678806 -3.060935,-1.052454 -3.945221,-0.88656 -2.25118,0.422322 -2.024854,1.422092 0.774597,3.421697 1.944828,1.38916 3.440182,3.376961 4.665354,6.201734 0.831789,1.917784 1.158886,2.424641 2.398065,3.715947 2.881467,3.002678 7.385225,4.002864 13.570731,3.013761 l 0.724522,-0.115856 v 4.852112 c 0,5.333659 -0.05783,5.663729 -1.08533,6.195071 -0.831652,0.430065 -1.764959,0.322283 -3.734502,-0.431279 z" + id="path857" /> + <path + style="fill:#000000;stroke:#59acfb;stroke-width:0" + d="M 31.638333,95.161923 C 27.329063,93.537298 22.271478,90.637037 18.542939,87.6524 16.392955,85.931372 12.779833,82.328176 11.030443,80.160541 5.152681,72.877522 1.2676591,63.429508 0.34192454,54.167048 0.0239367,50.985412 0.21623419,44.235122 0.70764407,41.329057 1.9024358,34.263384 4.5097287,27.653797 8.3753113,21.891225 12.265206,16.092411 16.595226,11.802774 22.453369,7.9444638 32.454429,1.3575314 44.955441,-1.2494406 56.851044,0.77114159 70.148414,3.0298271 81.647398,10.49579 89.203865,21.776905 c 4.569764,6.822241 7.275365,14.347912 8.104105,22.541693 0.277126,2.73994 0.122147,9.512316 -0.274227,11.983421 -0.950283,5.924337 -2.518668,10.752787 -5.109159,15.729144 -2.387785,4.586952 -4.849888,7.896524 -8.901209,11.965043 -3.205751,3.219357 -6.062016,5.471179 -9.589628,7.560264 -3.663861,2.169772 -8.71037,4.337417 -10.094797,4.336052 -0.859763,-9.09e-4 -1.819405,-0.56808 -2.075994,-1.227096 -0.126014,-0.323651 -0.210029,-3.483963 -0.238129,-8.95753 -0.0369,-7.188401 -0.08852,-8.627809 -0.343969,-9.592832 -0.406355,-1.535095 -1.200778,-3.231105 -2.001458,-4.2729 -0.766266,-0.997021 -0.982257,-0.848385 1.909268,-1.313895 7.375099,-1.187331 12.613388,-4.158387 15.71145,-8.911231 1.636524,-2.510649 2.555475,-4.950863 3.290829,-8.73857 0.402952,-2.075562 0.464852,-8.684329 0.0971,-10.367187 -0.634825,-2.905008 -1.872719,-5.630546 -3.562067,-7.842796 l -0.988981,-1.295096 0.353037,-1.342171 c 0.72375,-2.751532 0.63536,-6.490365 -0.227054,-9.604279 -0.65751,-2.374073 -0.53485,-2.261671 -2.332581,-2.137516 -0.85315,0.05892 -2.165028,0.27885 -2.915285,0.488729 -1.683352,0.470907 -4.966676,2.028273 -7.270915,3.448782 l -1.732169,1.067842 -1.909745,-0.43336 c -3.380015,-0.766993 -6.154183,-1.050801 -10.276248,-1.051301 -4.135749,-5.46e-4 -6.70555,0.26628 -10.171008,1.055894 l -1.986385,0.452602 -1.439763,-0.923569 C 31.37494,21.922841 27.646542,20.45375 24.786092,20.2803 l -1.668647,-0.101184 -0.455623,1.526418 c -0.745692,2.498201 -0.908795,3.585448 -0.91111,6.073427 -0.0016,1.827972 0.08819,2.729264 0.396192,3.972336 l 0.398391,1.60789 -1.018736,1.393138 c -1.363407,1.864486 -2.694094,4.637823 -3.288558,6.853824 -0.454615,1.694687 -0.486274,2.060797 -0.479327,5.543084 0.0085,4.238766 0.345038,6.664355 1.338398,9.645173 2.12284,6.370102 6.231838,10.36786 12.89326,12.544211 1.156864,0.377959 3.167389,0.868385 4.467834,1.089837 1.300446,0.221451 2.547147,0.436343 2.770449,0.477535 0.394452,0.07277 0.387198,0.0994 -0.254867,0.936175 -0.846763,1.10354 -1.453882,2.476028 -1.862953,4.211495 l -0.324971,1.378675 -0.891351,0.33221 c -1.691705,0.630507 -2.897562,0.860389 -4.52896,0.863395 -3.557735,0.0066 -6.036421,-1.418662 -8.277789,-4.759648 -1.815747,-2.706554 -3.579258,-4.26808 -5.727009,-5.071061 -2.051541,-0.767012 -4.456072,-0.480122 -4.456072,0.53166 0,0.498358 0.754133,1.322077 2.070146,2.261164 2.108582,1.504654 3.777589,3.687094 4.954666,6.478861 2.404016,5.701797 7.724366,7.92362 15.858982,6.622842 l 0.760669,-0.121637 v 4.852112 c 0,5.333659 -0.05783,5.663729 -1.08533,6.195071 -0.835886,0.432253 -1.764109,0.321759 -3.825443,-0.45538 z" + id="path859" /> +</svg> diff --git a/public/assets/linkedin.svg b/public/assets/linkedin.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="2 2 20 20"> + <path d="M20.5 2h-17A1.5 1.5 0 002 3.5v17A1.5 1.5 0 003.5 22h17a1.5 1.5 0 001.5-1.5v-17A1.5 1.5 0 0020.5 2zM8 19H5v-9h3zM6.5 8.25A1.75 1.75 0 118.3 6.5a1.78 1.78 0 01-1.8 1.75zM19 19h-3v-4.74c0-1.42-.6-1.93-1.38-1.93A1.74 1.74 0 0013 14.19a.66.66 0 000 .14V19h-3v-9h2.9v1.3a3.11 3.11 0 012.7-1.4c1.55 0 3.36.86 3.36 3.66z" fill="#000000"/> +</svg>+ \ No newline at end of file diff --git a/public/blog/image/090326/backlinks.png b/public/blog/image/090326/backlinks.png Binary files differ. diff --git a/public/blog/image/090326/board.png b/public/blog/image/090326/board.png Binary files differ. diff --git a/public/blog/image/090326/homepage.png b/public/blog/image/090326/homepage.png Binary files differ. diff --git a/public/blog/image/130924/01.jpg b/public/blog/image/130924/01.jpg Binary files differ. diff --git a/public/blog/image/130924/02.jpg b/public/blog/image/130924/02.jpg Binary files differ. diff --git a/public/blog/image/130924/03.jpg b/public/blog/image/130924/03.jpg Binary files differ. diff --git a/public/blog/image/130924/04.jpg b/public/blog/image/130924/04.jpg Binary files differ. diff --git a/public/blog/image/130924/05.jpg b/public/blog/image/130924/05.jpg Binary files differ. diff --git a/public/blog/image/130924/06.jpg b/public/blog/image/130924/06.jpg Binary files differ. diff --git a/public/blog/image/130924/07.jpg b/public/blog/image/130924/07.jpg Binary files differ. diff --git a/public/blog/image/130924/08.jpg b/public/blog/image/130924/08.jpg Binary files differ. diff --git a/public/blog/image/130924/09.jpg b/public/blog/image/130924/09.jpg Binary files differ. diff --git a/public/blog/image/130924/10.jpg b/public/blog/image/130924/10.jpg Binary files differ. diff --git a/public/blog/image/130924/11.jpg b/public/blog/image/130924/11.jpg Binary files differ. diff --git a/public/blog/image/130924/12.jpg b/public/blog/image/130924/12.jpg Binary files differ. diff --git a/public/blog/image/130924/13.jpg b/public/blog/image/130924/13.jpg Binary files differ. diff --git a/public/blog/image/130924/14.jpg b/public/blog/image/130924/14.jpg Binary files differ. diff --git a/public/blog/image/130924/15.jpg b/public/blog/image/130924/15.jpg Binary files differ. diff --git a/public/blog/image/130924/video.mp4 b/public/blog/image/130924/video.mp4 Binary files differ. diff --git a/public/blog/image/211024/graphics.png b/public/blog/image/211024/graphics.png Binary files differ. diff --git a/public/blog/image/211024/screenshot1.png b/public/blog/image/211024/screenshot1.png Binary files differ. diff --git a/public/blog/image/211024/screenshot2.png b/public/blog/image/211024/screenshot2.png Binary files differ. diff --git a/public/blog/image/241024/screenshot1.png b/public/blog/image/241024/screenshot1.png Binary files differ. diff --git a/public/blog/image/241024/screenshot2.png b/public/blog/image/241024/screenshot2.png Binary files differ. diff --git a/public/blog/image/241024/screenshot3.png b/public/blog/image/241024/screenshot3.png Binary files differ. diff --git a/public/blog/image/241024/screenshot4.png b/public/blog/image/241024/screenshot4.png Binary files differ. diff --git a/public/blog/image/251024/newgraphics.png b/public/blog/image/251024/newgraphics.png Binary files differ. diff --git a/public/blog/image/261024/fullview.jpg b/public/blog/image/261024/fullview.jpg Binary files differ. diff --git a/public/blog/image/261024/ladder.JPG b/public/blog/image/261024/ladder.JPG Binary files differ. diff --git a/public/blog/image/261024/lens.jpg b/public/blog/image/261024/lens.jpg Binary files differ. diff --git a/public/photos/source/202207200001.jpg b/public/photos/source/202207200001.jpg Binary files differ. diff --git a/public/photos/source/202208050001.jpg b/public/photos/source/202208050001.jpg Binary files differ. diff --git a/public/photos/source/202208050002.jpg b/public/photos/source/202208050002.jpg Binary files differ. diff --git a/public/photos/source/202208060001.jpg b/public/photos/source/202208060001.jpg Binary files differ. diff --git a/public/photos/source/202208060002.jpg b/public/photos/source/202208060002.jpg Binary files differ. diff --git a/public/photos/source/202208070001.jpg b/public/photos/source/202208070001.jpg Binary files differ. diff --git a/public/photos/source/202208070002.jpg b/public/photos/source/202208070002.jpg Binary files differ. diff --git a/public/photos/source/202208070003.jpg b/public/photos/source/202208070003.jpg Binary files differ. diff --git a/public/photos/source/202208070004.jpg b/public/photos/source/202208070004.jpg Binary files differ. diff --git a/public/photos/source/202307170001.jpg b/public/photos/source/202307170001.jpg Binary files differ. diff --git a/public/photos/source/202310080001.jpg b/public/photos/source/202310080001.jpg Binary files differ. diff --git a/public/photos/source/202402160001.jpg b/public/photos/source/202402160001.jpg Binary files differ. diff --git a/public/photos/source/202407240001.jpg b/public/photos/source/202407240001.jpg Binary files differ. diff --git a/public/photos/source/202409160001.jpg b/public/photos/source/202409160001.jpg Binary files differ. diff --git a/public/photos/source/202411060001.jpg b/public/photos/source/202411060001.jpg Binary files differ. diff --git a/public/photos/source/202501290001.jpg b/public/photos/source/202501290001.jpg Binary files differ. diff --git a/public/photos/source/202501290002.jpg b/public/photos/source/202501290002.jpg Binary files differ. diff --git a/public/photos/source/202501290003.jpg b/public/photos/source/202501290003.jpg Binary files differ. diff --git a/public/photos/source/202501290004.jpg b/public/photos/source/202501290004.jpg Binary files differ. diff --git a/public/photos/source/202503160001.jpg b/public/photos/source/202503160001.jpg Binary files differ. diff --git a/public/photos/source/202503250001.jpg b/public/photos/source/202503250001.jpg Binary files differ. diff --git a/public/photos/source/202503250002.jpg b/public/photos/source/202503250002.jpg Binary files differ. diff --git a/public/photos/source/202504130001.jpg b/public/photos/source/202504130001.jpg Binary files differ. diff --git a/public/photos/source/202504240001.jpg b/public/photos/source/202504240001.jpg Binary files differ. diff --git a/public/photos/source/202504250001.jpg b/public/photos/source/202504250001.jpg Binary files differ. diff --git a/public/photos/source/202504250002.jpg b/public/photos/source/202504250002.jpg Binary files differ. diff --git a/public/photos/source/202504250003.jpg b/public/photos/source/202504250003.jpg Binary files differ. diff --git a/public/photos/source/202505010001.jpg b/public/photos/source/202505010001.jpg Binary files differ. diff --git a/public/photos/source/202505010002.jpg b/public/photos/source/202505010002.jpg Binary files differ. diff --git a/public/photos/source/202505010003.jpg b/public/photos/source/202505010003.jpg Binary files differ. diff --git a/public/photos/source/202505010004.jpg b/public/photos/source/202505010004.jpg Binary files differ. diff --git a/public/photos/source/202506010001.jpg b/public/photos/source/202506010001.jpg Binary files differ. diff --git a/public/photos/source/202506010002.jpg b/public/photos/source/202506010002.jpg Binary files differ. diff --git a/public/photos/source/202506270001.jpg b/public/photos/source/202506270001.jpg Binary files differ. diff --git a/public/photos/source/202506270002.jpg b/public/photos/source/202506270002.jpg Binary files differ. diff --git a/public/photos/source/202506270003.jpg b/public/photos/source/202506270003.jpg Binary files differ. diff --git a/public/photos/source/202506280001.jpg b/public/photos/source/202506280001.jpg Binary files differ. diff --git a/public/photos/source/202506280002.jpg b/public/photos/source/202506280002.jpg Binary files differ. diff --git a/public/photos/source/202506280003.jpg b/public/photos/source/202506280003.jpg Binary files differ. diff --git a/public/photos/source/202507020001.jpg b/public/photos/source/202507020001.jpg Binary files differ. diff --git a/public/photos/source/202508010001.jpg b/public/photos/source/202508010001.jpg Binary files differ. diff --git a/public/photos/source/202508010002.jpg b/public/photos/source/202508010002.jpg Binary files differ. diff --git a/public/photos/thumb/202207200001.jpg b/public/photos/thumb/202207200001.jpg Binary files differ. diff --git a/public/photos/thumb/202208050001.jpg b/public/photos/thumb/202208050001.jpg Binary files differ. diff --git a/public/photos/thumb/202208050002.jpg b/public/photos/thumb/202208050002.jpg Binary files differ. diff --git a/public/photos/thumb/202208060001.jpg b/public/photos/thumb/202208060001.jpg Binary files differ. diff --git a/public/photos/thumb/202208060002.jpg b/public/photos/thumb/202208060002.jpg Binary files differ. diff --git a/public/photos/thumb/202208070001.jpg b/public/photos/thumb/202208070001.jpg Binary files differ. diff --git a/public/photos/thumb/202208070002.jpg b/public/photos/thumb/202208070002.jpg Binary files differ. diff --git a/public/photos/thumb/202208070003.jpg b/public/photos/thumb/202208070003.jpg Binary files differ. diff --git a/public/photos/thumb/202208070004.jpg b/public/photos/thumb/202208070004.jpg Binary files differ. diff --git a/public/photos/thumb/202307170001.jpg b/public/photos/thumb/202307170001.jpg Binary files differ. diff --git a/public/photos/thumb/202310080001.jpg b/public/photos/thumb/202310080001.jpg Binary files differ. diff --git a/public/photos/thumb/202402160001.jpg b/public/photos/thumb/202402160001.jpg Binary files differ. diff --git a/public/photos/thumb/202407240001.jpg b/public/photos/thumb/202407240001.jpg Binary files differ. diff --git a/public/photos/thumb/202409160001.jpg b/public/photos/thumb/202409160001.jpg Binary files differ. diff --git a/public/photos/thumb/202411060001.jpg b/public/photos/thumb/202411060001.jpg Binary files differ. diff --git a/public/photos/thumb/202501290001.jpg b/public/photos/thumb/202501290001.jpg Binary files differ. diff --git a/public/photos/thumb/202501290002.jpg b/public/photos/thumb/202501290002.jpg Binary files differ. diff --git a/public/photos/thumb/202501290003.jpg b/public/photos/thumb/202501290003.jpg Binary files differ. diff --git a/public/photos/thumb/202501290004.jpg b/public/photos/thumb/202501290004.jpg Binary files differ. diff --git a/public/photos/thumb/202503160001.jpg b/public/photos/thumb/202503160001.jpg Binary files differ. diff --git a/public/photos/thumb/202503250001.jpg b/public/photos/thumb/202503250001.jpg Binary files differ. diff --git a/public/photos/thumb/202503250002.jpg b/public/photos/thumb/202503250002.jpg Binary files differ. diff --git a/public/photos/thumb/202504130001.jpg b/public/photos/thumb/202504130001.jpg Binary files differ. diff --git a/public/photos/thumb/202504240001.jpg b/public/photos/thumb/202504240001.jpg Binary files differ. diff --git a/public/photos/thumb/202504250001.jpg b/public/photos/thumb/202504250001.jpg Binary files differ. diff --git a/public/photos/thumb/202504250002.jpg b/public/photos/thumb/202504250002.jpg Binary files differ. diff --git a/public/photos/thumb/202504250003.jpg b/public/photos/thumb/202504250003.jpg Binary files differ. diff --git a/public/photos/thumb/202505010001.jpg b/public/photos/thumb/202505010001.jpg Binary files differ. diff --git a/public/photos/thumb/202505010002.jpg b/public/photos/thumb/202505010002.jpg Binary files differ. diff --git a/public/photos/thumb/202505010003.jpg b/public/photos/thumb/202505010003.jpg Binary files differ. diff --git a/public/photos/thumb/202505010004.jpg b/public/photos/thumb/202505010004.jpg Binary files differ. diff --git a/public/photos/thumb/202506010001.jpg b/public/photos/thumb/202506010001.jpg Binary files differ. diff --git a/public/photos/thumb/202506010002.jpg b/public/photos/thumb/202506010002.jpg Binary files differ. diff --git a/public/photos/thumb/202506270001.jpg b/public/photos/thumb/202506270001.jpg Binary files differ. diff --git a/public/photos/thumb/202506270002.jpg b/public/photos/thumb/202506270002.jpg Binary files differ. diff --git a/public/photos/thumb/202506270003.jpg b/public/photos/thumb/202506270003.jpg Binary files differ. diff --git a/public/photos/thumb/202506280001.jpg b/public/photos/thumb/202506280001.jpg Binary files differ. diff --git a/public/photos/thumb/202506280002.jpg b/public/photos/thumb/202506280002.jpg Binary files differ. diff --git a/public/photos/thumb/202506280003.jpg b/public/photos/thumb/202506280003.jpg Binary files differ. diff --git a/public/photos/thumb/202507020001.jpg b/public/photos/thumb/202507020001.jpg Binary files differ. diff --git a/public/photos/thumb/202508010001.jpg b/public/photos/thumb/202508010001.jpg Binary files differ. diff --git a/public/photos/thumb/202508010002.jpg b/public/photos/thumb/202508010002.jpg Binary files differ. diff --git a/src/content/blog/021025.md b/src/content/blog/021025.md @@ -0,0 +1,19 @@ +--- +title: lukeonline - React Edition +desc: Rewriting the site in React +date: 2025-10-02 +slug: "021025" +--- +I've not been doing an awful lot with this website over the last few months. My placement work takes up the larger part of the week, and to be completely honest I find little energy to do any of my own stuff on the weekends. + +That being said, my placement HAS given me the oppurtunity to learn a fair bit about front-end frameworks, and I decided it was finally time to draw a line over the messy, inconsistent, inaccessible site this once was and re-build it from the ground up using something a bit-more modern, like React, for example. + +The previous site had a fair few issues. My stylesheet was one I had built up over the course of about six years, with chunks of it copied-and-pasted from previous projects. Naming conventions were inconsistent. Heaps of duplicate markup. Unfinished/abandoned areas. The list goes on. + +Following the migration, things suddenly feel a whole-lot fresher. I've even tweaked some of the components to look a little flatter and easier on the eyes. I also tweaked the photo browser. Keyword search felt a bit pointless, so it's gone. I still need to implement sorting, but for now it's still fully functional, and I'm happy with how it's turned out. + +Eventually I plan to implement something like tailwindcss to make things even cleaner, as I do find myself leaning slightly into less-organised-than-would-be-preferable stylesheets, but it's still a huge improvement, and I'm really loving working on expanding my knowledge of more maintainable and up-to-date front-end frameworks. + +While I'm confident that the site looks and feels sufficient, I'm near-certain there will be a few issues popping-up here and there. If you do spot something, [let me know](/about#Contact) about it! + +So long! diff --git a/src/content/blog/081124.md b/src/content/blog/081124.md @@ -0,0 +1,17 @@ +--- +title: JSdiver - Part 4 +date: 2024-11-08 +desc: Fixes and QoL +slug: "081124" +--- +Hello again! It's been a good week or so since I last put anything here about JSDiver, so I figured I'd post an update on all the progress I've made. + +Right now, it's still just [on my University Webpage](https://users.aber.ac.uk/luj36/CS25320/jsdiver/)! I will put it here and on GitHub once I've finalized it and submitted the assignment. For now though, here's what's new: + + = Framerate Issue is now fixed. It still performs a little slower on weaker devices, but the main plus is that it doesn't perform too FAST on beefier devices. + + = Death Animation, inspired vaguely by [the cutscene from Ludwig's Castle, in Super Mario World (YouTube)](https://youtu.be/JocGfi8OkVw?si=LHQ5u6L_AgBMe4Ds&t=95). + + = You can now submit scores after death, as well as see other people's scores in their respective difficulty levels. Score submission may or may not be easily exploitable through `GET`, but that's something I can tune out afterwards. + +I may or may not throw a few more features and fixes into the mix before submission, right now my priority is proper documentation. In the meantime, thanks for checking in. diff --git a/src/content/blog/090326.md b/src/content/blog/090326.md @@ -0,0 +1,62 @@ +--- +title: Laravel Experimentation +date: 2026-03-09 +desc: Boards and Games +slug: "090326" +--- +The other day I decided to get into trying to create a few projects using Laravel. It's actually pretty easy to get into. I initially decided to try creating my own (very simple) imageboard software. + +Creating this was pretty simple as I decided to just completely avoid implementing any sort of user-authentication, or user-system at all. It's literally just ended up becoming a front-end to post threads and replies to an imageboard. For the sake of maintaining my own reputation, I refuse to put this online, but check out these screenshots: + +![The homepage of my imageboard](./image/090326/homepage.png) +![An example view of a board on my imageboard](./image/090326/board.png) +![An example view of a reply on my imageboard](./image/090326/backlinks.png) + +The example posts are all produced by DataSeeders, which it turns out are really fun to write! It did take me writing my own implementation of what is essentially just Model factories before realising they were already a thing, and they were pretty messy too. + +``` +class TestBoardSeeder extends Seeder +{ + public function run() + { + $this->createBoard('Random', 'b', 'A place for random/uncategorised posts.', 3, 6, 'Other'); + $this->createBoard('Videogames', 'vg', 'A place for discussion about videogames or gaming.', 10, 10, 'Interests'); + $this->createBoard('Empty board', 'e', 'This is a board which is empty, for testing purposes.', 10, 10, 'Other'); + } + + private function createBoard(string $name, string $slug, string $description, int $max_threads, int $max_replies, string $category): Board + { + return Board::create([ + 'name' => $name, + 'slug' => $slug, + 'description' => $description, + 'max_threads' => $max_threads, + 'max_replies' => $max_replies, + 'category' => $category, + ]); + } +} +``` + +Before tidying that I decided to move onto something a little more fun. I thought I'd try and create one of those online daily-puzzle type games. I ended up deciding on a game where you'd be given a list of historical events, and have to sort them into chronological order, from earliest to most-recent. + +The good news is that I did it! I got away with storing a simple table which stores historical events against an ID, date, and brief description. When the user visits the page, the current day and chosen difficulty are used to generate a seed, which is then used to pick a set of random events from the database. I went with using a seed as it meant each game is fully deterministic based on the date, so you can come back and play previous games. + +The bad news is that it's surprisingly difficult to find a dataset online which can provide enough data for this game to be reasonably replayable while also being simple enough to parse through. My first go-to was WikiData, but unfortunately there seems to be some unspoken rule that for every item featured in a dataset, the schema usage has to become a little more inconsistent. Pulling event data from WikiData is pretty difficult to get your head around. I didn't really feel like spending ages learning SPARQL just so I could get a CSV of data JUST tangible enough for me to go through manually to remove events which have dates in their names, don't have English event names, don't have names at all, so-on so-forth. + +I did, however, create a tool which could parse through a CSV and load the data into the events table, so if I do ever get my hands on a good enough dataset I could probably squish it around a bit with a Python script and throw it in for some proper testing. Having this tool meant I could write a pretty simple example CSV for future reference; + +``` +date,description +2020-01-01,New year's day 2020 +1900-01-01,First day of the 1900s +2007-01-09,iPhone first unveiled to the public +1991-12-26,Dissolution of the Soviet Union +1998-09-04,Google is founded +1969-07-20,Apollo 11 lander touches down on the surface of the Moon +1939-09-01,Germany invades Poland +1986-04-26,Chernobyl reactor 4 explodes +1969-01-30,The Beatles perform a concert for the last time atop Apple Corps headquarters +``` + +The reason I write this is that while I'm not making a live-demo, I have [put it on GitHub](https://github.com/LukePJ25/Intervle), with the creative and original name idea, "Intervle". Feel free to pull it in and try some things - maybe you'll find a good dataset. If you do, as usual, [contact](let me know)!. diff --git a/src/content/blog/110226.md b/src/content/blog/110226.md @@ -0,0 +1,23 @@ +--- +title: Dipping a toe into Matrix +date: 2026-02-11 +desc: Self-hosting is alright +slug: "110226" +--- +If you read the news, and if you're the sort of person to put time into reading anything on this site, then you probably don't need much of an explanation as to why many people like myself are making the decision to abandon some social platforms as a result of... [certain](https://www.gov.uk/government/news/keeping-children-safe-online-changes-to-the-online-safety-act-explained) [usage](https://support.xbox.com/en-GB/help/family-online-safety/online-safety/UK-age-verification) [requirements](https://www.bbc.co.uk/news/articles/c1d67vdlk1ko). + +Right now I have far too many connections to entirely abandon every corporate-driven communication platform I use. I'd never be able to reach even close family members or friends without WhatsApp or Discord. That said, my long-term goal is to one-day achieve a full transition to secure platforms which can be used whenever I need with full independence from the grip of some gentleman across the Atlantic Ocean with a few too-many personal issues. + +Anyway, that isn't what I'm here to discuss. I'd instead like to discuss what I was doing today - setting up my own Matrix Homeserver. + +Matrix is something I've always read about in the past and considered to be a bit of a faff to go-about using, but more recently my take seems to be that it's rather promising as a communication protocol. Once I discovered that you could host a fully-federated service I knew exactly what I'd be doing with my VPS. + +For the homeserver I decided I'd spin up the official [Synapse Docker Container](https://element-hq.github.io/synapse/latest/setup/installation.html#docker-images-and-ansible-playbooks) alongside a reverse-proxy via Nginx. I figured initially that I could just set it up on the VPS as-is but another long-term goal of mine is self-hosting at-home, and I decided any sort of future migration would be a pain to achieve if I have to piece together all the messy config scraps via SFTP in a few years when I finally invest money and effort into some real server hardware. + +I decided to stick my homeserver on-top of [lukeonline.net](https://https://lukeonline.net). I created a subdomain at [matrix.lukeonline.net](https://lukeonline.net) and pointed that towards the VPS. It's a bit of a mess right now, as the website is hosted by a dedicated provider as opposed to the VPS, but because I prefer to have [lukeonline.net](https://lukeonline.net) as the homeserver domain, I had to do some funny work with <code>.well-known</code>, pointing it towards the matrix sub-domain, which then points to the VPS. In the end it worked, but some clients seemed to find it a bit strange during the login process. + +Deciding on a client turned out to be the trickier part. As amazing the wide variety of options is, it seems like you need to find a balance between performance, appearance, and feature availability. Luckily Matrix themselves provide a [pretty good list](https://matrix.org/ecosystem/clients/) of some of the popular available clients. + +I went through a few different clients on my Desktop machine, initially trying out [nheko](https://nheko-reborn.github.io/) which was pretty easy to use. I also ended up trying and KDE's [NeoChat](https://apps.kde.org/en-gb/neochat/). I far prefer how well it integrates visually with my current system (Debian with KDE), and it seems a little snappier... though it also completely failed to retrieve or send messages, which is unfortunately pretty important. As for my mobile, I ended up settling on [SchildiChat Next](https://schildi.chat/android/next/), which felt a little cleaner and more-stable than Element X. + +After going through all of that, everything seems to be working pretty well via my homeserver, with messages and encryption all synchronised. If you want to contact me via Matrix, you can do so through [@lukep:lukeonline.net](https://matrix.to/#/@lukep:lukeonline.net/). Please give it a try, and if it doesn't work, [let me know](/about#Contact). diff --git a/src/content/blog/110525.md b/src/content/blog/110525.md @@ -0,0 +1,25 @@ +--- +title: AttributeBank - Part 1 +date: 2025-05-11 +desc: A project I'm sure i'll stick to +slug: "110525" +--- +It's been a while since I last put anything on here, so I figured I'd come back to talk about a project I've slowly been banging together with rocks over the last few days, and what I hope will eventually come to fruition as a real, working, and actually USEFUL piece of software! + +For the last few years I've been slowly building up a small collection of semi-interesting electronics, tools, or just anything with any sort of technological historical interest. Old phones, laptops, monitors, cables, etc.. I currently have 5 laptops in my bedroom, 3 desktop PCs, 6 phones (which I hope don't raise any suspicions when I show them to people), and plenty of other old curios. Lighters, old coins, walkie-talkies, an old handheld TV. The list goes on, and as you can imagine, it's hard to remember everything on that list. + +Every time I go back to one of these items (particularly the electronics) I spend about 15 minutes getting bored looking for manuals, datasheets etc., to help out with troubleshooting when I need to fix something or try to get something working on them, and I thought it would be great to have these all pre-saved and accessible. This could've easily been done with a single nicely-sorted folder on my PC with every piece of documentation I'd need for any device I've got. + +Then I thought it would also be good to have little text files storing information about each item, like how old they were, a description, where they're kept, maybe a reference number (so I can always figure out what something is if it ever skips my mind), maybe information about when it was last charged, etc.. + +Then I just thought, "Why not make a piece of software to manage this data for me, so I don't need to trawl through a bunch of text documents?". So I will. + +I decided initially to call it "CollectibleAttributeBank". I figured it was a very telling name, being that I was basically just storing data about items in my collection. Simple. There would be a single "Bank" with a defined schema, and this "Bank" would contain a list of these items, each with a value for each of the predefined attributes. These attributes would just be things like "Name", "Description", "Date of Manufacture", "Condition", you get the picture. As I went on I figured it would be cool to not be fixed to one schema, and be able to set up each "Bank" with new data requirements for each item, and then every time you add an item, it requires a value for each of those attributes. + +Since this would be a little more open, it could be theoretically used for pretty much any inventory you need to store data about. For that reason, I decided to take "Collectible" out of the name, just calling it "AttributeBank". + +Anyway, that's a lot about the name and not the functionality. I've already created a basic outline of the program in Java (of course it's going to be Java). I'm going to spend some time working on my understanding of the relationship between persistent storage and Java, as I'd love something a bit more elegant than a bunch of text files and what is essentially just a fancy parser. I'd probably like to opt for JSONs as I find them both simple and versatile. I'd love for each "Bank" to be somewhat portable, as it would be cool to host the file/directory on a home server and access it from any device. Right now I'm considering packaging them in a custom .zip of some sort, or maybe I'll just keep all the data in one file. Again, my uncertainty alludes to the need for some more research. + +Of course, it will be open-source. I'll try to get a working version on a public Git repo when I get a chance. + +It's a fun thing to work at on the side, but I'm a bit swamped with exam revision right now, and I'll hopefully be starting a work placement soon after, so I haven't got all the time in the world to work on this. Hopefully, I'll be writing about this again sooner rather than later! diff --git a/src/content/blog/130924.md.ignore b/src/content/blog/130924.md.ignore @@ -0,0 +1,19 @@ +A few months ago - probably just after Christmas time - I was doing my usual digging around charity shops for old electronics when I stumbled across a 2006 Samsung SPP-2020 Digital Photo Printer for just £10. As a result of my strong impulse and poor ability to responsibly spend money, I bought it. I did absolutely zero research into the model, what I needed to use it, what it was compatible with, etc. I just got it. So it was no surprise once I got back to my flat and did some searching, I discovered that the photo paper and cartridges were proprietary, unincluded, and also hard to come by! +Okay, I say that but they are still floating about... seemingly only on Ali-Express from third-party manufacturers. That's great but at the time I didn't feel like spending £9 on something which would take weeks to arrive and I wasn't even close to certain would work. Any other printer accessory sites I could find had them listed as just "discontinued". As a result I put the printer away indefinitely. +Fast-forward to now. I was once again doing the classic job of roaming around shops looking at the goodies they have lying about, when from across the store I spotted a familiar looking box. Took a closer look and to my great surprise, it was a complete box of 40 sheets of photo paper and a ribbon cartridge from Samsung - for only 50p. I looked under the box and discovered it was fully compatible with the model I had. I was a little starstruck by my luck. I have no clue how popular these things were when they were first released, especially in the mildly-isolated coastal town I found it in. I like to assume they're from the same person. +Now that I knew I had paper which worked and a cartridge which would be compatible, I finally had a reason to open up the box. Admittedly I hadn't done this beforehand, as I had already figured out before even needing to that I couldn't use it anyway. As a result I was trying not to set myself up for disappointment while unboxing. Though I was quite pleasantly surprised to find not only a full-set, but one in remarkably good condition at that - even the manuals and warranty documents. The only thing that was missing was the paper and cartridge which I presume came with the original product. If I didn't know otherwise (and if the box wasn't a little beaten up) you could have fully convinced me this was brand-new and unopened. +A quick read of the manual showed me that for this specific model, the methods of interface were through either: +1. Desktop Computer via USB 2.0 Type B +2. Digital Camera via USB and PictBridge +3. Cellphone via Bluetooth +I figured since my Digital Camera was also from Samsung and was made closer to the printer's time than to the current day, it would make sense for it to function properly. I hooked it up via USB and interestingly enough it prompted me to send photos to the printer. +Unfortunately the printer would do no more than a bit of whirring for about a minute before doing nothing other than maybe spitting out a blank sheet. Uh Oh. It wasn't throwing any obvious data errors at me which suggested it was more likely a mechanical issue. It also didn't help that the only real status output from the printer other than the paper itself was a blinking light. +I crossed my fingers and hoped it was a data issue and that my camera was just absolutely horrible. I didn't have any Type B cables lying around so I ran out to grab one from another charity shop. I hooked everything up and the computer managed to recognise the printer, albeit with no driver support. +No worries I thought - this is why they give you the little CD-ROM with the drivers on it! I wasn't feeling hopeful about the fact the newest version of Windows on the disc label was XP, but I figured it was worth a try. +Woops. It didn't want to install "SPP-2020 Series Driver". It was happy enough installing "PhotoThru" which seems to just be another basic photo printing tool - as well as a product of its time. +Alright, I'll just use the cheaty method. I googled "SPP-2020 Windows 10 Driver" and to no surprise I was taken to a generic driver download website and found just what I needed. The installer looked similar enough, the difference being it actually worked this time. +It asked me if I wanted to print a test image. Okay, why not... +It worked! It was slower than I expected, but at the same time I don't know why I was expecting more from a cheap home photo printer from 2006. It was a good opportunity to use the film developments I recently had done as test subjects - they could look worse? +I'm pretty happy with this overall. Whole set ended up costing only £14. At the time of release, a pack of 120 sheets like the one I found was as expensive as £38 - a little steeper than the £2.50 I got mine for. I can't find any reliable information about the release value of the printer itself, but they're going on eBay for around £40-£60, so I reckon this was quite the steal. +Apparently the SPP-2040 featured an LCD screen as well as memory card input. Probably would've made the whole troubleshooting the camera thing 10x easier. That being said I don't feel like digging around for the "better" model. +UPDATE 14/09: To make matters even better, I went on another charity shop run today and found ANOTHER box of paper, this time with 120 SHEETS, 3 times what I got with the other one. This almost beats FreePrints. diff --git a/src/content/blog/141124.md b/src/content/blog/141124.md @@ -0,0 +1,11 @@ +--- +title: JSDiver - Finished +date: 2024-11-14 +desc: It's done +slug: "141124" +--- +I finally finished JSDiver. The final game can be played at [my University Webpage](https://users.aber.ac.uk/luj36/CS25320/jsdiver/), with the source and full information about the game available [on GitHub](https://github.com/LukePJ25/JSDiver). + +You could also just check the page source if you really want to. + +I'm happy with this final version, but if you discover any noticeable problems, or even have any suggestions, please do not hesitate to [let me know](/about#Contact)! diff --git a/src/content/blog/160825.md b/src/content/blog/160825.md @@ -0,0 +1,9 @@ +--- +title: JSGameTemplate +date: 2025-08-16 +desc: Fun bit of abstraction +slug: "160825" +--- +A while a go I created JSDiver as part of my university web project, and since then I've been occasionally reusing the code from that project for other basic canvas-based work. I got a bit tired of having to pull out different functions from the original source code and rearranging everything, so I figured I'd make a sort-of template to use in the future, and then I figured I'd also make it public in case anyone wants to use/critique it. + +Feel free to [check it out](https://github.com/LukePJ25/JSGameTemplate). Use it however you'd like to and for whatever purpose, or just [let me know](/about#Contact) if you think it could be worth making some changes. I will add more functionality to it in the future as I use it. diff --git a/src/content/blog/200326.md b/src/content/blog/200326.md @@ -0,0 +1,9 @@ +--- +title: Small Blog Update +desc: Changes to the blogging page +slug: "200326" +date: 2026-03-20 +--- +Brief update: I've updated the blog system to now be a little more proficient when it comes to loading blog content. There may be a few broken details in some blog pages which I haven't ironed out. Otherwise you won't/shouldn't notice anything different, so that's good. +Also, I've added some new photos to my gallery! It's mostly stuff taken around Bath/Aberystwyth over the last 12-or-so months, and finally got around to having developed. Unfortunately one of the film rolls came out blank, and I'm really hoping that's because I accidentally sent in an unused roll and not because my shutter is broken... +That's it. Talk again soon! diff --git a/src/content/blog/210726.md b/src/content/blog/210726.md @@ -0,0 +1,15 @@ +--- +title: lukeonline - Astro Edition? +desc: That lasted a while +date: 2026-07-21 +slug: "210726" +--- +Not much to say here, other than that I have decided to rewrite this site in Astro! I've picked up a disdain in recent weeks for websites which rely purely on non-free JavaScript to run, and shortly thereafter remembered that my site was one of those. On-top of that, I also just like the idea of having a site which is considerably more performant than a react application. + +I've also pushed it up to [GitHub](https://github.com/LukePJ25/lukeonline)! Feel free to browse the source and do as you please (as is permitted by the license, that is). + +I've dropped photo searching as I'm yet to figure out a decent way of implementing it in Astro (this is all very new to me), along with the fact that it's generally not a necessary feature and was becoming a pain to maintain. I might bring it back eventually. + +I'd also like to write a custom blog renderer like what I had on the previous website. What you're reading right now was translated from Markdown into HTML using the built-in Astro renderer, but it comes with a few quirks I'd like to iron out when I get the chance. + +In the mean time, enjoy? diff --git a/src/content/blog/211024.md b/src/content/blog/211024.md @@ -0,0 +1,25 @@ +--- +title: JSdiver - Part 1 +date: 2024-10-21 +desc: An excuse to do something +slug: "211024" +--- +About a week ago we were given our assignment details for our web development module at University. We were thankfully given something which actually allowed us to be creative - we had to design and develop a (pretty basic) game, which we would implement through the use of HTML5's Canvas element and JavaScript. After about 2 days of working on it, I thought it would be nice to document it here as I work on it. + +I soon enough landed on the simple idea of a skydiving game. The player would control a character falling through the sky, having to dodge random obstacles like birds, balloons, etc. (I'm not entirely sure about balloons, but I can think of a substitute later on). We had been given a fair number of examples of canvas code to work with, so I used some of the elements from those as inspiration. + +![The game in its current state. Not exactly AAA](./image/211024/screenshot1.png) + +Right now, I've got the main sort of "system" built. Initially, it just ran the game physics in a loop, and as a result, there wasn't really much that could happen before or after gameplay with how I had written it. So just this morning, I changed the structure of the game around so that with each frame, the game checks on its current state (basically what it should be doing, e.g., showing Menu, Running the Game, playing a little intro, etc.) and draws/runs everything accordingly. + +I also managed to get a little bit of a main menu drawn up now that I've reworked the game structure. It's not exactly brilliant UX design. Maybe something other than Arial would be in order. I put a little plane (kind-of) at the top, which will have the little player standing in it. My intention is that between pressing "JUMP" and the game starting there'll be a little cutscene where he jumps - just to show off how amazingly talented I am with canvases. + +![The "Main Menu"](./image/211024/screenshot2.png) + +As for the graphics, I just put together a sprite sheet with some pixel-art. My reasoning for pixel-art is that it's considerably easier and quicker to draw, and also it avoids having to worry about strange high-resolution images looking out of place. On top of all that, I just like the way it looks! + +![The game's sprite sheet](./image/211024/graphics.png) + +A few of the graphics on the sheet remain unused, such as the keyboard key, the smaller cloud, the feather, the screen, etc., but it's more of me just rushing to make more silly little graphics. I do have plans for all of them. + +I intend on putting this onto GitHub when I'm done, along with a playable version on my University webpage, but before that, I'll say more about it here, so look out for that. diff --git a/src/content/blog/241024.md b/src/content/blog/241024.md @@ -0,0 +1,43 @@ +--- +title: JSdiver - Part 2 +date: 2024-10-24 +desc: The excuse was enough +slug: "241024" +--- +I've made an adequate amount of progress with JSDiver since the first post. I'm writing this after getting home, and since I've been struggling to get Git access on my own machine due to University restrictions, for now, I can only work on the project on campus machines. It's a little limiting but at least it motivates me to leave the house. + +For this reason, I'll be comfortably explaining the bugs/incomplete features instead of actually fixing them, as I can't fix them at the moment. I mean, I could go to campus right now, but it's late in the evening and I'm tired. I'll do it tomorrow... + +The first sort of noticeable change is a few changes with graphics. There are more sprites on the sprite sheet, including more variants of the plane segment and more obstacles. + +![Updated menu, with a better looking plane](./image/241024/screenshot1.png) + +The menu now also displays your score after you die. It does ask you to submit it to the leaderboard, but you'd struggle with that as I've not actually implemented one yet. It's coming soon, I promise. + +![Score display on the Menu](./image/241024/screenshot4.png) + +I've now also properly implemented the difficulty system. It now has a real influence on the rate at which enemies spawn. I still need to tweak the speed at which they move, as right now it feels like they move too slowly at the beginning, and speed up too quickly. + +The biggest new feature I've created is what I'm currently just calling "big obstacles." I could probably be more creative - "sweeping" might make more sense, but big will do for now. What they do is they kind of wipe across an entire portion of the screen. + +It's partially inspired by the missiles in Jetpack Joyride, where there'll be a warning of where the missiles will be traveling before they're fired. The area in which the obstacle will be flashes red for a few seconds, before the obstacle (currently either a helicopter going up, or a plane traveling sideways) appears for a few moments. + +I haven't actually implemented the collision detection yet, as I was rushed away to a lecture, but I've already sort of schemed it out in my head. The rendering of them is a little odd, but I can probably fix it by tweaking coordinate values. + +I also REALLY want to make the helicopter look prettier. + +![The Ugly Helicopter](./image/241024/screenshot3.png) + +Also, foreground clouds! Only because parallax effects are impressive. + +![Screenshot with clouds in the foreground](./image/241024/screenshot2.png) + +Another important change I made was switching from `setInterval(main, 1000/60);` to just `requestAnimationFrame(main);`. I really should've used it from the start, though I'm pretty new to animation with JavaScript, so I guess I just got confused. + +I probably would've kept using it if not for Firefox being absolutely terrible at running the game with `setInterval()` - a problem which I didn't realize I had until getting home was that the speed of the game is now entirely reliant on execution speed as a result of this, which I for some reason didn't consider. In my defense, the campus machines are considerably weaker than what I have at home, so they ran at a much more reasonable speed. + +I'll just throw a frame limiter onto it once I have access, but if you decide to try the game on anything faster than an office PC, you may find it unplayably fast. + +Speaking of playing it, I elected to put the game up for use now that it's actually playable. I'll probably have the speed thing sorted by this time tomorrow, but if you're somehow reading this within 24 hours of me posting it, try to play it on a weaker device... + +For now, I'm putting it on my [University page](https://users.aber.ac.uk/luj36/CS25320/jsdiver/). If you find any problems I've not mentioned here, please [let me know](/about#Contact). diff --git a/src/content/blog/251024.md b/src/content/blog/251024.md @@ -0,0 +1,15 @@ +--- +title: JSdiver - Part 3 +date: 2024-10-25 +desc: Even more fun changes +slug: "251024" +--- +This will be a much shorter documentation of the changes I've made so far to [JSDiver](https://users.aber.ac.uk/luj36/CS25320/jsdiver/). + +I managed to fix most of the problems I've had since the previous post, bar the issues with `requestAnimationFrame()`, which seem to continue to be an issue after I implemented a frame interval counter. I'm considering just fully reverting to `setInterval()` for the time being. I consulted my tutor for advice and he suggested adding some sort of runtime speed-control option if I'm concerned about the differences in performance across different browsers/machines. I'll figure it out. + +Also made a few changes to the game's graphics while I was at home, as I have access to my preferred image manipulation software, which I'm more experienced in. I can still access the project repository from home, just not Git, so I'm trying to make no more changes from home than I'd put into one commit. + +Below are some of the new changes. Note that the balloon is now gone, replaced with a kite. I was thinking about a drone, but a kite seemed like a good middle ground between something too safe to be considered an obstacle and something which seems too complex to just be an obstacle, which is how a drone felt to me. + +![Updated graphics](./image/251024/newgraphics.png) diff --git a/src/content/blog/261024.md b/src/content/blog/261024.md @@ -0,0 +1,23 @@ +--- +title: Finally, A Cool Lens +date: 2024-10-26 +desc: Adapters can do it all +slug: "261024" +--- +My camera is a Samsung NX1000 Digital Camera, which for the time was pretty good, and it holds up to this day in my opinion. It has a few recurring issues like the mode-selector being really sensitive and deciding to switch modes mid-shoot, which I have to fix every 2 months by filling the camera's guts with contact cleaner. It's otherwise a decent camera. I take most of my photos with it and regardless of how "ehh" they are, it's a big upgrade from my A-Series phone, which itself is barely held together. + +Unfortunately though, the NX series hasn't really been spoken of by Samsung since around 2015, and my camera is about 12 years old now. Due to this abandonment of the line, along with the fact that it was never especially popular and that it used a proprietary lens mount, finding good lenses for the camera alternative to the basic 20-50mm lens it came with isn't as simple as an Amazon search. + +Okay, well, that was a lie, there are a few on Amazon. However, I do need to account for the fact that I don't have much to spend. So I resorted to the next best thing: A lens adapter. It makes perfect sense to just purchase an adapter for the camera, as they seem to be manufactured by a select few companies - and then just find myself a much cheaper vintage lens on eBay or somewhere similar. + +I settled on an NX-M42 adapter, as M42 lenses are pretty diverse in selection. I just had to be okay with giving up autofocus, but whatever. I found myself a decent-looking Praktica lens on eBay, with 80-200mm focal length, at f/4.5. The high focal length stood out to me, as I wanted a much greater zoom range. I bid on it knowing the odds were slim, but to my surprise, it arrived 3 days later in brilliant condition. + +![The Praktica Lens, with the lens adapter attached](./image/261024/lens.jpg) + +Note in the above photo, the adapter is still attached, which is why it seems awfully chunky. + +I went out this morning to test it out on the beach, and I'm pretty happy with the results. I'm going to try it with long exposure at some point to see how it turns out. Below is a photo I took earlier, with a photo I took from my phone for comparison. 200mm gets you far. + +![The End of North Beach, showing the full zoom distance of the lens.](./image/261024/ladder.JPG) + +![The same location from the same spot, taken with my phone at minimum zoom (Standard Camera, Not Ultrawide).](./image/261024/fullview.jpg) diff --git a/src/content/blog/310526.md b/src/content/blog/310526.md @@ -0,0 +1,29 @@ +--- +title: Moving away from "social media" +date: 2026-05-31 +desc: It needs to happen at some point +slug: "310526" +--- +Over the last couple of months I've been becoming increasingly aware of the constant presence that "social-media" has in my life. I put "social-media" in quotations because with how things are going I'm finding it very difficult to understand how it can be considered a fitting name. + +About six months ago, my morning routine would consist of at <i>least</i> 20–30 minutes of scrolling through Instagram Reels, or some other similar content-spewing software. I really did sometimes find myself in the cycle of "I've seen enough now", closing the app, and then immediately reopening it at the hopes of scraping up a bit more dopamine. Now that I'm writing it out, it feels very silly – but that's because it is silly. Of course the worst thing about it is that it's by design, but I won't spend a lot of time describing what the [attention economy](https://en.wikipedia.org/wiki/Attention_economy) actually is (even though I don't think it gets spoken about enough). + +I don't think it was too long after this time that I decided it would finally be sensible to delete Instagram entirely from my device. I realised there was <i>nothing</i> on that platform worth tuning in to see or read every day. There's something to be said about missing out on contact with friends, but I think it goes back to the "social" in "social media" not really being fair usage of the term. There's nothing "social" about logging-in to read about celebrity drama and political nonsense. Where's the social media we had 15 years ago? The one where you <i>only</i> interact with friends and family. The one where the entire framework for having connections with individual people didn't exist purely to encourage you to share content with one-another. + +I was glad to be rid of it. I did sometimes find myself instinctively opening up the app drawer to look for it, only to remember how much better off I am not having access to it. I refrained from deleting my account, given that I <i>do</i> unfortunately still need to use my Meta account to stay in touch with family on WhatsApp, but that's it. + +I did find myself moving to Reddit, given that it was considerably easier to curate the content on my feed, and that it was a lot more discussionbased. Reddit brought about a new problem though, eventually. Aside from the amount of arguing I did with people, there were <i>so many AI-generated posts</i>. Like, <i>the majority</i> of posts were AI-generated on some days. + +The majority of them were clearly just karma-farming accounts or developers looking to promote some new Saas project they "built". Sometimes it was a little funny to see the errors they'd leave in the post, like missing where Claude left a tag which said <i>"[Replace this with the license your project will use]"</i>. I don't consider myself a Luddite of any sort – I do actually use AI semi-regularly in software development, given how useful it can be as a tool – though I think people put too much trust into the tool's ability to spit out an entire stack. I think every line written by an LLM should be properly audited, as it can (and does) make mistakes pretty regularly. Less about how I feel about AI, though... + +The point is that I found myself gradually leaving subreddits that I lost interest in. This went on for a while until realising that I was in about five – maybe six – subreddits. This meant that my feed was a lot smaller given that there would only be so many posts in a set period of time from that many subreddits, and eventually I realised it was pointless. I went to my account settings and deleted the account completely. I didn't really hesitate, nor feel that empty feeling I would've felt before upon losing years of personal information. It just... felt right at this point? + +I'm finally at a point now where I haven't really got any "social media" accounts anymore. I do still have WhatsApp and Discord installed to communicate with people who don't really use any other platforms, but that's it. There aren't any platforms which are designed to constantly deliver attention-grabbing videos to me. I even switched off my YouTube watch history, as I remembered that it completely disables YouTube's recommendation functionality, as well as YouTube shorts. I guess that works in my benefit? + +The question I find myself asking now is what to do next? I suppose it's a little depressing that I don't know what to do with myself without these platforms to turn to. I will be back in university after the summer once my placement year is over, but in the meantime I still need to find ways to entertain myself outside of work. + +I have been getting into self-hosting now as a substitute for doom-scrolling, which is very enjoyable! I pulled out the ThinkCentre M700 I've had lying around for a while and turned it into a homelab. I might write a little more about what I've been getting up to with it, but I managed to get [Navidrome](https://www.navidrome.org/) running pretty comfortably on there inside a Docker container, which meant I could say goodbye to YouTube music (and also gave me an excuse to use all of my CD's for once). + +I intend to create a small blog series at some point about this journey away from these pretty terrible platforms, though for now I intend to keep focusing on my placement and getting back to university. If you have any questions, suggestions, or thoughts, I would [contact](love to hear them). + +<i>Note: I do know em tags, en tags, and hyphens are. This was written with fingers, not tokens!</i> diff --git a/src/content/blog/image/090326/backlinks.png b/src/content/blog/image/090326/backlinks.png Binary files differ. diff --git a/src/content/blog/image/090326/board.png b/src/content/blog/image/090326/board.png Binary files differ. diff --git a/src/content/blog/image/090326/homepage.png b/src/content/blog/image/090326/homepage.png Binary files differ. diff --git a/src/content/blog/image/130924/01.jpg b/src/content/blog/image/130924/01.jpg Binary files differ. diff --git a/src/content/blog/image/130924/02.jpg b/src/content/blog/image/130924/02.jpg Binary files differ. diff --git a/src/content/blog/image/130924/03.jpg b/src/content/blog/image/130924/03.jpg Binary files differ. diff --git a/src/content/blog/image/130924/04.jpg b/src/content/blog/image/130924/04.jpg Binary files differ. diff --git a/src/content/blog/image/130924/05.jpg b/src/content/blog/image/130924/05.jpg Binary files differ. diff --git a/src/content/blog/image/130924/06.jpg b/src/content/blog/image/130924/06.jpg Binary files differ. diff --git a/src/content/blog/image/130924/07.jpg b/src/content/blog/image/130924/07.jpg Binary files differ. diff --git a/src/content/blog/image/130924/08.jpg b/src/content/blog/image/130924/08.jpg Binary files differ. diff --git a/src/content/blog/image/130924/09.jpg b/src/content/blog/image/130924/09.jpg Binary files differ. diff --git a/src/content/blog/image/130924/10.jpg b/src/content/blog/image/130924/10.jpg Binary files differ. diff --git a/src/content/blog/image/130924/11.jpg b/src/content/blog/image/130924/11.jpg Binary files differ. diff --git a/src/content/blog/image/130924/12.jpg b/src/content/blog/image/130924/12.jpg Binary files differ. diff --git a/src/content/blog/image/130924/13.jpg b/src/content/blog/image/130924/13.jpg Binary files differ. diff --git a/src/content/blog/image/130924/14.jpg b/src/content/blog/image/130924/14.jpg Binary files differ. diff --git a/src/content/blog/image/130924/15.jpg b/src/content/blog/image/130924/15.jpg Binary files differ. diff --git a/src/content/blog/image/130924/video.mp4 b/src/content/blog/image/130924/video.mp4 Binary files differ. diff --git a/src/content/blog/image/211024/graphics.png b/src/content/blog/image/211024/graphics.png Binary files differ. diff --git a/src/content/blog/image/211024/screenshot1.png b/src/content/blog/image/211024/screenshot1.png Binary files differ. diff --git a/src/content/blog/image/211024/screenshot2.png b/src/content/blog/image/211024/screenshot2.png Binary files differ. diff --git a/src/content/blog/image/241024/screenshot1.png b/src/content/blog/image/241024/screenshot1.png Binary files differ. diff --git a/src/content/blog/image/241024/screenshot2.png b/src/content/blog/image/241024/screenshot2.png Binary files differ. diff --git a/src/content/blog/image/241024/screenshot3.png b/src/content/blog/image/241024/screenshot3.png Binary files differ. diff --git a/src/content/blog/image/241024/screenshot4.png b/src/content/blog/image/241024/screenshot4.png Binary files differ. diff --git a/src/content/blog/image/251024/newgraphics.png b/src/content/blog/image/251024/newgraphics.png Binary files differ. diff --git a/src/content/blog/image/261024/fullview.jpg b/src/content/blog/image/261024/fullview.jpg Binary files differ. diff --git a/src/content/blog/image/261024/ladder.JPG b/src/content/blog/image/261024/ladder.JPG Binary files differ. diff --git a/src/content/blog/image/261024/lens.jpg b/src/content/blog/image/261024/lens.jpg Binary files differ. diff --git a/src/content/photos/photos.json b/src/content/photos/photos.json @@ -0,0 +1,852 @@ +{ + "photos": [ + { + "id": 202310080001, + "desc": "Taken from the footbridge over the A487/Penglais Road, alongside Aberystwyth University's Penglais Campus", + "location": "Aberystwyth", + "tags": [ + "trees", + "road", + "bridge", + "infrastructure", + "lights", + "aberystwyth", + "A487", + "Penglais Road" + ], + "date": "2023-10-08", + "indexed": true, + "coordinates": { + "x": "52.41884104759987", + "y": "-4.063553160306468" + } + }, + { + "id": 202407240001, + "desc": "Close-up of some foliage along the banks of the Monmouthshire-Brecon Canal, between Gilwern and Govilon.", + "location": "Monmouthshire-Brecon Canal", + "tags": [ + "leaves", + "foliage", + "nature", + "close-up" + ], + "date": "2024-07-24", + "indexed": true, + "coordinates": { + "x": "51.82328461595425", + "y": "-3.0805253785399356" + } + }, + { + "id": 202207200001, + "desc": "The top of the Guildhall in Derry, Northern Ireland, taken from the north face of the city walls.", + "location": "Derry", + "tags": [ + "guildhall", + "tower", + "derry", + "building", + "northern ireland" + ], + "date": "2022-07-20", + "indexed": true, + "coordinates": { + "x": "54.99717944307712", + "y": "-7.320026511905152" + } + }, + { + "id": 202402160001, + "desc": "A shot through the trees of some sheep in a sloped field in Waun Fawr, near Aberystwyth. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Aberystwyth", + "tags": [ + "sheep", + "aberystwyth", + "animals", + "trees", + "foliage", + "nature", + "film", + "clouds" + ], + "date": "2024-02-16", + "indexed": true, + "coordinates": { + "x": "52.4155445175228", + "y": "-4.046161357950561" + } + }, + { + "id": 202307170001, + "desc": "A pair of sheep along the Sliabh Liag Walk on the Atlantic coast of County Donegal, Ireland.", + "location": "Donegal", + "tags": [ + "sliabh liag", + "ireland", + "donegal", + "sheep", + "nature", + "grass" + ], + "date": "2023-07-17", + "indexed": true, + "coordinates": { + "x": "54.62491111401036", + "y": "-8.671505968995003" + } + }, + { + "id": 202208070001, + "desc": "A book (which to be quite honest I cannot identify) in Manchester Cathedral.", + "location": "Manchester", + "tags": [ + "book", + "church", + "manchester", + "dark", + "altar" + ], + "date": "2022-08-07", + "indexed": true, + "coordinates": { + "x": "53.485249193824984", + "y": "-2.24394785877792" + } + }, + { + "id": 202208070002, + "desc": "Beetham Tower in Deansgate, Manchester, taken from Great Bridgewater Street.", + "location": "Manchester", + "tags": [ + "building", + "beetham tower", + "manchester", + "skyscraper", + "sky", + "clouds" + ], + "date": "2022-08-07", + "indexed": true, + "coordinates": { + "x": "53.47550595476663", + "y": "-2.2495852688567095" + } + }, + { + "id": 202208070003, + "desc": "Shot of Old Trafford - Home of Manchester United - taken from MediaCityUK, Salford.", + "location": "Manchester", + "tags": [ + "building", + "old trafford", + "stadium", + "contrast", + "sky", + "clouds", + "manchester", + "people" + ], + "date": "2022-08-07", + "indexed": true, + "coordinates": { + "x": "53.470822619649276", + "y": "-2.2951282457600413" + } + }, + { + "id": 202208070004, + "desc": "No.1 Spinningfields (formerly 1 Hardman Square) in Spinningfields, Manchester, taken from Quay Street.", + "location": "Manchester", + "tags": [ + "building", + "spinningfields", + "manchester", + "skyscraper", + "sky", + "clouds", + "blue" + ], + "date": "2022-08-07", + "indexed": true, + "coordinates": { + "x": "53.47884591432975", + "y": "-2.2528436190052785" + } + }, + { + "id": 202208050001, + "desc": "Teesside Steelworks taken from Redcar Beach, in North Yorkshire, England. This happens to be one of the first photos I took with this camera. The Steelworks were demolished just less than 2 months later, on the 1st of October 2022.", + "location": "Redcar", + "tags": [ + "building", + "people", + "redcar", + "yorkshire", + "industry", + "sky", + "clouds", + "beach", + "water", + "steelworks", + "teesside" + ], + "date": "2022-08-05", + "indexed": true, + "coordinates": { + "x": "54.621476179375804", + "y": "-1.072756327151276" + } + }, + { + "id": 202208050002, + "desc": "Teesside Wind Farm taken from Redcar Beach, in North Yorkshire, England.", + "location": "Redcar", + "tags": [ + "wind-turbines", + "redcar", + "yorkshire", + "industry", + "sky", + "clouds", + "sea", + "water", + "windfarm", + "teesside" + ], + "date": "2022-08-05", + "indexed": true, + "coordinates": { + "x": "54.621476179375804", + "y": "-1.072756327151276" + } + }, + { + "id": 202409160001, + "desc": "View of Rheidol Valley from the Vale of Rheidol railway, near to Devil's Bridge, Pontarfynach.", + "location": "Pontarfynach", + "tags": [ + "pontarfynach", + "devils Bridge", + "valley", + "trees", + ",sky", + "clouds", + "rheidol", + "railway" + ], + "date": "2024-09-16", + "indexed": true, + "coordinates": { + "x": "52.38101442187227", + "y": "-3.8649672587913" + } + }, + { + "id": 202208060001, + "desc": "View of Saltburn Cliff Tramway taken from Saltburn Pier, in Saltburn-on-Sea, North Yorkshire, England.", + "location": "Saltburn-on-Sea", + "tags": [ + "infrastructure", + "buildings", + "yorkshire", + "pier", + "clouds", + "people" + ], + "date": "2022-08-06", + "indexed": true, + "coordinates": { + "x": "54.58770588755976", + "y": "-0.969821966326501" + } + }, + { + "id": 202208060002, + "desc": "View of Saltburn Pier taken from Saltburn Cliff Tramway, in Saltburn-on-Sea, North Yorkshire, England.", + "location": "Saltburn-on-Sea", + "tags": [ + "pier", + "buildings", + "yorkshire", + "pier", + "clouds", + "people", + "ocean", + "sky", + "birds" + ], + "date": "2022-08-06", + "indexed": true, + "coordinates": { + "x": "54.58597303541318", + "y": "-0.9708747732435362" + } + }, + { + "id": 202501290001, + "desc": "View northwards along the coast of West Wales, from the side of Constitution Hill in Aberystwyth, Ceredigion.", + "location": "Aberystwyth", + "tags": [ + "coast", + "nature", + "aberystwyth", + "sea", + "clouds", + "people", + "ocean", + "sky", + "beach", + "constitution" + ], + "date": "2025-01-29", + "indexed": true, + "coordinates": { + "x": "52.424980111704414", + "y": "-4.084009949649851" + } + }, + { + "id": 202501290002, + "desc": "Trail Signage on Constitution Hill in Aberystwyth, Ceredigion, in front of the Irish Sea.", + "location": "Aberystwyth", + "tags": [ + "coast", + "infrastructure", + "signage", + "aberystwyth", + "sea", + "ocean", + "sky", + "constitution" + ], + "date": "2025-01-29", + "indexed": true, + "coordinates": { + "x": "52.424980111704414", + "y": "-4.084009949649851" + } + }, + { + "id": 202501290003, + "desc": "Common Gorse on Constitution Hill in Aberystwyth, Ceredigion, in front of Craig Lais.", + "location": "Aberystwyth", + "tags": [ + "close-up", + "coast", + "foliage", + "nature", + "aberystwyth", + "constitution" + ], + "date": "2025-01-29", + "indexed": true, + "coordinates": { + "x": "52.42432616528239", + "y": "-4.0841141503241145" + } + }, + { + "id": 202501290004, + "desc": "Close-up of the gravel path leading up Constitution Hill in Aberystwyth, Ceredigion.", + "location": "Aberystwyth", + "tags": [ + "path", + "close-up", + "nature", + "aberystwyth", + "constitution" + ], + "date": "2025-01-29", + "indexed": true, + "coordinates": null + }, + { + "id": 202411060001, + "desc": "Close-up of a bonfire during a society social on the North Beach in Aberystwyth, Ceredigion.", + "location": "Aberystwyth", + "tags": [ + "fire", + "close-up", + "beach", + "aberystwyth", + "north beach" + ], + "date": "2024-11-06", + "indexed": true, + "coordinates": { + "x": "52.422250548287415", + "y": "-4.084835897229815" + } + }, + { + "id": 202503160001, + "desc": "Close-up of a pencil on my desk. Stacked 4x macro close-up lenses. Nothing impressive but I find it so cool how detailed it is, so you can see it too.", + "location": "Aberystwyth", + "tags": [ + "pencil", + "close-up", + "indoors", + "desk" + ], + "date": "2025-03-16", + "indexed": true, + "coordinates": null + }, + { + "id": 202503250001, + "desc": "Two seagulls atop a lamppost on the Promenade at Aberystwyth, probably looking for a child to steal food from.", + "location": "Aberystwyth", + "tags": [ + "animals", + "seagulls", + "aberystwyth", + "north beach", + "wales", + "birds" + ], + "date": "2025-03-25", + "indexed": true, + "coordinates": { + "x": "52.421350849543806", + "y": "-4.084670549357345" + } + }, + { + "id": 202503250002, + "desc": "Aberystwyth War Memorial from North Beach, among the murmurations.", + "location": "Aberystwyth", + "tags": [ + "animals", + "seagulls", + "murmurations", + "aberystwyth", + "north beach", + "wales", + "birds", + "war memorial" + ], + "date": "2025-03-25", + "indexed": true, + "coordinates": { + "x": "", + "y": "" + } + }, + { + "id": 202504130001, + "desc": "Telephone pole in Gilwern, Monmouthshire.", + "location": "Gilwern", + "tags": [ + "infrastructure", + "gilwern", + "wales", + "clouds" + ], + "date": "2025-04-13", + "indexed": true, + "coordinates": { + "x": "52.417569237649545", + "y": "-4.084873361910816" + } + }, + { + "id": 202504240001, + "desc": "Small sailboat stuck in the River Foyle in Derry, Ireland. The boat became stuck in August 2020 and has remained since.", + "location": "Derry", + "tags": [ + "infrastructure", + "derry", + "ireland", + "boat", + "river", + "foyle", + "northern ireland" + ], + "date": "2025-04-24", + "indexed": true, + "coordinates": { + "x": "55.015433269198525", + "y": "-7.299559577574298" + } + }, + { + "id": 202504250001, + "desc": "Beach bank in Buncrana, Donegal.", + "location": "Buncrana", + "tags": [ + "buncrana", + "ireland", + "donegal", + "nature", + "beach" + ], + "date": "2025-04-25", + "indexed": true, + "coordinates": { + "x": "55.1299533283039", + "y": "-7.463451202149667" + } + }, + { + "id": 202504250002, + "desc": "The altar at St. Mary's Oratory Catholic Church, Buncrana. Note the portrait of the late Pope Francis.", + "location": "Buncrana", + "tags": [ + "church", + "religion", + "indoors", + "buncrana", + "ireland", + "donegal" + ], + "date": "2025-04-25", + "indexed": true, + "coordinates": { + "x": "55.13333966497167", + "y": "-7.455870949364064" + } + }, + { + "id": 202504250003, + "desc": "The view of Inch Island and Lough Swilly from The Grian\u00e1n of Aileach, Donegal.", + "location": "Donegal", + "tags": [ + "grianan", + "ireland", + "donegal", + "swilly", + "nature", + "beach", + "water" + ], + "date": "2025-04-25", + "indexed": true, + "coordinates": { + "x": "55.023906251834504", + "y": "-7.427898663504699" + } + }, + { + "id": 202506270001, + "desc": "The left wall column at the gates of the famous Strawberry Field in Woolton, Liverpool.", + "location": "Liverpool", + "tags": [ + "england", + "mersey", + "liverpool", + "wall", + "graffiti", + "music" + ], + "date": "2025-06-27", + "indexed": true, + "coordinates": { + "x": "53.380369237950475", + "y": "-2.8837859265774406" + } + }, + { + "id": 202506270002, + "desc": "St Johns Beacon in Liverpool City Centre, as seen from Ranelagh Street.", + "location": "Liverpool", + "tags": [ + "england", + "mersey", + "liverpool", + "tower", + "infrastructure" + ], + "date": "2025-06-27", + "indexed": true, + "coordinates": { + "x": "53.40516515646296", + "y": "-2.979048161821622" + } + }, + { + "id": 202506270003, + "desc": "Seagull outside Tesco. Unsurprisingly little else to say.", + "location": "Liverpool", + "tags": [ + "england", + "mersey", + "liverpool", + "seagull", + "animals", + "nature", + "close-up" + ], + "date": "2025-06-27", + "indexed": true, + "coordinates": { + "x": "53.39896274204891", + "y": "-2.9869519885017257" + } + }, + { + "id": 202506280001, + "desc": "Street Sign for Fawley Road, Allerton, Liverpool.", + "location": "Liverpool", + "tags": [ + "england", + "mersey", + "liverpool", + "signage", + "wall", + "nature", + "street", + "infrastructure" + ], + "date": "2025-06-28", + "indexed": true, + "coordinates": { + "x": "53.37397079916954", + "y": "-2.898360077528038" + } + }, + { + "id": 202506280002, + "desc": "The front-door of 20 Forthlin Road, Allerton, Liverpool - Childhood home of Sir Paul McCartney of the Beatles.", + "location": "Liverpool", + "tags": [ + "england", + "mersey", + "liverpool", + "music", + "wall", + "nature", + "street", + "building" + ], + "date": "2025-06-28", + "indexed": true, + "coordinates": { + "x": "53.36958878493788", + "y": "-2.8978736105948486" + } + }, + { + "id": 202506280003, + "desc": "Sheltered seating on platform 1 of West Allerton Station, Allerton, Liverpool.", + "location": "Liverpool", + "tags": [ + "england", + "mersey", + "liverpool", + "infrastructure", + "wall", + "nature", + "building" + ], + "date": "2025-06-28", + "indexed": true, + "coordinates": { + "x": "53.3691881641319", + "y": "-2.906965007189174" + } + }, + { + "id": 202505010001, + "desc": "View of Cardigan Bay from a bedroom window in Aberystwyth. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Aberystwyth", + "tags": [ + "wales", + "aberystwyth", + "building", + "water", + "ocean", + "sky", + "road", + "film" + ], + "date": "2025-05-01", + "indexed": true, + "coordinates": { + "x": "52.41981633310133", + "y": "-4.082956256798736" + } + }, + { + "id": 202505010002, + "desc": "The Commodore Cinema in Aberystwyth, opened in 1976. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Aberystwyth", + "tags": [ + "wales", + "aberystwyth", + "building", + "cinema", + "town", + "road", + "film" + ], + "date": "2025-05-01", + "indexed": true, + "coordinates": { + "x": "52.41698237714434", + "y": "-4.083550708180044" + } + }, + { + "id": 202505010003, + "desc": "Former RNLI Lifeboat Station and later BBC contact studio on Morfa Mawr/Queen's Road, Aberystwyth. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Aberystwyth", + "tags": [ + "wales", + "aberystwyth", + "building", + "bbc", + "rnli", + "film" + ], + "date": "2025-05-01", + "indexed": true, + "coordinates": { + "x": "52.4179448302087", + "y": "-4.082787176024889" + } + }, + { + "id": 202505010004, + "desc": "Aberystwyth's north beach, as seen from the promenade facing-south towards the Pier and Old College Building. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Aberystwyth", + "tags": [ + "wales", + "aberystwyth", + "building", + "water", + "ocean", + "sky", + "pier", + "beach", + "coast", + "clouds", + "town", + "monument", + "film" + ], + "date": "2025-05-01", + "indexed": true, + "coordinates": { + "x": "52.4195580880428", + "y": "-4.084672263792021" + } + }, + { + "id": 202506010001, + "desc": "View from the B4560 at the Llangynidr Limestone Quarry, facing north towards Llangynidr town and Tretower. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Llangynidr", + "tags": [ + "wales", + "llangynidr", + "infrastructure", + "animals", + "sheep", + "nature", + "road", + "clouds", + "sky", + "valley", + "film" + ], + "date": "2025-06-01", + "indexed": true, + "coordinates": { + "x": "51.84620107811406", + "y": "-3.224967110030572" + } + }, + { + "id": 202506010002, + "desc": "View of Pen Cerrig Calch and the Black Mountains from the junction between Common Road and New School Road in Gilwern, Monmouthshire. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Gilwern", + "tags": [ + "wales", + "gilwern", + "infrastructure", + "sign", + "building", + "mountain", + "nature", + "road", + "clouds", + "sky", + "valley", + "film" + ], + "date": "2025-06-01", + "indexed": true, + "coordinates": { + "x": "51.82946017510509", + "y": "-3.0929546410851105" + } + }, + { + "id": 202507020001, + "desc": "View of the Cavern Quarter on Mathew Street, Liverpool, taken from N John St.. Just on the right behind the Sgt. Peppers bar is the entrance to the official Cavern Club. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Liverpool", + "tags": [ + "england", + "mersey", + "liverpool", + "culture", + "music", + "people", + "alley", + "wall", + "nature", + "building", + "film" + ], + "date": "2025-07-02", + "indexed": true, + "coordinates": { + "x": "53.40629583243874", + "y": "-2.9885051493061146" + } + }, + { + "id": 202508010001, + "desc": "Shot of Bath Abbey taken from Kingston Parade, in Bath, England. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Bath", + "tags": [ + "england", + "bath", + "somerset", + "abbey", + "sky", + "building", + "film" + ], + "date": "2025-08-01", + "indexed": true, + "coordinates": { + "x": "51.38101911848166", + "y": "-2.3591902191334224" + } + }, + { + "id": 202508010002, + "desc": "Cafe Pastel on Abbey Green, in Bath, England. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Bath", + "tags": [ + "england", + "bath", + "somerset", + "cafe", + "shop", + "street", + "underpass", + "cobble", + "building", + "film" + ], + "date": "2025-08-01", + "indexed": true, + "coordinates": { + "x": "51.380510228211094", + "y": "-2.3588890880001383" + } + } + ] +}+ \ No newline at end of file diff --git a/src/content/photos/photos.json.disabled b/src/content/photos/photos.json.disabled @@ -0,0 +1,660 @@ +{ + "photos": [ + { + "id": 202310080001, + "description": "Taken from the footbridge over the A487/Penglais Road, alongside Aberystwyth University's Penglais Campus", + "location": "Aberystwyth", + "tags": ["trees", "road", "bridge", "infrastructure", "lights", "aberystwyth", "A487", "Penglais Road"], + "date": "2023-10-08", + "camera_position": { + "x": "52.41884104759987", + "y": "-4.063553160306468" + }, + "subject_position": { + "x": "52.41824343219751", + "y": "-4.065837114623462" + }, + "indexed": true + }, + { + "id": 202407240001, + "description": "Close-up of some foliage along the banks of the Monmouthshire-Brecon Canal, between Gilwern and Govilon.", + "location": "Monmouthshire-Brecon Canal", + "tags": ["leaves", "foliage", "nature", "close-up"], + "date": "2024-07-24", + "camera_position": { + "x": "51.82328461595425", + "y": "-3.0805253785399356" + }, + "subject_position": { + "x": "51.823268037513245", + "y": "-3.080353046611756" + }, + "indexed": true + }, + { + "id": 202207200001, + "description": "The top of the Guildhall in Derry, Northern Ireland, taken from the north face of the city walls.", + "location": "Derry", + "tags": ["guildhall", "tower", "derry", "building", "northern ireland"], + "date": "2022-07-20", + "camera_position": { + "x": "54.99717944307712", + "y": "-7.320026511905152" + }, + "subject_position": { + "x": "54.99743617498651", + "y": "-7.319471923306054" + }, + "indexed": true + }, + { + "id": 202402160001, + "description": "A shot through the trees of some sheep in a sloped field in Waun Fawr, near Aberystwyth. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Aberystwyth", + "tags": ["sheep", "aberystwyth", "animals", "trees", "foliage", "nature", "film", "clouds"], + "date": "2024-02-16", + "camera_position": { + "x": "52.4155445175228", + "y": "-4.046161357950561" + }, + "subject_position": { + "x": "52.41556169510183", + "y": "-4.0463779463272225" + }, + "indexed": true + }, + { + "id": 202307170001, + "description": "A pair of sheep along the Sliabh Liag Walk on the Atlantic coast of County Donegal, Ireland.", + "location": "Donegal", + "tags": ["sliabh liag", "ireland", "donegal", "sheep", "nature", "grass"], + "date": "2023-07-17", + "camera_position": { + "x": "54.62491111401036", + "y": "-8.671505968995003" + }, + "subject_position": { + "x": "54.62483000519929", + "y": "-8.672567696106" + }, + "indexed": true + }, + { + "id": 202208070001, + "description": "A book (which to be quite honest I cannot identify) in Manchester Cathedral.", + "location": "Manchester", + "tags": ["book", "church", "manchester", "dark", "altar"], + "date": "2022-08-07", + "camera_position": { + "x": "53.485249193824984", + "y": "-2.24394785877792" + }, + "subject_position": { + "x": "53.485253183809924", + "y": "-2.2438573342242067" + }, + "indexed": true + }, + { + "id": 202208070002, + "description": "Beetham Tower in Deansgate, Manchester, taken from Great Bridgewater Street.", + "location": "Manchester", + "tags": ["building", "beetham tower", "manchester", "skyscraper", "sky", "clouds"], + "date": "2022-08-07", + "camera_position": { + "x": "53.47550595476663", + "y": "-2.2495852688567095" + }, + "subject_position": { + "x": "53.47549643961643", + "y": "-2.250342824562051" + }, + "indexed": true + }, + { + "id": 202208070003, + "description": "Shot of Old Trafford - Home of Manchester United - taken from MediaCityUK, Salford.", + "location": "Manchester", + "tags": ["building", "old trafford", "stadium", "contrast", "sky", "clouds", "manchester", "people"], + "date": "2022-08-07", + "camera_position": { + "x": "53.470822619649276", + "y": "-2.2951282457600413" + }, + "subject_position": { + "x": "53.46352755542633", + "y": "-2.293080915938202" + }, + "indexed": true + }, + { + "id": 202208070004, + "description": "No.1 Spinningfields (formerly 1 Hardman Square) in Spinningfields, Manchester, taken from Quay Street.", + "location": "Manchester", + "tags": ["building", "spinningfields", "manchester", "skyscraper", "sky", "clouds", "blue"], + "date": "2022-08-07", + "camera_position": { + "x": "53.47884591432975", + "y": "-2.2528436190052785" + }, + "subject_position": { + "x": "53.47903452505773", + "y": "-2.2522429263723898" + }, + "indexed": true + }, + { + "id": 202208050001, + "description": "Teesside Steelworks taken from Redcar Beach, in North Yorkshire, England. This happens to be one of the first photos I took with this camera. The Steelworks were demolished just less than 2 months later, on the 1st of October 2022.", + "location": "Redcar", + "tags": ["building", "people", "redcar", "yorkshire", "industry", "sky", "clouds", "beach", "water", "steelworks", "teesside"], + "date": "2022-08-05", + "camera_position": { + "x": "54.621476179375804", + "y": "-1.072756327151276" + }, + "subject_position": { + "x": "54.620958304266196", + "y": " -1.1275078556906983" + }, + "indexed": true + }, + { + "id": 202208050002, + "description": "Teesside Wind Farm taken from Redcar Beach, in North Yorkshire, England.", + "location": "Redcar", + "tags": ["wind-turbines", "redcar", "yorkshire", "industry", "sky", "clouds", "sea", "water", "windfarm", "teesside"], + "date": "2022-08-05", + "camera_position": { + "x": "54.621476179375804", + "y": "-1.072756327151276" + }, + "subject_position": { + "x": "54.64076848549874", + "y": "-1.098684937150386" + }, + "indexed": true + }, + { + "id": 202409160001, + "description": "View of Rheidol Valley from the Vale of Rheidol railway, near to Devil's Bridge, Pontarfynach.", + "location": "Pontarfynach", + "tags": ["pontarfynach", "devils Bridge", "valley", "trees", ",sky", "clouds", "rheidol", "railway"], + "date": "2024-09-16", + "camera_position": { + "x": "52.38101442187227", + "y": "-3.8649672587913" + }, + "subject_position": { + "x": "52.38430558471154", + "y": "-3.8472241053664633" + }, + "indexed": true + }, + { + "id": 202208060001, + "description": "View of Saltburn Cliff Tramway taken from Saltburn Pier, in Saltburn-on-Sea, North Yorkshire, England.", + "location": "Saltburn-on-Sea", + "tags": ["infrastructure", "buildings", "yorkshire", "pier", "clouds", "people"], + "date": "2022-08-06", + "camera_position": { + "x": "54.58770588755976", + "y": "-0.969821966326501" + }, + "subject_position": { + "x": "54.58597303541318", + "y": "-0.9708747732435362" + }, + "indexed": true + }, + { + "id": 202208060002, + "description": "View of Saltburn Pier taken from Saltburn Cliff Tramway, in Saltburn-on-Sea, North Yorkshire, England.", + "location": "Saltburn-on-Sea", + "tags": ["pier", "buildings", "yorkshire", "pier", "clouds", "people", "ocean", "sky", "birds"], + "date": "2022-08-06", + "camera_position": { + "x": "54.58597303541318", + "y": "-0.9708747732435362" + }, + "subject_position": { + "x": "54.58813085809052", + "y": "-0.9695627150863282" + }, + "indexed": true + }, + { + "id": 202501290001, + "description": "View northwards along the coast of West Wales, from the side of Constitution Hill in Aberystwyth, Ceredigion.", + "location": "Aberystwyth", + "tags": ["coast", "nature", "aberystwyth", "sea", "clouds", "people", "ocean", "sky", "beach", "constitution"], + "date": "2025-01-29", + "camera_position": { + "x": "52.424980111704414", + "y": "-4.084009949649851" + }, + "subject_position": { + "x": "52.58634360945222", + "y": "-4.086996599035665" + }, + "indexed": true + }, + { + "id": 202501290002, + "description": "Trail Signage on Constitution Hill in Aberystwyth, Ceredigion, in front of the Irish Sea.", + "location": "Aberystwyth", + "tags": ["coast", "infrastructure", "signage", "aberystwyth", "sea", "ocean", "sky", "constitution"], + "date": "2025-01-29", + "camera_position": { + "x": "52.424980111704414", + "y": "-4.084009949649851" + }, + "subject_position": { + "x": "52.425059853936574", + "y": "-4.084198150204245" + }, + "indexed": true + }, + { + "id": 202501290003, + "description": "Common Gorse on Constitution Hill in Aberystwyth, Ceredigion, in front of Craig Lais.", + "location": "Aberystwyth", + "tags": ["close-up", "coast", "foliage", "nature", "aberystwyth", "constitution"], + "date": "2025-01-29", + "camera_position": { + "x": "52.42432616528239", + "y": "-4.0841141503241145" + }, + "subject_position": { + "x": "52.424310559810685", + "y": "-4.084177374556319" + }, + "indexed": true + }, + { + "id": 202501290004, + "description": "Close-up of the gravel path leading up Constitution Hill in Aberystwyth, Ceredigion.", + "location": "Aberystwyth", + "tags": ["path", "close-up", "nature", "aberystwyth", "constitution"], + "date": "2025-01-29", + "indexed": true + }, + { + "id": 202411060001, + "description": "Close-up of a bonfire during a society social on the North Beach in Aberystwyth, Ceredigion.", + "location": "Aberystwyth", + "tags": ["fire", "close-up", "beach", "aberystwyth", "north beach"], + "date": "2024-11-06", + "camera_position": { + "x": "52.422250548287415", + "y": "-4.084835897229815" + }, + "subject_position": { + "x": "52.422250548287415", + "y": "-4.084835897229815" + }, + "indexed": true + }, + { + "id": 202503160001, + "description": "Close-up of a pencil on my desk. Stacked 4x macro close-up lenses. Nothing impressive but I find it so cool how detailed it is, so you can see it too.", + "location": "Aberystwyth", + "tags": ["pencil", "close-up", "indoors", "desk"], + "date": "2025-03-16", + "indexed": true + }, + { + "id": 202503250001, + "description": "Two seagulls atop a lamppost on the Promenade at Aberystwyth, probably looking for a child to steal food from.", + "location": "Aberystwyth", + "tags": ["animals", "seagulls", "aberystwyth", "north beach", "wales", "birds"], + "date": "2025-03-25", + "camera_position": { + "x": "52.421350849543806", + "y": "-4.084670549357345" + }, + "subject_position": { + "x": "52.42142527587008", + "y": "-4.084648421133104" + }, + "indexed": true + }, + { + "id": 202503250002, + "description": "Aberystwyth War Memorial from North Beach, among the murmurations.", + "location": "Aberystwyth", + "tags": ["animals", "seagulls", "murmurations", "aberystwyth", "north beach", "wales", "birds", "war memorial"], + "date": "2025-03-25", + "camera_position": { + "x": "", + "y": "" + }, + "subject_position": { + "x": "52.41392919684411", + "y": "-4.091121299354879" + }, + "indexed": true + }, + { + "id": 202504130001, + "description": "Telephone pole in Gilwern, Monmouthshire.", + "location": "Gilwern", + "tags": ["infrastructure", "gilwern", "wales", "clouds"], + "date": "2025-04-13", + "camera_position": { + "x": "52.417569237649545", + "y": "-4.084873361910816" + }, + "subject_position": { + "x": "52.413939536496166", + "y": "-4.091128635776341" + }, + "indexed": true + }, + { + "id": 202504240001, + "description": "Small sailboat stuck in the River Foyle in Derry, Ireland. The boat became stuck in August 2020 and has remained since.", + "location": "Derry", + "tags": ["infrastructure", "derry", "ireland", "boat", "river", "foyle", "northern ireland"], + "date": "2025-04-24", + "camera_position": { + "x": "55.015433269198525", + "y": "-7.299559577574298" + }, + "subject_position": { + "x": "55.01425692027021", + "y": "-7.298398848515587" + }, + "indexed": true + }, + { + "id": 202504250001, + "description": "Beach bank in Buncrana, Donegal.", + "location": "Buncrana", + "tags": ["buncrana", "ireland", "donegal", "nature", "beach"], + "date": "2025-04-25", + "camera_position": { + "x": "55.1299533283039", + "y": "-7.463451202149667" + }, + "subject_position": { + "x": "55.129932447393585", + "y": "-7.463233802465966" + }, + "indexed": true + }, + { + "id": 202504250002, + "description": "The altar at St. Mary's Oratory Catholic Church, Buncrana. Note the portrait of the late Pope Francis.", + "location": "Buncrana", + "tags": ["church", "religion", "indoors", "buncrana", "ireland", "donegal"], + "date": "2025-04-25", + "camera_position": { + "x": "55.13333966497167", + "y": "-7.455870949364064" + }, + "subject_position": { + "x": "55.13327110827098", + "y": "-7.456169296287254" + }, + "indexed": true + }, + { + "id": 202504250003, + "description": "The view of Inch Island and Lough Swilly from The GrianĂ¡n of Aileach, Donegal.", + "location": "Donegal", + "tags": ["grianan", "ireland", "donegal", "swilly", "nature", "beach", "water"], + "date": "2025-04-25", + "camera_position": { + "x": "55.023906251834504", + "y": "-7.427898663504699" + }, + "subject_position": { + "x": "55.066394768653836", + "y": "-7.497497204215549" + }, + "indexed": true + }, + { + "id": 202506270001, + "description": "The left wall column at the gates of the famous Strawberry Field in Woolton, Liverpool.", + "location": "Liverpool", + "tags": ["england", "mersey", "liverpool", "wall", "graffiti", "music"], + "date": "2025-06-27", + "camera_position": { + "x": "53.380369237950475", + "y": "-2.8837859265774406" + }, + "subject_position": { + "x": "53.380369237950475", + "y": "-2.8837859265774406" + }, + "indexed": true + }, + { + "id": 202506270002, + "description": "St Johns Beacon in Liverpool City Centre, as seen from Ranelagh Street.", + "location": "Liverpool", + "tags": ["england", "mersey", "liverpool", "tower", "infrastructure"], + "date": "2025-06-27", + "camera_position": { + "x": "53.40516515646296", + "y": "-2.979048161821622" + }, + "subject_position": { + "x": "53.406329369870825", + "y": "-2.981993007500303" + }, + "indexed": true + }, + { + "id": 202506270003, + "description": "Seagull outside Tesco. Unsurprisingly little else to say.", + "location": "Liverpool", + "tags": ["england", "mersey", "liverpool", "seagull", "animals", "nature", "close-up"], + "date": "2025-06-27", + "camera_position": { + "x": "53.39896274204891", + "y": "-2.9869519885017257" + }, + "subject_position": { + "x": "53.398966740145454", + "y": "-2.986901026529018" + }, + "indexed": true + }, + { + "id": 202506280001, + "description": "Street Sign for Fawley Road, Allerton, Liverpool.", + "location": "Liverpool", + "tags": ["england", "mersey", "liverpool", "signage", "wall", "nature", "street", "infrastructure"], + "date": "2025-06-28", + "camera_position": { + "x": "53.37397079916954", + "y": "-2.898360077528038" + }, + "subject_position": { + "x": "53.37397079916954", + "y": "-2.898360077528038" + }, + "indexed": true + }, + { + "id": 202506280002, + "description": "The front-door of 20 Forthlin Road, Allerton, Liverpool - Childhood home of Sir Paul McCartney of the Beatles.", + "location": "Liverpool", + "tags": ["england", "mersey", "liverpool", "music", "wall", "nature", "street", "building"], + "date": "2025-06-28", + "camera_position": { + "x": "53.36958878493788", + "y": "-2.8978736105948486" + }, + "subject_position": { + "x": "53.36968480537429", + "y": "-2.897852823474402" + }, + "indexed": true + }, + { + "id": 202506280003, + "description": "Sheltered seating on platform 1 of West Allerton Station, Allerton, Liverpool.", + "location": "Liverpool", + "tags": ["england", "mersey", "liverpool", "infrastructure", "wall", "nature", "building"], + "date": "2025-06-28", + "camera_position": { + "x": "53.3691881641319", + "y": "-2.906965007189174" + }, + "subject_position": { + "x": "53.36925097811591", + "y": "-2.906824861764229" + }, + "indexed": true + }, + { + "id": 202505010001, + "description": "View of Cardigan Bay from a bedroom window in Aberystwyth. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Aberystwyth", + "tags": ["wales", "aberystwyth", "building", "water", "ocean", "sky", "road", "film"], + "date": "2025-05-01", + "camera_position": { + "x": "52.41981633310133", + "y": "-4.082956256798736" + }, + "subject_position": { + "x": "52.419606172671514", + "y": "-4.08394069704007" + }, + "indexed": true + }, + { + "id": 202505010002, + "description": "The Commodore Cinema in Aberystwyth, opened in 1976. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Aberystwyth", + "tags": ["wales", "aberystwyth", "building", "cinema", "town", "road", "film"], + "date": "2025-05-01", + "camera_position": { + "x": "52.41698237714434", + "y": "-4.083550708180044" + }, + "subject_position": { + "x": "52.417118256896735", + "y": "-4.083463365625635" + }, + "indexed": true + }, + { + "id": 202505010003, + "description": "Former RNLI Lifeboat Station and later BBC contact studio on Morfa Mawr/Queen's Road, Aberystwyth. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Aberystwyth", + "tags": ["wales", "aberystwyth", "building", "bbc", "rnli", "film"], + "date": "2025-05-01", + "camera_position": { + "x": "52.4179448302087", + "y": "-4.082787176024889" + }, + "subject_position": { + "x": "52.4179448302087", + "y": "-4.082787176024889" + }, + "indexed": true + }, + { + "id": 202505010004, + "description": "Aberystwyth's north beach, as seen from the promenade facing-south towards the Pier and Old College Building. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Aberystwyth", + "tags": ["wales", "aberystwyth", "building", "water", "ocean", "sky", "pier", "beach", "coast", "clouds", "town", "monument", "film"], + "date": "2025-05-01", + "camera_position": { + "x": "52.4195580880428", + "y": "-4.084672263792021" + }, + "subject_position": { + "x": "52.41576519103296", + "y": "-4.087742790101202" + }, + "indexed": true + }, + { + "id": 202506010001, + "description": "View from the B4560 at the Llangynidr Limestone Quarry, facing north towards Llangynidr town and Tretower. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Llangynidr", + "tags": ["wales", "llangynidr", "infrastructure", "animals", "sheep", "nature", "road", "clouds", "sky", "valley", "film"], + "date": "2025-06-01", + "camera_position": { + "x": "51.84620107811406", + "y": "-3.224967110030572" + }, + "subject_position": { + "x": "51.88975786246911", + "y": "-3.2298067102291856" + }, + "indexed": true + }, + { + "id": 202506010002, + "description": "View of Pen Cerrig Calch and the Black Mountains from the junction between Common Road and New School Road in Gilwern, Monmouthshire. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Gilwern", + "tags": ["wales", "gilwern", "infrastructure", "sign", "building", "mountain", "nature", "road", "clouds", "sky", "valley", "film"], + "date": "2025-06-01", + "camera_position": { + "x": "51.82946017510509", + "y": "-3.0929546410851105" + }, + "subject_position": { + "x": "51.89362566398925", + "y": "-3.1369124143992013" + }, + "indexed": true + }, + { + "id": 202507020001, + "description": "View of the Cavern Quarter on Mathew Street, Liverpool, taken from N John St.. Just on the right behind the Sgt. Peppers bar is the entrance to the official Cavern Club. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Liverpool", + "tags": ["england", "mersey", "liverpool", "culture", "music", "people", "alley", "wall", "nature", "building", "film"], + "date": "2025-07-02", + "camera_position": { + "x": "53.40629583243874", + "y": "-2.9885051493061146" + }, + "subject_position": { + "x": "53.40636645149527", + "y": "-2.98785288095685" + }, + "indexed": true + }, + { + "id": 202508010001, + "description": "Shot of Bath Abbey taken from Kingston Parade, in Bath, England. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Bath", + "tags": ["england", "bath", "somerset", "abbey", "sky", "building", "film"], + "date": "2025-08-01", + "camera_position": { + "x": "51.38101911848166", + "y": "-2.3591902191334224" + }, + "subject_position": { + "x": "51.38147571874255", + "y": "-2.3587731356227613" + }, + "indexed": true + }, + { + "id": 202508010002, + "description": "Cafe Pastel on Abbey Green, in Bath, England. Taken on 35mm film with a Kodak Retinette 1A.", + "location": "Bath", + "tags": ["england", "bath", "somerset", "cafe", "shop", "street", "underpass", "cobble", "building", "film"], + "date": "2025-08-01", + "camera_position": { + "x": "51.380510228211094", + "y": "-2.3588890880001383" + }, + "subject_position": { + "x": "51.38042945337479", + "y": "-2.3589729070341967" + }, + "indexed": true + } + ] +}