Merge branch 'main' of github.com:TomHodson/tomhodson.github.com

This commit is contained in:
Tom 2023-08-02 11:13:14 +01:00
commit 56dd9ff774
24 changed files with 3857 additions and 11 deletions

4
_drafts/docker.md Normal file
View File

@ -0,0 +1,4 @@
- setting up docker, docker compose and portainer on a pi
- writing some docker compose yml files
- using caddy to proxy it (bit annoying)
- setting up wireguard so it's accessible externally

View File

@ -12,4 +12,17 @@ I just ran my first half marathon. To celebrate the occasion I'm going to have a
<img src="/assets/blog/running/time_vs_distance_plus_hist.svg"/>
<figcaption>
</figcaption>
</figure>
</figure>
- download all my runs from strava
- scatter them on a (distance, time) plot
- plot the (distance, time) curves predicted by the V02 max tables in the running book
- interpolate the table to get a smooth function parametrized by V02max
- fit that to my data
- potentially will need to take only the top 20% of runs or something
- and/or weight by time to get a better estimate of current V02max
Extensions:
- download heart rate data and make a histogram per hour of the day
- could map radius to heart rate and angle to hour of day to make a nice figure

View File

@ -6,6 +6,7 @@
<title>Tom Hodson - {{ page.title }}</title>
<meta property="og:title" content="Tom Hodson - {{ page.title }}">
<meta name="twitter:title" content="Tom Hodson - {{ page.title }}">
<meta name="theme-color" content="#fcfcfc">
<meta name="description" content="{{page.excerpt | strip_html | strip}}">
<meta property="og:description" content="{{page.excerpt | strip_html | strip}}">
@ -14,15 +15,28 @@
<meta property="og:url" content="{{site.url}}{{page.url}}">
<meta property="twitter:domain" content="thomashodson.com">
<meta property="twitter:url" content="{{site.url}}{{page.url}}">
<meta name="twitter:site" content="@T_Hodson">
<meta property="og:type" content="website">
{% if page.image %}
<meta name="twitter:card" content="{{site.url}}{{page.image}}">
{% if page.social_image %}
{% assign image = page.social_image %}
{% elsif page.image %}
{% assign image = page.image %}
{% else image = false %}
{% endif %}
{% if image %}
<!-- This tag enables pages to be featured in Google Discover as large previews
See: https://developers.google.com/search/docs/advanced/mobile/google-discover?hl=en&visit_id=637424198370039526-3805703503&rd=1 -->
<meta name="robots" content="max-image-preview:large">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="{{site.url}}{{page.image}}">
<meta property="og:image" content="{{site.url}}{{page.image}}">
{% if page.alt %} <!-- Note og:image:alt must immediately follow og:image tag -->
<meta property="og:image:alt" content="{{page.alt | strip}}">
<meta property="twitter:image:alt" content="{{page.alt | strip}}">
{% endif %}
{% endif %}

3798
_includes/fk_schematic.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 249 KiB

View File

@ -2,7 +2,6 @@
title: My Jupyter and Conda setup
date: 2022-02-02
layout: post
image:
---
I really like working in Jupyterlab but getting it to work nicely is always a bit challenging, these are my notes for roughly how I have it set up.

View File

@ -4,6 +4,9 @@ excerpt: |
I made a set of interactive slides for a course on the command line, complete with command line playback!
<script async id="asciicast-498583" src="https://asciinema.org/a/498583.js" data-autoplay="true"></script>
layout: post
hide_image: true # Only use this image for static previews
image: /assets/images/command_line_slides.png
alt: A screenshot of a slide deck with computer code on it.
---
I had to give a quick lecture on using the command line and came up with this to do live demos of using the command line. Embedded below.

View File

@ -2,7 +2,8 @@
title: How to Animate Inkscape SVGs with d3
excerpt: In which a simple thing turns out to be surprisingly in-depth!
layout: post
image: /assets/extracted_from_ipynb/452af1f7-a8e3-4b32-b6d2-720c31f27af3.png
image: /assets/thesis/intro_chapter/fk_schematic.svg
social_image: /assets/social/fk_diagram.png
alt: A diagram showing showing circles with arrows in them linked by lines that represents a simple physical model of electron spins interacting.
---

View File

@ -2,6 +2,7 @@
title: Sensor Watch
layout: post
image: /assets/blog/SensorWatch/watch.svg
social_image: /assets/social/sensor_watch.svg
alt: A simple vector image of a classic casio watch.
---

View File

@ -2,6 +2,7 @@
title: Using emscripten to simulate an arduino project
layout: post
image: /assets/blog/emscripten_arduino/arduino.svg
social_image: /assets/social/arduino.png
alt: A rendered image of a breadboard with an LED and resistor wired up in series to an arduino.
---

