Compare commits

...

15 Commits

Author SHA1 Message Date
4897c008ce last one plsss 2025-07-06 15:44:39 +02:00
e7d699ebff last one plsss 2025-07-06 15:42:13 +02:00
2e99c7ea60 last one maybe 2025-07-06 15:39:54 +02:00
e76194457a grrr 2025-07-06 15:25:31 +02:00
f586e65eed fixing jquery 2025-07-06 15:22:41 +02:00
ca1da49b8d fixing jquery 2025-07-06 15:21:29 +02:00
8cec0c8c1f speed and analytics 2025-07-06 15:16:31 +02:00
761635d2f9 Clean rebuild without livereload.js 2025-07-06 15:10:16 +02:00
7e5a4d0bab Clean rebuild without livereload.js 2025-07-06 15:09:12 +02:00
d4a2acb521 Clean rebuild without livereload.js 2025-07-06 15:03:03 +02:00
222deea944 analytics and speed pls 2025-07-06 14:58:32 +02:00
ec1407e8e3 analytics and speed pls 2025-07-06 14:54:53 +02:00
d8590a1c46 analytics and speed pls 2025-07-06 14:50:26 +02:00
e61e0166c1 analytics and speed pls 2025-07-06 14:46:48 +02:00
20d91e2926 Update submodule 2025-07-06 14:36:00 +02:00
146 changed files with 558 additions and 5181 deletions

View File

@ -90,12 +90,6 @@ math = true
[[params.social]]
name = "linkedin"
url = "https://www.linkedin.com/in/connerchu/"
[params.vercel_analytics]
enable = true
[params.vercel_speed_insights]
enable = true
[menu]
[[menu.main]]

View File

@ -6,10 +6,11 @@ layout = "photography"
+++
{{< gallery
match="*.jpg|*.jpeg|*.png|*.webp|*.gif"
match="*.webp"
sortOrder="desc"
rowHeight="150"
margins="5"
thumbnailResizeOptions="600x600 q90 Lanczos"
previewType="blur"
>}}
{{< /gallery >}}

View File