View File

@ -3,6 +3,7 @@ title: Fantasy Ikea Shelves
excerpt: We needed some shelves to fit an odd space under a ladder...
layout: post
image: /assets/blog/shelves/thumb.svg
social_image: /assets/social/shelves.png
alt: A 3D render of some shelves fitting into a triangular space under a ladder.
---
In our new flat we have this mezzanine bed with a yellow ladder leading up to it. Between the ladder and the wardrobe we had this kind of triangular space that we wanted to use for more storage. After doing a quick design on paper I started mocking something up.

View File

@ -3,6 +3,8 @@ title: Jupyter and Conda setup
date: 2023-06-20
layout: post
image: /assets/blog/mamba/logos.svg
social_image: /assets/social/jupyter.png
alt: The orange, abstract, Jupyter logo and the Mamba logo which is a cute black snake.
---
These are my notes to myself about how to setup jupyter+conda/mamba environments.

View File

@ -1,13 +1,17 @@
---
title: My first PCB!
excerpt: |
I've had a longstanding ambition to get a PCB manufactured but I've always put it off. Lately I had a need for a little adapter board to break out these 1.27mm spaced pins to 2.54mm pins that would fit into a breadboard. Feeling like it was a simple enough board I finally decided to fire up KiCad and give it a go. <model-viewer alt="An interactive 3D render of a PCB with 2.54mm headers on one side to fit a breadboard and 1.27 inch headers on the other." src="/assets/blog/PCB/model/pcb.glb" ar ar-modes="webxr scene-viewer quick-look" camera-controls poster="/assets/blog/PCB/model/poster.webp" interaction-prompt="none" shadow-intensity="1" shadow-softness="1" exposure="0.5" camera-orbit="196.6deg 59.73deg 0.1m" field-of-view="30deg" auto-rotate> </model-viewer>
I've had a longstanding ambition to get a PCB manufactured but I've always put it off. Lately I had a need for a little adapter board to break out these 1.27mm spaced pins to 2.54mm pins that would fit into a breadboard. Feeling like it was a simple enough board I finally decided to fire up KiCad and give it a go. <model-viewer alt="An interactive 3D render of a PCB with 2.54mm headers on one side to fit a breadboard and 1.27 inch headers on the other." src="/assets/blog/PCB/model/pcb.glb" ar camera-controls poster="/assets/blog/PCB/model/poster.webp" interaction-prompt="none" shadow-intensity="1" shadow-softness="1" exposure="0.5" camera-orbit="196.6deg 59.73deg 0.1m" field-of-view="30deg" auto-rotate> </model-viewer>
layout: post
commentid: 110810437631337327
hide_image: true # Only use this image for static previews
social_image: /assets/social/pcb_1.png
alt: A 3D render of a simple PCB.
---
I made my first PCB!
<figure>
<model-viewer alt="An interactive 3D render of a PCB with 2.54mm headers on one side to fit a breadboard and 1.27 inch headers on the other." src="/assets/blog/PCB/model/pcb.glb" ar ar-modes="webxr scene-viewer quick-look" interaction-prompt="none" camera-controls poster="/assets/blog/PCB/model/poster.webp" shadow-intensity="1" shadow-softness="1" exposure="0.5" camera-orbit="196.6deg 59.73deg 0.1m" field-of-view="30deg" auto-rotate> </model-viewer>
<model-viewer alt="An interactive 3D render of a PCB with 2.54mm headers on one side to fit a breadboard and 1.27 inch headers on the other." src="/assets/blog/PCB/model/pcb.glb" ar interaction-prompt="none" camera-controls poster="/assets/blog/PCB/model/poster.webp" shadow-intensity="1" shadow-softness="1" exposure="0.5" camera-orbit="196.6deg 59.73deg 0.1m" field-of-view="30deg" auto-rotate> </model-viewer>
<figcaption>
A little interactive model that you can spin around. You can make these nice 3D renders by exporting from KiCAD as WRL, importing into blender and then exporting as glb.
</figcaption>

View File