@ -0,0 +1,462 @@
<!-- Force jQuery to load first -->
<script src="/shortcode-gallery/jquery-3.7.1.min.js"></script>
<!-- Now load the gallery scripts (these will be loaded again by the shortcode, but this ensures jQuery is present) -->
<script src="/shortcode-gallery/lazy/jquery.lazy.min.js"></script>
<script src="/shortcode-gallery/swipebox/js/jquery.swipebox.min.js"></script>
<script src="/shortcode-gallery/justified_gallery/jquery.justifiedGallery.min.js"></script>
<link rel="stylesheet" href="/shortcode-gallery/swipebox/css/swipebox.min.css">
<link rel="stylesheet" href="/shortcode-gallery/justified_gallery/justifiedGallery.min.css">
<!-- Render the original gallery content -->
{{/* The following is a fallback: you may want to copy the full upstream gallery.html here for more advanced features. */}}
<div>
{{ .Inner }}
</div>
{{ $currentPage := . }}
{{ $images := slice }}
{{ $globalMatch := .Get "globalMatch" }}
{{ $localMatch := .Get "match" }}
{{ if $localMatch }}
{{ $images = (.Page.Resources.Match $localMatch )}}
{{ else if $globalMatch }}
{{ $images = (resources.Match (.Get "globalMatch")) }}
{{ else }}
{{ $images = (.Page.Resources.ByType "image") }}
{{ end }}
{{ $filterOptions := .Get "filterOptions" | default (.Site.Params.galleryFilterOptions | default "[]") }}
{{ if not $filterOptions }}
{{ $filterOptions = "[]" }}
{{ end }}
{{ $storeSelectedFilterInUrl := .Get "storeSelectedFilterInUrl" | default (.Site.Params.storeSelectedFilterInUrl | default false) }}
{{ $sortOrder := .Get "sortOrder" | default (.Site.Params.gallerySortOrder | default "asc") }}
{{ $rowHeight := .Get "rowHeight" | default (.Site.Params.galleryRowHeight | default 150) }}
{{ $margins := .Get "margins" | default (.Site.Params.galleryRowMargins | default 5) }}
{{ $randomize := .Get "randomize" | default (.Site.Params.galleryRandomize | default false) }}
{{ $thumbnailResizeOptions := .Get "thumbnailResizeOptions" | default (.Site.Params.galleryThumbnailResizeOptions | default "300x150 q85 Lanczos") }}
{{ $imageResizeOptions := .Get "imageResizeOptions" | default .Site.Params.galleryImageResizeOptions }}
{{ $loadJQuery := .Get "loadJQuery" | default (.Site.Params.galleryLoadJQuery | default false) }}
{{ $showExif := .Get "showExif" | default (.Site.Params.galleryShowExif | default false) }}
{{ $swipeboxParameters := .Get "swipeboxParameters" | default (.Site.Params.gallerySwipeboxParameters | default "") }}
{{ $justifiedGalleryParameters := .Get "justifiedGalleryParameters" | default (.Site.Params.galleryJustifiedGalleryParameters | default "") }}
{{ $previewType := .Get "previewType" | default (.Site.Params.galleryPreviewType | default "blur") }}
{{ $embedPreview := .Get "embedPreview" | default (.Site.Params.galleryEmbedPreview | default true) }}
{{ $thumbnailHoverEffect := .Get "thumbnailHoverEffect" | default (.Site.Params.galleryThumbnailHoverEffect | default "none") }}
<!-- hugos image processing saves images at resources/_gen/images, if the property resourceDir
is changed in hugos config.toml file the images are save <resourceDir>/_gen/images.
Because it is not possible to access the value of resourceDir, users who change resourceDir also have to change
[params] resourceDir. -->
{{ $thumbnailResourceDir := printf "%s%s" (.Site.Params.resourceDir | default "resources") "/_gen/images/" }}
<!-- Load jquery, jquery-lazy, swipebox and justified_gallery only once per page -->
{{ if not (.Page.Scratch.Get "galleryLoaded") }}
{{ .Page.Scratch.Set "galleryLoaded" true }}
<!-- Use relURL to support hugo projects that run in a subdirectory (bug #18) -->
<!-- Always load jQuery first to fix dependency issues -->
<script src="{{ "shortcode-gallery/jquery-3.7.1.min.js" | relURL }}"></script>
{{ if not (eq $previewType "none") }}
<script src="{{ "shortcode-gallery/lazy/jquery.lazy.min.js" | relURL }}"></script>
{{ end }}
<script src="{{ "shortcode-gallery/swipebox/js/jquery.swipebox.min.js" | relURL }}"></script>
<link rel="stylesheet" href="{{ "shortcode-gallery/swipebox/css/swipebox.min.css"| relURL }}">
<script src="{{ "shortcode-gallery/justified_gallery/jquery.justifiedGallery.min.js"| relURL }}"></script>
<link rel="stylesheet" href="{{ "shortcode-gallery/justified_gallery/justifiedGallery.min.css"| relURL }}"/>
{{ end }}
<style>
{{ if (eq $thumbnailHoverEffect "enlarge") }}
.jg-entry img {
transition: transform .25s ease-in-out !important;
}
.jg-entry img:hover {
transform: scale(1.1);
}
{{ end }}
{{ if not (eq $filterOptions "[]") }}
/* inline css from assets folder */
{{ (resources.Get "shortcode-gallery/filterbar.sass" | toCSS).Content | safeCSS }}
{{ end }}
</style>
<!--
Ordinal increases every time this shortcode is used in a document
Ordinal: {{ .Ordinal}}
-->
{{ $galleryId := (printf "gallery-%v-%v" .Page.File.UniqueID .Ordinal)}}
{{ $galleryWrapperId := (printf "gallery-%v-%v-wrapper" .Page.File.UniqueID .Ordinal)}}
<div id="{{ $galleryWrapperId }}" class="gallery-wrapper">
<div id="{{ $galleryId }}" class="justified-gallery">
{{ range $original := sort $images "Name" $sortOrder}}
{{ if and (eq $original.ResourceType "image") (in "jpeg png tiff webp" $original.MediaType.SubType) (not (hasSuffix $original.Name ".meta")) }}
{{/* Get metadata from sidecar file, if present. Else an empty dictionary is used. */}}
{{ $metaFileName := print $original.Name ".meta"}}
{{ $metadata := slice }}
{{ if and $globalMatch (not $localMatch) }}
{{ $metadata = resources.GetMatch ($metaFileName) }}
{{ else }}
{{ $metadata = $currentPage.Page.Resources.GetMatch ($metaFileName) }}
{{ end }}
{{ if $metadata }}
{{ $metadata = $metadata.Content }}
{{ $metadata = $metadata | unmarshal }}
{{ else }}
{{ $metadata = dict }}
{{ end }}
{{/* If the image has EXIF informations, those are merged together with the metadata from the file */}}
{{ if $original.Exif }}
{{ with $original.Exif }}
{{ $metadata = merge .Tags $metadata }}
{{ end }}
{{ end }}
{{/* Correct orientation of the image, this is needed for thumbnails (and downscaled gallery images)
if the EXIF informations contains an orientation value. See issue #22. */}}
{{ $rotated := $original.Filter images.AutoOrient }}
<div>
{{ $full := "" }}
{{ if $imageResizeOptions }}
{{/* Downscale gallery image, rotate it if needed */}}
{{ $full = ($rotated.Fit $imageResizeOptions) }}
{{ else }}
{{/* No need to use the rotated here, the browser will handle care of EXIF orientation */}}
{{ $full = $original }}
{{ end }}
{{ $thumbnail := "" }}
{{ if eq $thumbnailResizeOptions "original" }}
{{/* If thumbnailResizeOptions is set to 'original', use the original (unmodified) image for the thumbnail */}}
{{ $thumbnail = $original }}
{{ else if eq $thumbnailResizeOptions "full" }}
{{/* If thumbnailResizeOptions is set to 'full', use the same image as the lightbox for the thumbnail */}}
{{ $thumbnail = $full }}
{{ else }}
{{/* Create thumbnail, rotate it if needed */}}
{{ $thumbnail = ($rotated.Fit $thumbnailResizeOptions) }}
{{ end }}
<a href="{{ $full.RelPermalink }}"
class="galleryImg"
{{ with $metadata }}
{{ if .Title }}
title="{{ .Title }}"
{{ else if .ImageDescription }}
title="{{ .ImageDescription }}"
{{ end }}
{{ if $showExif }}
data-description="{{ .Model }}{{ if and .Model .LensModel }} + {{ end }}{{ .LensModel }}<br/>{{ if .FocalLength }}{{ .FocalLength }}mm {{ end }}{{ if .FNumber }}f/{{ printf "%.1f" .FNumber.Float64 }} {{ end }}{{ if .ExposureTime }}{{ .ExposureTime }}sec {{ end }} {{ if .ISO }}ISO {{ .ISO }}{{ end }}"
{{ end }}
{{ if not (eq $filterOptions "[]") }}
{{/* only include fields that are currently supported by the filter mechanism (in JS at the end of the file) */}}
data-meta="{{ (dict "Tags" .Tags "Rating" .Rating "ColorLabels" .ColorLabels "ImageDescription" .ImageDescription) | jsonify }}"
{{ end }}
{{ end }}
>
<img
width="{{ $thumbnail.Width }}" height="{{ $thumbnail.Height }}"
{{ if (eq $previewType "blur") }}
{{ $preview_b := ($thumbnail.Fit ("32x32 q70 box jpg")) }}
style="filter: blur(25px);"
{{ if $embedPreview }}
src="data:image/jpeg;base64,{{ $preview_b.Content | base64Encode }}"
{{ else }}
src="{{ $preview_b.RelPermalink }}"
{{ end }}
class="lazy"
data-src="{{ $thumbnail.RelPermalink }}"
{{ else if (eq $previewType "color") }}
{{ $preview_1p := ($thumbnail.Resize ("1x1 box png")) }}
{{ if $embedPreview }}
src="data:image/png;base64,{{ $preview_1p.Content | base64Encode }}"
{{ else }}
src="{{ $preview_1p.RelPermalink }}"
{{ end }}
class="lazy"
data-src="{{ $thumbnail.RelPermalink }}"
{{ else }}
src="{{ $thumbnail.RelPermalink }}"
{{ end }}
{{ with $metadata }}
{{ if .ImageDescription }}
alt="{{ .ImageDescription }}"
{{ else }}
{{ if .Title}}
alt="{{ .Title }}"
{{ end }}
{{ end }}
{{ end }}
>
</a>
</div>
{{ end }}
{{ end }}
</div>
</div>
<script>
if (!("HSCGjQuery" in window)) {
if (!window.jQuery) {
throw new Error("jQuery is not loaded, hugo-shortcode-gallery wont work without it!");
}
window.HSCGjQuery = window.jQuery.noConflict(true);
}
// Isolate all our variables from other scripts.
// See: https://www.nicoespeon.com/en/2013/05/properly-isolate-variables-in-javascript/
// We also expect to get jQuery as a parameter, so that if a second instance of jQuery is loaded
// after this script is executed (e.g. by a Hugo theme), we will still be referencing the previous
// version of jQuery that has all our plugins loaded.
;(function($) {
$( document ).ready(() => {
const gallery = $("#{{ $galleryId }}");
{{ $lastRowJustification := .Get "lastRow" | default (.Site.Params.galleryLastRow | default "justify") }}
// the instance of swipebox, it will be set once justifiedGallery is initialized
let swipeboxInstance = null;
// before the gallery initialization the listener has to be added
// else we can get a race condition and the listener is never called
gallery.on('jg.complete', () => {
{{ if or (eq $previewType "blur") (eq $previewType "color") }}
// if there is already some low resolution image data loaded, then we will wait for loading´
// the hi-res until the justified gallery has done the layout
$(() => {
$('.lazy').Lazy({
visibleOnly: true,
afterLoad: element => element.css({filter: "none", transition: "filter 1.0s ease-in-out"})
});
});
{{ end }}
swipeboxInstance = $('.galleryImg').swipebox(
$.extend({},
{ {{ $swipeboxParameters | safeJS }} }
)
);
});
// initialize the justified gallery
gallery.justifiedGallery($.extend(
{
rowHeight : {{ $rowHeight }},
margins : {{ $margins }},
border : 0,
randomize : {{ $randomize }},
waitThumbnailsLoad : false,
lastRow : {{ $lastRowJustification }},
captions : false,
// if there is at least one filter option
{{ if not (eq $filterOptions "[]") }}
// we first show no images at all
// till the code way below selects a filter and applies it
// this prevent creating the layout twice
filter : () => false
{{ end }}
},
{ {{ $justifiedGalleryParameters | safeJS }} }
));
// only include JS code for filter options if there at least one filter option
{{ if not (eq $filterOptions "[]") }}
// this function can be used to create a function that can be used by justifiedGallery
// for filtering images by their metadata
function createMetadataFilter(filterFunction) {
return (entry, index, array) => {
let meta = $(entry).find("a").attr("data-meta");
meta = meta ? JSON.parse(meta) : {};
let include = filterFunction(meta);
// only those images visible in justified gallery should be displayed
// in swipebox (only <a> with class galleryImg are displayed in swipebox)
$(entry).find("a").toggleClass("galleryImg", include);
return include;
}
}
// this function returns a function that can be used by justifiedGallery
// for filtering images by their tags
function createTagFilter(tagsRegexString) {
const tagsRegex = RegExp(tagsRegexString);
return createMetadataFilter(meta => {
let tags = meta.Tags;
tags = tags ? tags : [];
return tags.some(tag => tagsRegex.test(tag));
});
};
// this function returns a function that can be used by justifiedGallery
// for filtering images by their description
function createImageDescriptionFilter(descriptionRegexString) {
const descriptionRegex = RegExp(descriptionRegexString);
return createMetadataFilter(meta => {
let imageDescription = meta.ImageDescription;
return imageDescription !== null && descriptionRegex.test(imageDescription);
});
};
// this function returns a function that can be used by justifiedGallery
// for filtering images by their star rating
function createRatingFilter(min, max) {
return createMetadataFilter(meta => {
let rating = meta.Rating;
if(rating === null){
rating = -1;
}
return rating >= min && rating <= max;
});
};
// this function returns a function that can be used by justifiedGallery
// for filtering images by their color labels
function createColorLabelFilter(color) {
color = color.charAt(0).toLowerCase()
return createMetadataFilter(meta => {
let colors = meta.ColorLabels;
return colors && colors.includes(color);
});
};
const filterOptions = {{ $filterOptions | safeJS }};
// insert a div for inserting filter buttons before the gallery
const filterBar = $("<div class='justified-gallery-filterbar'/>");
gallery.before(filterBar);
var wrapper = document.getElementById("{{ $galleryWrapperId }}");
// inline svg icons
const expandIcon = '{{ (resources.Get "shortcode-gallery/font-awesome/expand-alt-solid.svg").Content | safeHTML }}';
const compressIcon = '{{ (resources.Get "shortcode-gallery/font-awesome/compress-alt-solid.svg").Content | safeHTML }}';
function setFulltab(activate) {
if(activate == wrapper.classList.contains("fulltab")){
return; // nothing to do, we are already in the right state
}
wrapper.classList.toggle("fulltab");
gallery.justifiedGallery({
rowHeight : {{ $rowHeight }} * (activate ? 1.5 : 1.0),
lastRow: (activate ? "nojustify": {{ $lastRowJustification }}),
// force justifiedGallery to refresh
refreshTime: 0,
});
// force justifiedGallery to refresh
gallery.data('jg.controller').startImgAnalyzer();
fullTabButton.html(wrapper.classList.contains("fulltab") ? compressIcon : expandIcon)
};
const fullTabButton = $("<button/>");
fullTabButton.html(expandIcon);
fullTabButton.click(() => setFulltab(!wrapper.classList.contains("fulltab")));
filterBar.append(fullTabButton);
$(document).keyup(e => {
// when ESC is pressed
if (e.keyCode === 27){
setFulltab(false);
}
});
function activateFilterButton(filterButton) {
// activate associated filter
gallery.justifiedGallery({filter : filterButton.filter});
// remove select class from all other selected buttons
filterBar.find('.selected').removeClass('selected');
filterButton.addClass("selected");
};
// check if the url contains an instruction to apply a specific filter
// eg. example.com/images/#gallery-filter=Birds
const params = new URLSearchParams(location.hash.replace(/^\#/,""));
let activeFilter = params.get('gallery-filter');
if (!activeFilter) {
// default to first filter
activeFilter = filterOptions[0].label;
}
// create a button for each filter entry
filterOptions.forEach(filterConfig => {
let filter; // create a filter function based on the available attributes of filterConfig
if(filterConfig.tags) {
filter = createTagFilter(filterConfig.tags);
} else if(filterConfig.rating){
if(filterConfig.rating.includes("-")){
minMax = filterConfig.rating.split("-"); // e.g. "3-5"
} else {
minMax = [filterConfig.rating, filterConfig.rating]; // e.g. "4"
}
filter = createRatingFilter(parseInt(minMax[0]), parseInt(minMax[1]));
} else if(filterConfig.color_label){
filter = createColorLabelFilter(filterConfig.color_label);
} else if(filterConfig.description){
filter = createImageDescriptionFilter(filterConfig.description);
} else {
// default to always true filter
filter = createMetadataFilter(meta => true);
}
const filterButton = $("<button/>");
filterButton.text(filterConfig.label);
filterButton.filter = filter;
filterButton.click(() => {
activateFilterButton(filterButton);
{{ if $storeSelectedFilterInUrl }}
// save applied filter in browser url
const params = new URLSearchParams(location.hash.replace(/^\#/,""));
params.set('gallery-filter', filterConfig.label);
window.history.replaceState("", "", location.pathname + location.search + "#" + params.toString());
{{ end }}
});
filterBar.append(filterButton);
if(filterConfig.label.toLowerCase() === activeFilter.toLowerCase()) {
activateFilterButton(filterButton);
}
});
{{ end }}
});
// End of our variable-isolating and self-executing anonymous function.
// We call it with the one version of jQuery that was used to load our plugins.
// See: http://blog.nemikor.com/2009/10/03/using-multiple-versions-of-jquery/
})(window.HSCGjQuery)
</script>

View File

@ -1,161 +1,4 @@
<!DOCTYPE html>
<html lang="en">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="author" content="">
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<meta name="theme-color" content="" />
<link rel="canonical" href="http://localhost:1313/404.html" />
<title>
404 Page not found :: Conner Chu
</title>
<link rel="stylesheet" href="/main.min.b35466370c2f708ecabeb5eacc8b59840bcf4578d326a600a15107f3e9f1dc4e.css" integrity="sha256-s1RmNwwvcI7KvrXqzItZhAvPRXjTJqYAoVEH8&#43;nx3E4=" crossorigin="anonymous">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="">
<link rel="shortcut icon" href="/favicon.ico">
<meta name="msapplication-TileColor" content="">
<meta itemprop="name" content="404 Page not found">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="404 Page not found">
</head>
<body>
<div class="container">
<header class="header">
<span class="header__inner">
<a href="/" style="text-decoration: none;">
<div class="logo">
<span class="logo__mark"> </span>
<span class="logo__text ">
Home</span>
<span class="logo__cursor" style=
"visibility:hidden;
">
</span>
</div>
</a>
<span class="header__right">
<nav class="menu">
<ul class="menu__inner"><li><a href="/photography/">Photography</a></li><li><a href="/research/">Research</a></li><li><a href="/resume/">Resume</a></li><li><a href="/tidbits/">Tidbits</a></li>
</ul>
</nav>
<span class="menu-trigger">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M0 0h24v24H0z" fill="none"/>
<path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/>
</svg>
</span>
</span>
</span>
</header>
<div class="content">
<div id="spotlight" class="error-404 animated fadeIn">
<p class="img-404">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-cloud-drizzle"><line x1="8" y1="19" x2="8" y2="21"></line><line x1="8" y1="13" x2="8" y2="15"></line><line x1="16" y1="19" x2="16" y2="21"></line><line x1="16" y1="13" x2="16" y2="15"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="12" y1="15" x2="12" y2="17"></line><path d="M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25"></path></svg>
</p>
<div class="banner-404">
<h1>404</h1>
<p>Oops, page not found…</p>
<p class="btn-404">
<a href="http://localhost:1313/">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-home"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>Home</a>
<a href="http://localhost:1313/posts">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-archive"><polyline points="21 8 21 21 3 21 3 8"></polyline><rect x="1" y="3" width="22" height="5"></rect><line x1="10" y1="12" x2="14" y2="12"></line></svg>Archives</a>
</p>
</div>
</div>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="footer__content">
<span>&copy Copyright 2025</span>
</div>
</div>
<div class="footer__inner">
<div class="footer__content">
<span>Powered by Hugo, Djordje, and Matze</span>
</div>
</div>
</footer>
</div>
<script type="text/javascript" src="/bundle.min.e89fda0f29b95d33f6f4224dd9e5cf69d84aff3818be2b0d73e731689cc374261b016d17d46f8381962fb4a1577ba3017b1f23509d894f6e66431f988c00889e.js" integrity="sha512-6J/aDym5XTP29CJN2eXPadhK/zgYvisNc&#43;cxaJzDdCYbAW0X1G&#43;DgZYvtKFXe6MBex8jUJ2JT25mQx&#43;YjACIng=="></script>
</body>
</html>
<!doctype html><html lang=en><head><meta charset=UTF-8><meta http-equiv=X-UA-Compatible content="ie=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=author content><meta name=description content><meta name=keywords content><meta name=robots content="noodp"><meta name=theme-color content><link rel=canonical href=https://connerchu.com/404.html><title>404 Page not found :: Conner Chu
</title><link rel=stylesheet href=/main.min.b35466370c2f708ecabeb5eacc8b59840bcf4578d326a600a15107f3e9f1dc4e.css integrity="sha256-s1RmNwwvcI7KvrXqzItZhAvPRXjTJqYAoVEH8+nx3E4=" crossorigin=anonymous><link rel=apple-touch-icon sizes=180x180 href=/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/favicon-16x16.png><link rel=manifest href=/site.webmanifest><link rel=mask-icon href=/safari-pinned-tab.svg color><link rel="shortcut icon" href=/favicon.ico><meta name=msapplication-TileColor content><meta itemprop=name content="404 Page not found"><meta name=twitter:card content="summary"><meta name=twitter:title content="404 Page not found"></head><body><div class=container><header class=header><span class=header__inner><a href=/ style=text-decoration:none><div class=logo><span class=logo__mark></span><span class=logo__text>Home</span>
<span class=logo__cursor style=visibility:hidden></span></div></a><span class=header__right><nav class=menu><ul class=menu__inner><li><a href=/photography/>Photography</a></li><li><a href=/research/>Research</a></li><li><a href=/resume/>Resume</a></li><li><a href=/tidbits/>Tidbits</a></li></ul></nav><span class=menu-trigger><svg viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg></span></span></span></header><div class=content><div id=spotlight class="error-404 animated fadeIn"><p class=img-404><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-cloud-drizzle"><line x1="8" y1="19" x2="8" y2="21"/><line x1="8" y1="13" x2="8" y2="15"/><line x1="16" y1="19" x2="16" y2="21"/><line x1="16" y1="13" x2="16" y2="15"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="12" y1="15" x2="12" y2="17"/><path d="M20 16.58A5 5 0 0018 7h-1.26A8 8 0 104 15.25"/></svg></p><div class=banner-404><h1>404</h1><p>Oops, page not found…</p><p class=btn-404><a href=https://connerchu.com/><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-home"><path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg>Home</a>
<a href=https://connerchu.com/posts><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-archive"><polyline points="21 8 21 21 3 21 3 8"/><rect x="1" y="3" width="22" height="5"/><line x1="10" y1="12" x2="14" y2="12"/></svg>Archives</a></p></div></div></div><footer class=footer><div class=footer__inner><div class=footer__content><span>&copy Copyright 2025</span></div></div><div class=footer__inner><div class=footer__content><span>Powered by Hugo, Djordje, and Matze</span></div></div></footer></div><script type=text/javascript src=/bundle.min.e89fda0f29b95d33f6f4224dd9e5cf69d84aff3818be2b0d73e731689cc374261b016d17d46f8381962fb4a1577ba3017b1f23509d894f6e66431f988c00889e.js integrity="sha512-6J/aDym5XTP29CJN2eXPadhK/zgYvisNc+cxaJzDdCYbAW0X1G+DgZYvtKFXe6MBex8jUJ2JT25mQx+YjACIng=="></script><script>window.si=window.si||function(){(window.siq=window.siq||[]).push(arguments)}</script><script defer src=/_vercel/speed-insights/script.js></script><script>window.va=window.va||function(){(window.vaq=window.vaq||[]).push(arguments)}</script><script defer src=/_vercel/insights/script.js></script></body></html>

View File

@ -1,163 +1,3 @@
<!DOCTYPE html>
<html lang="en">
<head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="author" content="">
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<meta name="theme-color" content="" />
<link rel="canonical" href="http://localhost:1313/categories/" />
<title>
Categories :: Conner Chu
</title>
<link rel="stylesheet" href="/main.min.b35466370c2f708ecabeb5eacc8b59840bcf4578d326a600a15107f3e9f1dc4e.css" integrity="sha256-s1RmNwwvcI7KvrXqzItZhAvPRXjTJqYAoVEH8&#43;nx3E4=" crossorigin="anonymous">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="">
<link rel="shortcut icon" href="/favicon.ico">
<meta name="msapplication-TileColor" content="">
<meta itemprop="name" content="Categories">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Categories">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/categories/index.xml" title="Conner Chu" />
</head>
<body>
<div class="container">
<header class="header">
<span class="header__inner">
<a href="/" style="text-decoration: none;">
<div class="logo">
<span class="logo__mark"> </span>
<span class="logo__text ">
Home</span>
<span class="logo__cursor" style=
"visibility:hidden;
">
</span>
</div>
</a>
<span class="header__right">
<nav class="menu">
<ul class="menu__inner"><li><a href="/photography/">Photography</a></li><li><a href="/research/">Research</a></li><li><a href="/resume/">Resume</a></li><li><a href="/tidbits/">Tidbits</a></li>
</ul>
</nav>
<span class="menu-trigger">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M0 0h24v24H0z" fill="none"/>
<path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/>
</svg>
</span>
</span>
</span>
</header>
<div class="content">
<main class="posts">
<h1>Categories</h1>
<div class="pagination">
<div class="pagination__buttons">
</div>
</div>
</main>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="footer__content">
<span>&copy Copyright 2025</span>
</div>
</div>
<div class="footer__inner">
<div class="footer__content">
<span>Powered by Hugo, Djordje, and Matze</span>
</div>
</div>
</footer>
</div>
<script type="text/javascript" src="/bundle.min.e89fda0f29b95d33f6f4224dd9e5cf69d84aff3818be2b0d73e731689cc374261b016d17d46f8381962fb4a1577ba3017b1f23509d894f6e66431f988c00889e.js" integrity="sha512-6J/aDym5XTP29CJN2eXPadhK/zgYvisNc&#43;cxaJzDdCYbAW0X1G&#43;DgZYvtKFXe6MBex8jUJ2JT25mQx&#43;YjACIng=="></script>
</body>
</html>
<!doctype html><html lang=en><head><meta charset=UTF-8><meta http-equiv=X-UA-Compatible content="ie=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=author content><meta name=description content><meta name=keywords content><meta name=robots content="noodp"><meta name=theme-color content><link rel=canonical href=https://connerchu.com/categories/><title>Categories :: Conner Chu
</title><link rel=stylesheet href=/main.min.b35466370c2f708ecabeb5eacc8b59840bcf4578d326a600a15107f3e9f1dc4e.css integrity="sha256-s1RmNwwvcI7KvrXqzItZhAvPRXjTJqYAoVEH8+nx3E4=" crossorigin=anonymous><link rel=apple-touch-icon sizes=180x180 href=/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/favicon-16x16.png><link rel=manifest href=/site.webmanifest><link rel=mask-icon href=/safari-pinned-tab.svg color><link rel="shortcut icon" href=/favicon.ico><meta name=msapplication-TileColor content><meta itemprop=name content="Categories"><meta name=twitter:card content="summary"><meta name=twitter:title content="Categories"><link rel=alternate type=application/rss+xml href=https://connerchu.com/categories/index.xml title="Conner Chu"></head><body><div class=container><header class=header><span class=header__inner><a href=/ style=text-decoration:none><div class=logo><span class=logo__mark></span><span class=logo__text>Home</span>
<span class=logo__cursor style=visibility:hidden></span></div></a><span class=header__right><nav class=menu><ul class=menu__inner><li><a href=/photography/>Photography</a></li><li><a href=/research/>Research</a></li><li><a href=/resume/>Resume</a></li><li><a href=/tidbits/>Tidbits</a></li></ul></nav><span class=menu-trigger><svg viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg></span></span></span></header><div class=content><main class=posts><h1>Categories</h1><div class=pagination><div class=pagination__buttons></div></div></main></div><footer class=footer><div class=footer__inner><div class=footer__content><span>&copy Copyright 2025</span></div></div><div class=footer__inner><div class=footer__content><span>Powered by Hugo, Djordje, and Matze</span></div></div></footer></div><script type=text/javascript src=/bundle.min.e89fda0f29b95d33f6f4224dd9e5cf69d84aff3818be2b0d73e731689cc374261b016d17d46f8381962fb4a1577ba3017b1f23509d894f6e66431f988c00889e.js integrity="sha512-6J/aDym5XTP29CJN2eXPadhK/zgYvisNc+cxaJzDdCYbAW0X1G+DgZYvtKFXe6MBex8jUJ2JT25mQx+YjACIng=="></script><script>window.si=window.si||function(){(window.siq=window.siq||[]).push(arguments)}</script><script defer src=/_vercel/speed-insights/script.js></script><script>window.va=window.va||function(){(window.vaq=window.vaq||[]).push(arguments)}</script><script defer src=/_vercel/insights/script.js></script></body></html>

View File

@ -1,12 +1 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Categories on Conner Chu</title>
<link>http://localhost:1313/categories/</link>
<description>Recent content in Categories on Conner Chu</description>
<generator>Hugo</generator>
<language>en-us</language>
<copyright>&amp;copy Copyright 2025</copyright>
<atom:link href="http://localhost:1313/categories/index.xml" rel="self" type="application/rss+xml" />
</channel>
</rss>
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Categories on Conner Chu</title><link>https://connerchu.com/categories/</link><description>Recent content in Categories on Conner Chu</description><generator>Hugo</generator><language>en-us</language><copyright>&amp;copy Copyright 2025</copyright><atom:link href="https://connerchu.com/categories/index.xml" rel="self" type="application/rss+xml"/></channel></rss>

View File

@ -1,10 +1,2 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>http://localhost:1313/categories/</title>
<link rel="canonical" href="http://localhost:1313/categories/">
<meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=http://localhost:1313/categories/">
</head>
</html>
<!doctype html><html lang=en-us><head><title>https://connerchu.com/categories/</title>
<link rel=canonical href=https://connerchu.com/categories/><meta name=robots content="noindex"><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://connerchu.com/categories/"></head></html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 908 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 613 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 828 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 603 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 861 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 603 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 908 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 828 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 861 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

View File

@ -1,165 +1,3 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="generator" content="Hugo 0.129.0"><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="author" content="">
<meta name="description" content="Physics and Applied Mathematics at Berkeley" />
<meta name="keywords" content="" />
<meta name="robots" content="noodp" />
<meta name="theme-color" content="" />
<link rel="canonical" href="http://localhost:1313/" />
<title>
Conner Chu
</title>
<link rel="stylesheet" href="/main.min.b35466370c2f708ecabeb5eacc8b59840bcf4578d326a600a15107f3e9f1dc4e.css" integrity="sha256-s1RmNwwvcI7KvrXqzItZhAvPRXjTJqYAoVEH8&#43;nx3E4=" crossorigin="anonymous">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="">
<link rel="shortcut icon" href="/favicon.ico">
<meta name="msapplication-TileColor" content="">
<meta itemprop="name" content="Conner Chu">
<meta itemprop="datePublished" content="2024-09-14T23:30:59-07:00">
<meta itemprop="dateModified" content="2024-09-14T23:30:59-07:00">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Conner Chu">
<link rel="alternate" type="application/rss+xml" href="http://localhost:1313/index.xml" title="Conner Chu" />
</head>
<body class="">
<div class="container">
<header class="header">
<span class="header__inner">
<a href="/" style="text-decoration: none;">
<div class="logo">
<span class="logo__mark"> </span>
<span class="logo__text ">
Home</span>
<span class="logo__cursor" style=
"visibility:hidden;
">
</span>
</div>
</a>
<span class="header__right">
<nav class="menu">
<ul class="menu__inner"><li><a href="/photography/">Photography</a></li><li><a href="/research/">Research</a></li><li><a href="/resume/">Resume</a></li><li><a href="/tidbits/">Tidbits</a></li>
</ul>
</nav>
<span class="menu-trigger">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M0 0h24v24H0z" fill="none"/>
<path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/>
</svg>
</span>
</span>
</span>
</header>
<div class="content">
<main>
<div>
<img src="/img/headshot.webp" class="circle" alt="Portrait" style="max-width:" />
<h1>Conner Chu</h1>
<p>Physics and Applied Mathematics at Berkeley</p>
<div>
&nbsp; <a href="https://github.com/cchuster" rel="me noopener " title="Github"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"></path></svg></a> &nbsp;&nbsp; <a href="mailto:connerchu@berkeley.edu" rel="me noopener " title="Email"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg></a> &nbsp;&nbsp; <a href="https://www.linkedin.com/in/connerchu/" rel="me noopener " title="Linkedin"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg></a> &nbsp;
</div>
</div>
</main>
</div>
<footer class="footer">
<div class="footer__inner">
<div class="footer__content">
<span>&copy Copyright 2025</span>
</div>
</div>
<div class="footer__inner">
<div class="footer__content">
<span>Powered by Hugo, Djordje, and Matze</span>
</div>
</div>
</footer>
</div>
<script type="text/javascript" src="/bundle.min.e89fda0f29b95d33f6f4224dd9e5cf69d84aff3818be2b0d73e731689cc374261b016d17d46f8381962fb4a1577ba3017b1f23509d894f6e66431f988c00889e.js" integrity="sha512-6J/aDym5XTP29CJN2eXPadhK/zgYvisNc&#43;cxaJzDdCYbAW0X1G&#43;DgZYvtKFXe6MBex8jUJ2JT25mQx&#43;YjACIng=="></script>
</body>
</html>
<!doctype html><html lang=en><head><meta name=generator content="Hugo 0.129.0"><meta charset=UTF-8><meta http-equiv=X-UA-Compatible content="ie=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=author content><meta name=description content="Physics and Applied Mathematics at Berkeley"><meta name=keywords content><meta name=robots content="noodp"><meta name=theme-color content><link rel=canonical href=https://connerchu.com/><title>Conner Chu
</title><link rel=stylesheet href=/main.min.b35466370c2f708ecabeb5eacc8b59840bcf4578d326a600a15107f3e9f1dc4e.css integrity="sha256-s1RmNwwvcI7KvrXqzItZhAvPRXjTJqYAoVEH8+nx3E4=" crossorigin=anonymous><link rel=apple-touch-icon sizes=180x180 href=/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/favicon-16x16.png><link rel=manifest href=/site.webmanifest><link rel=mask-icon href=/safari-pinned-tab.svg color><link rel="shortcut icon" href=/favicon.ico><meta name=msapplication-TileColor content><meta itemprop=name content="Conner Chu"><meta itemprop=datePublished content="2024-09-14T23:30:59-07:00"><meta itemprop=dateModified content="2024-09-14T23:30:59-07:00"><meta name=twitter:card content="summary"><meta name=twitter:title content="Conner Chu"><link rel=alternate type=application/rss+xml href=https://connerchu.com/index.xml title="Conner Chu"></head><body><div class=container><header class=header><span class=header__inner><a href=/ style=text-decoration:none><div class=logo><span class=logo__mark></span><span class=logo__text>Home</span>
<span class=logo__cursor style=visibility:hidden></span></div></a><span class=header__right><nav class=menu><ul class=menu__inner><li><a href=/photography/>Photography</a></li><li><a href=/research/>Research</a></li><li><a href=/resume/>Resume</a></li><li><a href=/tidbits/>Tidbits</a></li></ul></nav><span class=menu-trigger><svg viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg></span></span></span></header><div class=content><main><div><img src=/img/headshot.webp class=circle alt=Portrait style=max-width:><h1>Conner Chu</h1><p>Physics and Applied Mathematics at Berkeley</p><div>&nbsp; <a href=https://github.com/cchuster rel="me noopener" title=Github><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37.0 00-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44.0 0020 4.77 5.07 5.07.0 0019.91 1S18.73.65 16 2.48a13.38 13.38.0 00-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07.0 005 4.77 5.44 5.44.0 003.5 8.55c0 5.42 3.3 6.61 6.44 7A3.37 3.37.0 009 18.13V22"/></svg></a> &nbsp;&nbsp; <a href=mailto:connerchu@berkeley.edu rel="me noopener" title=Email><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16c1.1.0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1.0-2-.9-2-2V6c0-1.1.9-2 2-2z"/><polyline points="22,6 12,13 2,6"/></svg></a> &nbsp;&nbsp; <a href=https://www.linkedin.com/in/connerchu/ rel="me noopener" title=Linkedin><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6z"/><rect x="2" y="9" width="4" height="12"/><circle cx="4" cy="4" r="2"/></svg></a> &nbsp;</div></div></main></div><footer class=footer><div class=footer__inner><div class=footer__content><span>&copy Copyright 2025</span></div></div><div class=footer__inner><div class=footer__content><span>Powered by Hugo, Djordje, and Matze</span></div></div></footer></div><script type=text/javascript src=/bundle.min.e89fda0f29b95d33f6f4224dd9e5cf69d84aff3818be2b0d73e731689cc374261b016d17d46f8381962fb4a1577ba3017b1f23509d894f6e66431f988c00889e.js integrity="sha512-6J/aDym5XTP29CJN2eXPadhK/zgYvisNc+cxaJzDdCYbAW0X1G+DgZYvtKFXe6MBex8jUJ2JT25mQx+YjACIng=="></script><script>window.si=window.si||function(){(window.siq=window.siq||[]).push(arguments)}</script><script defer src=/_vercel/speed-insights/script.js></script><script>window.va=window.va||function(){(window.vaq=window.vaq||[]).push(arguments)}</script><script defer src=/_vercel/insights/script.js></script></body></html>

View File

@ -1,76 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Conner Chu</title>
<link>http://localhost:1313/</link>
<description>Recent content on Conner Chu</description>
<generator>Hugo</generator>
<language>en-us</language>
<copyright>&amp;copy Copyright 2025</copyright>
<lastBuildDate>Sat, 14 Sep 2024 23:30:59 -0700</lastBuildDate>
<atom:link href="http://localhost:1313/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>California Great America</title>
<link>http://localhost:1313/tidbits/cga/</link>
<pubDate>Sat, 14 Sep 2024 23:30:59 -0700</pubDate>
<guid>http://localhost:1313/tidbits/cga/</guid>
<description>Had the chance to make a quick day trip to San Jose and visit CGA! Definitely a chill park overall, nothing too crazy, though all the rides were fairly bumpy for some reason lol.&#xA;RailBlazer - RMC&amp;rsquo;s prototype single rail&amp;hellip;a little rough around the edges! Flight Deck - My first greyout?? Drop Tower - Felt taller than I expected! Patriot - Somewhat smooth yay Gold Striker - Bumpy and noisy like any wooden coaster :/ The Grizzly - Super old station The Demon - Apparently historical Pyscho Mouse - Psycho line Mass Effect: New Earth - Interesting smells&amp;hellip; </description>
</item>
<item>
<title>Photography</title>
<link>http://localhost:1313/photography/</link>
<pubDate>Mon, 29 Jul 2024 14:47:44 -0700</pubDate>
<guid>http://localhost:1313/photography/</guid>
<description> </description>
</item>
<item>
<title>Singular Value Decomposition</title>
<link>http://localhost:1313/tidbits/svd/</link>
<pubDate>Mon, 29 Jul 2024 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/tidbits/svd/</guid>
<description>Singular Value Decomposition (SVD) is probably one of the coolest concepts in mathematics I have learned so far. Seen by many as the grand finale of an introductory linear algebra course, SVD combines many pervasive topics seen throughout physics and applied math, including eigenvalues/eigenvectors and unitary matrices. Although SVD was not covered in my introductory mathematical physics course, I tried my best to develop a basic understanding of this factorization tool so that I could comfortably use it when decomposing transient absorption data in my work at the Leone Group.</description>
</item>
<item>
<title>Cross-Polarized Attosecond Transient Absorption Spectroscopy of Elemental Tellurium</title>
<link>http://localhost:1313/research/atas/</link>
<pubDate>Fri, 26 Jul 2024 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/research/atas/</guid>
<description>This summer, I had the pleasure of working under Jonah Adelman in Prof. Stephen Leone&amp;rsquo;s group at UC Berkeley. Our group specializes in attosecond transient absorption pump-probe spectroscopy via high-harmonic generation, and my lab specifically focuses on applying this technique towards solid-state materials. Over the course of two months, my main objective was familiarizing myself with the first principles governing this spectroscopic method, and to conduct an experiment of my own, namely cross-polarizing the VIS-NIR pump beam and XUV probe beam in our setup to quantify the potential differences in absorption in elemental Tellurium.</description>
</item>
<item>
<title>Resume</title>
<link>http://localhost:1313/resume/</link>
<pubDate>Fri, 26 Jul 2024 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/resume/</guid>
<description>It appears you don&#39;t have a PDF plugin for this browser. No biggie... you can click here to download the PDF file.</description>
</item>
<item>
<title>Six Flags Fiesta Texas</title>
<link>http://localhost:1313/tidbits/sfft/</link>
<pubDate>Tue, 16 Jul 2024 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/tidbits/sfft/</guid>
<description>Was in Austin and decided to make the hour drive to San Antonio to visit one of Six Flags&amp;rsquo; flagship parks on a day with only ~9% of full capacity!&#xA;Iron Rattler - Two massive drops over a quarry wall make it my new favorite RMC. Wonder Woman - As with SFFM, back seat only, trust! Dr. Diabolical&amp;rsquo;s Cliffhanger - 95 degree drop!?! Joker: Carnival of Chaos - Not as crazy as CraZanity :( Superman: Krypton Coaster - Nice scenery Scream!</description>
</item>
<item>
<title>Six Flags Magic Mountain</title>
<link>http://localhost:1313/tidbits/sfmm/</link>
<pubDate>Fri, 15 Dec 2023 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/tidbits/sfmm/</guid>
<description>After going to Six Flags Magic Mountain for the second time today, I wanted to make a quick ranking of all the rides I have ridden there (coasters and flats)!&#xA;Twisted Colossus - RMC, enough said! X2 - Pure chaos. Wonder Woman - Back seat only, trust me! Tatsu - A secret line and a pretzel&amp;hellip; Drop of Doom - Are we still falling??? CraZanity - I think I&amp;rsquo;m upside down Viper - 5.</description>
</item>
<item>
<title>Earbuds and Airplane Toilets</title>
<link>http://localhost:1313/tidbits/airplane/</link>
<pubDate>Wed, 03 Aug 2022 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/tidbits/airplane/</guid>
<description>I do not ride on planes often, but when I do I always think of the same two questions.&#xA;Why do I always have to turn the volume of my earbuds higher when I am on an airplane? Is it because of the lower pressure of the cabin compared to the near sea-level altitude that I am used to? Or is it simply because the loud engines drown out the noise of my music?</description>
</item>
<item>
<title>Examining the Growth of Methanotrophic Bacteria Immersed in Extremely Low-Frequency Electromagnetic Fields</title>
<link>http://localhost:1313/research/jei/</link>
<pubDate>Wed, 03 Aug 2022 00:00:00 +0000</pubDate>
<guid>http://localhost:1313/research/jei/</guid>
<description>It was around sophomore year of high school when I first learned about the odd fact that cow farts play a considerable role in the release of methane, a potent greenhouse gas, into our atmosphere. This surprising fact led me down a rabbit hole to understand the causes and effects of climate change. Around the same time, I learned and grew skeptical of a relatively new technology, electromagnetic field therapy, which claimed to boost cell proliferation and nutrient circulation in living systems.</description>
</item>
</channel>
</rss>
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Conner Chu</title><link>https://connerchu.com/</link><description>Recent content on Conner Chu</description><generator>Hugo</generator><language>en-us</language><copyright>&amp;copy Copyright 2025</copyright><lastBuildDate>Sat, 14 Sep 2024 23:30:59 -0700</lastBuildDate><atom:link href="https://connerchu.com/index.xml" rel="self" type="application/rss+xml"/><item><title>California Great America</title><link>https://connerchu.com/tidbits/cga/</link><pubDate>Sat, 14 Sep 2024 23:30:59 -0700</pubDate><guid>https://connerchu.com/tidbits/cga/</guid><description>Had the chance to make a quick day trip to San Jose and visit CGA! Definitely a chill park overall, nothing too crazy, though all the rides were fairly bumpy for some reason lol.
RailBlazer - RMC&amp;rsquo;s prototype single rail&amp;hellip;a little rough around the edges! Flight Deck - My first greyout?? Drop Tower - Felt taller than I expected! Patriot - Somewhat smooth yay Gold Striker - Bumpy and noisy like any wooden coaster :/ The Grizzly - Super old station The Demon - Apparently historical Pyscho Mouse - Psycho line Mass Effect: New Earth - Interesting smells&amp;hellip;</description></item><item><title>Photography</title><link>https://connerchu.com/photography/</link><pubDate>Mon, 29 Jul 2024 14:47:44 -0700</pubDate><guid>https://connerchu.com/photography/</guid><description/></item><item><title>Singular Value Decomposition</title><link>https://connerchu.com/tidbits/svd/</link><pubDate>Mon, 29 Jul 2024 00:00:00 +0000</pubDate><guid>https://connerchu.com/tidbits/svd/</guid><description>Singular Value Decomposition (SVD) is probably one of the coolest concepts in mathematics I have learned so far. Seen by many as the grand finale of an introductory linear algebra course, SVD combines many pervasive topics seen throughout physics and applied math, including eigenvalues/eigenvectors and unitary matrices. Although SVD was not covered in my introductory mathematical physics course, I tried my best to develop a basic understanding of this factorization tool so that I could comfortably use it when decomposing transient absorption data in my work at the Leone Group.</description></item><item><title>Cross-Polarized Attosecond Transient Absorption Spectroscopy of Elemental Tellurium</title><link>https://connerchu.com/research/atas/</link><pubDate>Fri, 26 Jul 2024 00:00:00 +0000</pubDate><guid>https://connerchu.com/research/atas/</guid><description>This summer, I had the pleasure of working under Jonah Adelman in Prof. Stephen Leone&amp;rsquo;s group at UC Berkeley. Our group specializes in attosecond transient absorption pump-probe spectroscopy via high-harmonic generation, and my lab specifically focuses on applying this technique towards solid-state materials. Over the course of two months, my main objective was familiarizing myself with the first principles governing this spectroscopic method, and to conduct an experiment of my own, namely cross-polarizing the VIS-NIR pump beam and XUV probe beam in our setup to quantify the potential differences in absorption in elemental Tellurium.</description></item><item><title>Resume</title><link>https://connerchu.com/resume/</link><pubDate>Fri, 26 Jul 2024 00:00:00 +0000</pubDate><guid>https://connerchu.com/resume/</guid><description>It appears you don't have a PDF plugin for this browser. No biggie... you can click here to download the PDF file.</description></item><item><title>Six Flags Fiesta Texas</title><link>https://connerchu.com/tidbits/sfft/</link><pubDate>Tue, 16 Jul 2024 00:00:00 +0000</pubDate><guid>https://connerchu.com/tidbits/sfft/</guid><description>Was in Austin and decided to make the hour drive to San Antonio to visit one of Six Flags&amp;rsquo; flagship parks on a day with only ~9% of full capacity!
Iron Rattler - Two massive drops over a quarry wall make it my new favorite RMC. Wonder Woman - As with SFFM, back seat only, trust! Dr. Diabolical&amp;rsquo;s Cliffhanger - 95 degree drop!?! Joker: Carnival of Chaos - Not as crazy as CraZanity :( Superman: Krypton Coaster - Nice scenery Scream!</description></item><item><title>Six Flags Magic Mountain</title><link>https://connerchu.com/tidbits/sfmm/</link><pubDate>Fri, 15 Dec 2023 00:00:00 +0000</pubDate><guid>https://connerchu.com/tidbits/sfmm/</guid><description>After going to Six Flags Magic Mountain for the second time today, I wanted to make a quick ranking of all the rides I have ridden there (coasters and flats)!
Twisted Colossus - RMC, enough said! X2 - Pure chaos. Wonder Woman - Back seat only, trust me! Tatsu - A secret line and a pretzel&amp;hellip; Drop of Doom - Are we still falling??? CraZanity - I think I&amp;rsquo;m upside down Viper - 5.</description></item><item><title>Earbuds and Airplane Toilets</title><link>https://connerchu.com/tidbits/airplane/</link><pubDate>Wed, 03 Aug 2022 00:00:00 +0000</pubDate><guid>https://connerchu.com/tidbits/airplane/</guid><description>I do not ride on planes often, but when I do I always think of the same two questions.
Why do I always have to turn the volume of my earbuds higher when I am on an airplane? Is it because of the lower pressure of the cabin compared to the near sea-level altitude that I am used to? Or is it simply because the loud engines drown out the noise of my music?</description></item><item><title>Examining the Growth of Methanotrophic Bacteria Immersed in Extremely Low-Frequency Electromagnetic Fields</title><link>https://connerchu.com/research/jei/</link><pubDate>Wed, 03 Aug 2022 00:00:00 +0000</pubDate><guid>https://connerchu.com/research/jei/</guid><description>It was around sophomore year of high school when I first learned about the odd fact that cow farts play a considerable role in the release of methane, a potent greenhouse gas, into our atmosphere. This surprising fact led me down a rabbit hole to understand the causes and effects of climate change. Around the same time, I learned and grew skeptical of a relatively new technology, electromagnetic field therapy, which claimed to boost cell proliferation and nutrient circulation in living systems.</description></item></channel></rss>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More