@ -16,6 +16,8 @@ excerpt: |
>>> ('a', 'b', 'c')
```
social_image: /assets/social/parsing.png
alt: A screenshot of some python code showing a PEG grammar definition.
layout: post
commentid: 110746239432993930
---

View File

@ -1,14 +1,17 @@
---
title: Toothbrush Shelf
excerpt: |
It can be hard to find genuine everyday uses of 3D printing, but after a while you do find some. <model-viewer alt="An interactive 3D render of a small 3D printed shelf to hold a toothbrush near the bathroom shaver socket without the cables being messy" src="/assets/blog/toothbrush_shelf/model/toothbrush_shelf.glb" ar ar-modes="webxr scene-viewer quick-look" poster="/assets/blog/toothbrush_shelf/model/poster.webp" camera-controls shadow-intensity="1.38" shadow-softness="2" exposure="0.8" auto-rotate camera-orbit="-35deg 78.72deg 411.2m" field-of-view="30deg" interaction-prompt="none"> </model-viewer>
It can be hard to find genuine everyday uses of 3D printing, but after a while you do find some. <model-viewer alt="An interactive 3D render of a small 3D printed shelf to hold a toothbrush near the bathroom shaver socket without the cables being messy" src="/assets/blog/toothbrush_shelf/model/toothbrush_shelf.glb" ar poster="/assets/blog/toothbrush_shelf/model/poster.webp" camera-controls shadow-intensity="1.38" shadow-softness="2" exposure="0.8" auto-rotate camera-orbit="-35deg 78.72deg 411.2m" field-of-view="30deg" interaction-prompt="none"> </model-viewer>
layout: post
hide_image: true # Only use this image for static previews
image: /assets/blog/toothbrush_shelf/spin.gif
alt: A render of a 3D printed shelf sitting above a shaver outlet, it spins slowly.
---
It can be hard to find genuine everyday uses of 3D printing, but after a while you do find some! I made this little shelf to tidy up the wires to our devices in the bathroom. The wires are now hidden, coiled up, inside the shelf.
<figure>
<model-viewer alt="An interactive 3D render of a small 3D printed shelf to hold a toothbrush near the bathroom shaver socket without the cables being messy" src="/assets/blog/toothbrush_shelf/model/toothbrush_shelf.glb" ar ar-modes="webxr scene-viewer quick-look" poster="/assets/blog/toothbrush_shelf/model/poster.webp" camera-controls shadow-intensity="1.38" shadow-softness="2" exposure="0.8" auto-rotate camera-orbit="-35deg 78.72deg 411.2m" field-of-view="30deg" interaction-prompt="none"> </model-viewer>
<model-viewer alt="An interactive 3D render of a small 3D printed shelf to hold a toothbrush near the bathroom shaver socket without the cables being messy" src="/assets/blog/toothbrush_shelf/model/toothbrush_shelf.glb" ar poster="/assets/blog/toothbrush_shelf/model/poster.webp" camera-controls shadow-intensity="1.38" shadow-softness="2" exposure="0.8" auto-rotate camera-orbit="-35deg 78.72deg 411.2m" field-of-view="30deg" interaction-prompt="none"> </model-viewer>
<figcaption>
A little 3D model that you can pan and zoom on. Or even use AR on your phone.
</figcaption>

BIN
assets/social/arduino.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
assets/social/jupyter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
assets/social/parsing.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
assets/social/pcb_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

BIN
assets/social/shelves.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@ -8,6 +8,6 @@ permalink: /blog/
<h2 class="p-name blogroll-title"><a class="u-uid u-url" href="{{ post.url }}">{{ post.title }}</a></h2>
<time class="dt-published" datetime="{{ post.date | date_to_xmlschema }}">{{ post.date | date_to_string }}</time>
<summary class="p-summary">{{ post.excerpt | markdownify | remove: '<p>' | remove: '</p>' }}</summary>
<figure class="blogroll"><img class="u-photo" src = "{{post.image}}"></figure>
<figure {% if post.hide_image %} style="display:none;" {% endif %} class="blogroll"><img class="u-photo" src = "{{post.image}}"></figure>
</article>
{% endfor %}

View File

@ -8,7 +8,7 @@ permalink: /thesis/
<p>The formal abstract follows but, in a paragraph, it's about what happens when many electrons interact together in a way where their 'quantumness' is important. It turns out that many weird and wonderful things can happen. Alas we, quantum physicists, don't have great mathematical tools to describe these things. Trying to fix that is what this thesis is about.
<p>This is the <a href="http://thomashodson.com/thesis/">HTML version</a> of this document. A PDF version is available online with either <a href="https://github.com/TomHodson/Thesis/raw/main/thesis.pdf">normal</a> or <a href="https://github.com/TomHodson/Thesis/raw/main/double_line_spaced.pdf">double</a> line spacing.
<p>This is the <a href="thomashodson.com/thesis/">HTML version</a> of this document. A PDF version is available online with either <a href="https://github.com/TomHodson/Thesis/raw/main/thesis.pdf">normal</a> or <a href="https://github.com/TomHodson/Thesis/raw/main/double_line_spaced.pdf">double</a> line spacing.
<h3>Contents</h3>