<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Georg Lange</title><link>https://georglange.com/</link><atom:link href="https://georglange.com/index.xml" rel="self" type="application/rss+xml"/><description>Georg Lange</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Mon, 24 Oct 2022 00:00:00 +0000</lastBuildDate><image><url>https://georglange.com/media/icon_hu12340157806326524241.png</url><title>Georg Lange</title><link>https://georglange.com/</link></image><item><title>Example Talk</title><link>https://georglange.com/event/example/</link><pubDate>Sat, 01 Jun 2030 13:00:00 +0000</pubDate><guid>https://georglange.com/event/example/</guid><description>&lt;div class="flex px-4 py-3 mb-6 rounded-md bg-primary-100 dark:bg-primary-900">
&lt;span class="pr-3 pt-1 text-primary-600 dark:text-primary-300">
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m11.25 11.25l.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0a9 9 0 0 1 18 0m-9-3.75h.008v.008H12z"/>&lt;/svg>
&lt;/span>
&lt;span class="dark:text-neutral-300">Click on the &lt;strong>Slides&lt;/strong> button above to view the built-in slides feature.&lt;/span>
&lt;/div>
&lt;p>Slides can be added in a few ways:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Create&lt;/strong> slides using Hugo Blox Builder&amp;rsquo;s &lt;a href="https://docs.hugoblox.com/reference/content-types/" target="_blank" rel="noopener">&lt;em>Slides&lt;/em>&lt;/a> feature and link using &lt;code>slides&lt;/code> parameter in the front matter of the talk file&lt;/li>
&lt;li>&lt;strong>Upload&lt;/strong> an existing slide deck to &lt;code>static/&lt;/code> and link using &lt;code>url_slides&lt;/code> parameter in the front matter of the talk file&lt;/li>
&lt;li>&lt;strong>Embed&lt;/strong> your slides (e.g. Google Slides) or presentation video on this page using &lt;a href="https://docs.hugoblox.com/reference/markdown/" target="_blank" rel="noopener">shortcodes&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>Further event details, including &lt;a href="https://docs.hugoblox.com/reference/markdown/" target="_blank" rel="noopener">page elements&lt;/a> such as image galleries, can be added to the body of this page.&lt;/p></description></item><item><title>I Reviewed Hundreds of AI Safety Applications. Here's What Actually Matters</title><link>https://georglange.com/post/ai-safety-application-guide/</link><pubDate>Sun, 26 Oct 2025 00:00:00 +0000</pubDate><guid>https://georglange.com/post/ai-safety-application-guide/</guid><description>&lt;h2 id="tldr">TLDR&lt;/h2>
&lt;ul>
&lt;li>2-6 month AI safety programs (MATS, Anthropic Fellows, Goodfire Fellows, Astra, etc.) are one of the best ways to break into AI safety&lt;/li>
&lt;li>Admissions are highly competitive: single-digit acceptance rates for MATS, 1.5% for Anthropic Fellows, ~15% for my SPAR projects&lt;/li>
&lt;li>Having reviewed applications for multiple MATS cohorts and SPAR projects, I&amp;rsquo;m sharing insights that can improve your chances of acceptance&lt;/li>
&lt;/ul>
&lt;p>I originally wrote this for my SPAR scholars, but it applies to anyone applying to competitive AI safety programs. This guide has two goals: help you develop the skills that actually matter, and ensure reviewers can see it.&lt;/p>
&lt;h2 id="understanding-the-applicant-pool">Understanding the Applicant Pool&lt;/h2>
&lt;p>Applications follow a normal distribution: very few are truly bad or exceptional. The median applicant is near the end of their Masters degree or doing PhD, has completed a few projects and internships, and has shown some AI safety interest. At 5% acceptance rates, you need to clearly stand out from this baseline. How?&lt;/p>
&lt;h2 id="technical-skills">Technical Skills&lt;/h2>
&lt;p>Technical ability is crucial but harder to assess than quantifiable metrics like papers or years of experience.&lt;/p>
&lt;p>&lt;strong>Coding Assessments through a recruiter&amp;rsquo;s lens&lt;/strong>&lt;/p>
&lt;p>Most programs now use automated coding screens. While they may seem artificial, they have one critical advantage: they produce a simple, standardized number that&amp;rsquo;s directly comparable across all applicants. Everything else on your application is extremely hard to compare. Evaluating a CV requires judgment calls. Assessing GitHub contributions can take 15+ minutes per applicant to determine whether repos are substantial independent work or just toy projects and minor contributions. In contrast, a coding assessment gives recruiters an instant, objective comparison point. This makes these scores far more influential in decisions than applicants often realize. To excel:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Don&amp;rsquo;t cheat&lt;/strong>: CodeSignal&amp;rsquo;s detection is surprisingly sensitive and flags a substantial number of applicants, so avoid copy/pasting code from outside the IDE.&lt;/li>
&lt;li>&lt;strong>Practice Leetcode&lt;/strong>: Focus not on algorithms and data structures, but on coding everyday Python quickly. Can you iterate a dictionary? Sort over dataclasses with multiple keys? Make solutions extendable? Since most developers rely heavily on coding assistants now, these basics need deliberate practice.&lt;/li>
&lt;li>&lt;strong>Practice deliberately&lt;/strong>: Turn off coding assistance occasionally to avoid unlearning fundamentals. Review your own code and identify improvements. Record yourself coding and talking through problems for an hour, then review it the next day. Watch Python tutorials and apply new concepts immediately.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Project Experience&lt;/strong>&lt;/p>
&lt;p>Substantial technical projects are the most convincing evidence - but surprisingly hard to evaluate from CVs alone. Most applicants describe what they did without demonstrating quality or impact. A 3-month internship description on the CV sounds identical whether you excelled or didn&amp;rsquo;t do shit. In group projects, the hard worker and the free rider write the same CV line.&lt;/p>
&lt;p>Recruiters need evidence of technical ability:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>GitHub repos&lt;/strong>: Make it clear whether your repo is independent work, a fork/tutorial, or part of a larger codebase. Avoid posting course exercises. For your own code: write a clear README explaining what it is and what you did, clean up the files, and get a few stars. For contributions to larger codebases, highlight your specific contributions.&lt;/li>
&lt;li>&lt;strong>Papers or products&lt;/strong>: Link to concrete outputs from your projects.&lt;/li>
&lt;li>&lt;strong>Selective program acceptances&lt;/strong>: Acceptance into highly selective technical programs (e.g., quant internships at top firms) serves as strong external validation.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Bottom line&lt;/strong>: Provide enough evidence: links, demos, outputs; so reviewers can actually assess your work. A primary rejection reason is uncertainty about whether your projects are substantive or just descriptions.&lt;/p>
&lt;h2 id="research-experience">Research Experience&lt;/h2>
&lt;p>The median applicant is a Masters or PhD student listing several research projects from coursework, theses, or research assistant positions. The problem? These descriptions look identical regardless of whether the applicant contributed meaningfully or was a passive participant in a group project.&lt;/p>
&lt;p>Recruiters cannot reliably assess research ability from project descriptions alone. Instead, they look for concrete, verifiable deliverables: particularly publications that have undergone external review. A first-author paper at a known conference provides far stronger evidence of research ability than any CV description.&lt;/p>
&lt;p>In practice, I often put applicants into these categories:&lt;/p>
&lt;ol>
&lt;li>No experience, or only small projects (few months) without public output or middle-author on any paper&lt;/li>
&lt;li>First-author on a NeurIPS/ICML/ICLR workshop paper, another ML conference, or a high-quality technical LessWrong post&lt;/li>
&lt;li>First-author on a NeurIPS/ICML/ICLR full paper&lt;/li>
&lt;/ol>
&lt;p>Some advice:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>For upskilling programs&lt;/strong> (ARENA, SPAR, etc): If your goal is acceptance into programs like MATS, Anthropic Fellows, Goodfire Fellows, or similar, focus on producing at least a LessWrong post that you can submit to a conference workshop.&lt;/li>
&lt;li>&lt;strong>Visibility matters&lt;/strong>: If you are first author on any ML paper, make it immediately obvious on your CV and application.&lt;/li>
&lt;li>&lt;strong>Be precise&lt;/strong>: Don&amp;rsquo;t write &amp;ldquo;ICLR&amp;rdquo; if it was only an ICLR workshop paper or merely submitted but not accepted. Recruiters notice self-aggrandizement. This is also true for the other direction: If your work has been accepted to a prestigious journal, let them know.&lt;/li>
&lt;li>&lt;strong>Work in progress counts&lt;/strong>: If you&amp;rsquo;re drafting your first research write-up, this is research experience - but you must show evidence. List it under publications on your CV, clearly label it as &amp;ldquo;In Preparation,&amp;rdquo; and link to a Google Drive PDF of the current draft (with your name on it). There&amp;rsquo;s a huge difference between &amp;ldquo;worked on research project for 4 months&amp;rdquo; and &amp;ldquo;did research, currently drafting for publication, here&amp;rsquo;s the draft link.&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>Polish your Google Scholar&lt;/strong>: If you have a profile, clean it up. Neel Nanda has a helpful guide: &lt;a href="https://x.com/NeelNanda5/status/1864799600869326873" target="_blank" rel="noopener">https://x.com/NeelNanda5/status/1864799600869326873&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="ai-safety-interest-and-motivation">AI Safety Interest and Motivation&lt;/h2>
&lt;p>Reviewers evaluate two things: (1) what you&amp;rsquo;ve done that demonstrates AI safety interest, and (2) how you articulate your motivation in the application itself.&lt;/p>
&lt;p>These programs invest significant time and money in you on the premise that you&amp;rsquo;ll pursue AI safety work. Being junior with limited prior engagement isn&amp;rsquo;t necessarily disqualifying, but lack of genuine motivation is. Demonstrating previous engagement helps, but how you frame your interest matters just as much.&lt;/p>
&lt;p>On the contrary, some programs think in &lt;strong>counterfactuals&lt;/strong>. They rather spend money on a promising junior person who might otherwise not be able to do research in the field than an accomplished researcher who would do the same anyways.&lt;/p>
&lt;p>&lt;strong>Common mistakes:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Dismissing the question&lt;/strong>: Writing &amp;ldquo;I haven&amp;rsquo;t done AI safety stuff yet&amp;rdquo; without explaining your motivation or interest (yes, there are surprisingly many applications like that).&lt;/li>
&lt;li>&lt;strong>Low-effort applications&lt;/strong>: Research success requires strong intrinsic motivation and sustained effort. If your application has incomplete answers, obvious copy/paste errors, or poor formatting, reviewers assume you&amp;rsquo;ll show the same lack of effort during the program.&lt;/li>
&lt;li>&lt;strong>Generic reasoning&lt;/strong>: If your answer could describe any applicant, it&amp;rsquo;s too generic. Reviewers want specifics. What got you interested? Why? Weak signals: &amp;ldquo;I took a university course&amp;rdquo; or &amp;ldquo;someone shared a program link and it seemed interesting.&amp;rdquo; Strong signals: specific, personal motivations like &amp;ldquo;I watched a friend develop mental health issues from replacing social connections with ChatGPT and want to work on AI alignment&amp;rdquo; or &amp;ldquo;I studied neuroscience and want to apply those methods to AI models because it&amp;rsquo;s a promising research direction.&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>AI-generated reasoning&lt;/strong> Your goals are to (a) convince reviewers you&amp;rsquo;ll sustain effort throughout the program and (b) make your application interesting or insightful to read. AI-generated answers signal low-effort. Reading AI-generated slop is not insightful. The reviewer should have fun. Reviewers are (still) human, and having to read 100 AI-generated motivation statements makes humans sad. Sad humans don&amp;rsquo;t want to work with you.&lt;/li>
&lt;li>&lt;strong>Missing the &amp;ldquo;why&amp;rdquo;&lt;/strong>: Listing AI safety courses or programs you&amp;rsquo;ve completed without articulating why you&amp;rsquo;re genuinely interested in this work.&lt;/li>
&lt;li>&lt;strong>Wrong length&lt;/strong>: Too brief signals low effort or lack of substance. Too long is equally problematic. As the saying goes: &amp;ldquo;I didn&amp;rsquo;t have time to write a short letter, so I wrote a long one instead.&amp;rdquo; Writing long responses is easy; distilling your message into concise, information-dense prose takes real effort. When reviewers see overly long answers, they interpret it as disrespect for their time (they&amp;rsquo;re reading hundreds of applications) and lack of effort on your part to make your case clearly and efficiently. They&amp;rsquo;ll simply skim or skip it. This skill of writing concisely matters for paper writing too. Front-load your most convincing arguments in the first one or two sentences. Respect reviewers&amp;rsquo; time by putting in the work to help them understand your answer quickly. Don&amp;rsquo;t assume they&amp;rsquo;ll work hard to extract meaning from convoluted or lengthy text.&lt;/li>
&lt;/ul>
&lt;h2 id="references">References&lt;/h2>
&lt;p>References are primarily a checkbox: they rarely boost your application significantly, but they can actively hurt it in a meaningful fraction of cases. Most references are neutral, providing standard positive statements that don&amp;rsquo;t move the needle. Exceptional references include specific examples of what makes the applicant outstanding (e.g., &amp;ldquo;solved this difficult technical problem that stumped the team&amp;rdquo; or &amp;ldquo;independently proposed and executed this research idea&amp;rdquo;).&lt;/p>
&lt;p>&lt;strong>Why some references fail the checkbox:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Both referees from the same project&lt;/strong>: If you&amp;rsquo;ve listed 10 different positions/projects on your CV, why are both references (e.g., supervisor and coworker) from the same project? This looks suspicious and suggests either limited engagement elsewhere or that other supervisors wouldn&amp;rsquo;t give you strong recommendations.&lt;/li>
&lt;li>&lt;strong>Referees who barely know you&lt;/strong>: Professors whose course you attended, supervisors from a 2 week project, or anyone without substantial direct experience working with you. These provide weak, generic recommendations that fail to be convincing.&lt;/li>
&lt;li>&lt;strong>Wrong reference group&lt;/strong>: Most programs now ask referees to rank you against a comparison group rather than write lengthy letters. This makes it more useful for them and values referee&amp;rsquo;s time. If you ask someone with a very strong reference group (e.g., a senior professor who works with top students) where you&amp;rsquo;d rank as median or below, your reference looks weaker than if you&amp;rsquo;d asked a more junior person (e.g., a coworker or recent graduate) who thinks you&amp;rsquo;re exceptional in their reference group. Strategic selection matters.&lt;/li>
&lt;/ul>
&lt;h2 id="cv">CV&lt;/h2>
&lt;p>Surprisingly many CVs are poorly structured, even though guidelines exist. Here are specific issues to check that standard guides often miss:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Prioritize real estate wisely&lt;/strong>: A common mistake is burying major education (Bachelor&amp;rsquo;s, Master&amp;rsquo;s, PhD) into single lines while giving disproportionate space to minor 2 month internships or small projects. Allocate CV space according to importance: the most significant positions where you invested the most time and effort should get the most real estate.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Add hyperlinks&lt;/strong>: Few applicants do this, but it&amp;rsquo;s highly effective. Include links in your header to your personal website, GitHub, Google Scholar, and LinkedIn. For individual entries, link directly to publications, project demos, or repositories. This creates an impression of substantial public, verifiable output and makes reviewers happy by giving them easy access to details they want to investigate. A happy reviewer is more likely to favor your application.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Provide concrete evidence&lt;/strong>: For positions where your contribution might be unclear (smaller projects, research roles, etc.), don&amp;rsquo;t just describe what you did. Link to or specify actual outputs: GitHub repositories, publications, product demos, videos, etc. This is especially crucial for technical work, where CVs often leave reviewers uncertain about the depth of your technical contributions. Full-time roles at known companies need this less, but for everything else, verifiable outputs strengthen your CV significantly.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="low-hanging-fruits-for-junior-applicants">Low-Hanging Fruits for Junior Applicants&lt;/h2>
&lt;p>If you&amp;rsquo;re very junior and short on time before the deadline, here are the highest-impact improvements you can make with minimal time investment:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Master the coding assessment&lt;/strong>: Download CodeSignal&amp;rsquo;s whitepaper (&lt;a href="https://codesignal.com/resource/industry-coding-framework/%29" target="_blank" rel="noopener">https://codesignal.com/resource/industry-coding-framework/)&lt;/a>, which outlines what they expect applicants to know and what they exclude. Train specifically on those topics. Use an LLM to generate practice assignments based on their specifications.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Craft a compelling narrative&lt;/strong>: If you lack AI safety engagement, focus on why you&amp;rsquo;re committed now and why you&amp;rsquo;re worth the investment. Strong examples: &amp;ldquo;I read about AI safety and quit my job to pursue this full-time&amp;rdquo; or &amp;ldquo;I&amp;rsquo;ve spent years in quant trading / frontier AI research and am now pivoting to safety.&amp;rdquo; Organizations think in counterfactuals: if you have strong potential and they could be the tipping point in your transition to AI safety, they&amp;rsquo;ll see high counterfactual impact and be more likely to accept you despite limited direct experience.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Add technical evidence to your CV&lt;/strong>: Review your CV for opportunities to demonstrate technical ability. If you&amp;rsquo;ve done technical projects on GitHub, write clear READMEs and link them, even if the projects are basic. Most applicants don&amp;rsquo;t provide this, so it&amp;rsquo;s a positive signal even for simple projects (just ensure they&amp;rsquo;re independent work, not copied coursework).&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>Towards principled evaluations of sparse autoencoders for interpretability and control</title><link>https://georglange.com/publication/sae-evals/</link><pubDate>Wed, 09 Apr 2025 00:00:00 +0000</pubDate><guid>https://georglange.com/publication/sae-evals/</guid><description/></item><item><title>Accumbal Dopamine and Acetylcholine Dynamics during Psychostimulant Sensitization</title><link>https://georglange.com/publication/drug-sensitization-paper/</link><pubDate>Thu, 03 Apr 2025 00:00:00 +0000</pubDate><guid>https://georglange.com/publication/drug-sensitization-paper/</guid><description/></item><item><title>Temporal adaptation aids object recognition in deep convolutional neural networks in suboptimal viewing scenario's</title><link>https://georglange.com/publication/vision-neuro-ai/</link><pubDate>Thu, 03 Apr 2025 00:00:00 +0000</pubDate><guid>https://georglange.com/publication/vision-neuro-ai/</guid><description/></item><item><title>Projects</title><link>https://georglange.com/projects/</link><pubDate>Sun, 19 May 2024 00:00:00 +0000</pubDate><guid>https://georglange.com/projects/</guid><description/></item><item><title>Is This the Subspace You Are Looking For? An Interpretability Illusion for Subspace Activation Patching</title><link>https://georglange.com/publication/conference-paper/</link><pubDate>Thu, 09 May 2024 00:00:00 +0000</pubDate><guid>https://georglange.com/publication/conference-paper/</guid><description/></item><item><title>Experience</title><link>https://georglange.com/experience/</link><pubDate>Tue, 24 Oct 2023 00:00:00 +0000</pubDate><guid>https://georglange.com/experience/</guid><description/></item><item><title>Learn JavaScript</title><link>https://georglange.com/teaching/js/</link><pubDate>Tue, 24 Oct 2023 00:00:00 +0000</pubDate><guid>https://georglange.com/teaching/js/</guid><description>&lt;p>&lt;a href="https://hugoblox.com" target="_blank" rel="noopener">Hugo Blox Builder&lt;/a> is designed to give technical content creators a seamless experience. You can focus on the content and the Hugo Blox Builder which this template is built upon handles the rest.&lt;/p>
&lt;p>&lt;strong>Embed videos, podcasts, code, LaTeX math, and even test students!&lt;/strong>&lt;/p>
&lt;p>On this page, you&amp;rsquo;ll find some examples of the types of technical content that can be rendered with Hugo Blox.&lt;/p>
&lt;h2 id="video">Video&lt;/h2>
&lt;p>Teach your course by sharing videos with your students. Choose from one of the following approaches:&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/D2vj0WcvH5c?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
>&lt;/iframe>
&lt;/div>
&lt;p>&lt;strong>Youtube&lt;/strong>:&lt;/p>
&lt;pre>&lt;code>{{&amp;lt; youtube w7Ft2ymGmfc &amp;gt;}}
&lt;/code>&lt;/pre>
&lt;p>&lt;strong>Bilibili&lt;/strong>:&lt;/p>
&lt;pre>&lt;code>{{&amp;lt; bilibili id=&amp;quot;BV1WV4y1r7DF&amp;quot; &amp;gt;}}
&lt;/code>&lt;/pre>
&lt;p>&lt;strong>Video file&lt;/strong>&lt;/p>
&lt;p>Videos may be added to a page by either placing them in your &lt;code>assets/media/&lt;/code> media library or in your &lt;a href="https://gohugo.io/content-management/page-bundles/" target="_blank" rel="noopener">page&amp;rsquo;s folder&lt;/a>, and then embedding them with the &lt;em>video&lt;/em> shortcode:&lt;/p>
&lt;pre>&lt;code>{{&amp;lt; video src=&amp;quot;my_video.mp4&amp;quot; controls=&amp;quot;yes&amp;quot; &amp;gt;}}
&lt;/code>&lt;/pre>
&lt;h2 id="podcast">Podcast&lt;/h2>
&lt;p>You can add a podcast or music to a page by placing the MP3 file in the page&amp;rsquo;s folder or the media library folder and then embedding the audio on your page with the &lt;em>audio&lt;/em> shortcode:&lt;/p>
&lt;pre>&lt;code>{{&amp;lt; audio src=&amp;quot;ambient-piano.mp3&amp;quot; &amp;gt;}}
&lt;/code>&lt;/pre>
&lt;p>Try it out:&lt;/p>
&lt;audio controls >
&lt;source src="https://georglange.com/teaching/js/ambient-piano.mp3" type="audio/mpeg">
&lt;/audio>
&lt;h2 id="test-students">Test students&lt;/h2>
&lt;p>Provide a simple yet fun self-assessment by revealing the solutions to challenges with the &lt;code>spoiler&lt;/code> shortcode:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">{{&lt;span class="p">&amp;lt;&lt;/span> &lt;span class="nt">spoiler&lt;/span> &lt;span class="na">text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;👉 Click to view the solution&amp;#34;&lt;/span> &lt;span class="p">&amp;gt;&lt;/span>}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">You found me!
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{&lt;span class="p">&amp;lt;&lt;/span> &lt;span class="p">/&lt;/span>&lt;span class="nt">spoiler&lt;/span> &lt;span class="p">&amp;gt;&lt;/span>}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>renders as&lt;/p>
&lt;details class="spoiler " id="spoiler-2">
&lt;summary class="cursor-pointer">👉 Click to view the solution&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
You found me 🎉
&lt;/div>
&lt;/details>
&lt;h2 id="math">Math&lt;/h2>
&lt;p>Hugo Blox Builder supports a Markdown extension for $\LaTeX$ math. You can enable this feature by toggling the &lt;code>math&lt;/code> option in your &lt;code>config/_default/params.yaml&lt;/code> file.&lt;/p>
&lt;p>To render &lt;em>inline&lt;/em> or &lt;em>block&lt;/em> math, wrap your LaTeX math with &lt;code>{{&amp;lt; math &amp;gt;}}$...${{&amp;lt; /math &amp;gt;}}&lt;/code> or &lt;code>{{&amp;lt; math &amp;gt;}}$$...$${{&amp;lt; /math &amp;gt;}}&lt;/code>, respectively.&lt;/p>
&lt;div class="flex px-4 py-3 mb-6 rounded-md bg-primary-100 dark:bg-primary-900">
&lt;span class="pr-3 pt-1 text-primary-600 dark:text-primary-300">
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m11.25 11.25l.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0a9 9 0 0 1 18 0m-9-3.75h.008v.008H12z"/>&lt;/svg>
&lt;/span>
&lt;span class="dark:text-neutral-300">We wrap the LaTeX math in the Hugo Blox &lt;em>math&lt;/em> shortcode to prevent Hugo rendering our math as Markdown.&lt;/span>
&lt;/div>
&lt;p>Example &lt;strong>math block&lt;/strong>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-latex" data-lang="latex">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">{{&lt;/span>&amp;lt; math &amp;gt;&lt;span class="nb">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sb">$$&lt;/span>&lt;span class="nb">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">&lt;/span>&lt;span class="nv">\gamma&lt;/span>&lt;span class="nb">_{n} &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\frac&lt;/span>&lt;span class="nb">{ &lt;/span>&lt;span class="nv">\left&lt;/span>&lt;span class="nb"> | &lt;/span>&lt;span class="nv">\left&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">\mathbf&lt;/span>&lt;span class="nb"> x_{n} &lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\mathbf&lt;/span>&lt;span class="nb"> x_{n&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="nb">} &lt;/span>&lt;span class="nv">\right&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="nb">^T &lt;/span>&lt;span class="nv">\left&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">[&lt;/span>&lt;span class="nv">\nabla&lt;/span>&lt;span class="nb"> F &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">\mathbf&lt;/span>&lt;span class="nb"> x_{n}&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\nabla&lt;/span>&lt;span class="nb"> F &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">\mathbf&lt;/span>&lt;span class="nb"> x_{n&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="nb">}&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\right&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">]&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\right&lt;/span>&lt;span class="nb"> |}{&lt;/span>&lt;span class="nv">\left&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\|\nabla&lt;/span>&lt;span class="nb"> F&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">\mathbf&lt;/span>&lt;span class="nb">{x}_{n}&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\nabla&lt;/span>&lt;span class="nb"> F&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">\mathbf&lt;/span>&lt;span class="nb">{x}_{n&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="nb">}&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\right&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\|&lt;/span>&lt;span class="nb">^&lt;/span>&lt;span class="m">2&lt;/span>&lt;span class="nb">}
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">&lt;/span>&lt;span class="s">$$&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">{{&lt;/span>&amp;lt; /math &amp;gt;&lt;span class="nb">}}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>renders as&lt;/p>
$$\gamma_{n} = \frac{ \left | \left (\mathbf x_{n} - \mathbf x_{n-1} \right )^T \left [\nabla F (\mathbf x_{n}) - \nabla F (\mathbf x_{n-1}) \right ] \right |}{\left \|\nabla F(\mathbf{x}_{n}) - \nabla F(\mathbf{x}_{n-1}) \right \|^2}$$
&lt;p>Example &lt;strong>inline math&lt;/strong> &lt;code>{{&amp;lt; math &amp;gt;}}$\nabla F(\mathbf{x}_{n})${{&amp;lt; /math &amp;gt;}}&lt;/code> renders as $\nabla F(\mathbf{x}_{n})$
.&lt;/p>
&lt;p>Example &lt;strong>multi-line math&lt;/strong> using the math linebreak (&lt;code>\\&lt;/code>):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-latex" data-lang="latex">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">{{&lt;/span>&amp;lt; math &amp;gt;&lt;span class="nb">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sb">$$&lt;/span>&lt;span class="nb">f&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nb">k;p_{&lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="nb">}^{&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="nb">}&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\begin&lt;/span>&lt;span class="nb">{cases}p_{&lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="nb">}^{&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="nb">} &amp;amp; &lt;/span>&lt;span class="nv">\text&lt;/span>&lt;span class="nb">{if }k&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="nb">, &lt;/span>&lt;span class="nv">\\&lt;/span>&lt;span class="nb">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="nb">p_{&lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="nb">}^{&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="nb">} &amp;amp; &lt;/span>&lt;span class="nv">\text&lt;/span>&lt;span class="nb">{if }k&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="nb">.&lt;/span>&lt;span class="nv">\end&lt;/span>&lt;span class="nb">{cases}&lt;/span>&lt;span class="s">$$&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">{{&lt;/span>&amp;lt; /math &amp;gt;&lt;span class="nb">}}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>renders as&lt;/p>
$$
f(k;p_{0}^{*}) = \begin{cases}p_{0}^{*} &amp; \text{if }k=1, \\
1-p_{0}^{*} &amp; \text{if }k=0.\end{cases}
$$
&lt;h2 id="code">Code&lt;/h2>
&lt;p>Hugo Blox Builder utilises Hugo&amp;rsquo;s Markdown extension for highlighting code syntax. The code theme can be selected in the &lt;code>config/_default/params.yaml&lt;/code> file.&lt;/p>
&lt;pre>&lt;code>```python
import pandas as pd
data = pd.read_csv(&amp;quot;data.csv&amp;quot;)
data.head()
```
&lt;/code>&lt;/pre>
&lt;p>renders as&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">pandas&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">pd&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">pd&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">read_csv&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;data.csv&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">data&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">head&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="inline-images">Inline Images&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{{&amp;lt;&lt;/span> &lt;span class="nx">icon&lt;/span> &lt;span class="nx">name&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="s">&amp;#34;python&amp;#34;&lt;/span> &lt;span class="p">&amp;gt;}}&lt;/span> &lt;span class="nx">Python&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>renders as&lt;/p>
&lt;p>
&lt;span class="inline-block pr-1">
&lt;svg style="height: 1em; transform: translateY(0.1em);" xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 448 512" fill="currentColor">&lt;path d="M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"/>&lt;/svg>
&lt;/span> Python&lt;/p>
&lt;h2 id="did-you-find-this-page-helpful-consider-sharing-it-">Did you find this page helpful? Consider sharing it 🙌&lt;/h2></description></item><item><title>Learn Python</title><link>https://georglange.com/teaching/python/</link><pubDate>Tue, 24 Oct 2023 00:00:00 +0000</pubDate><guid>https://georglange.com/teaching/python/</guid><description>&lt;p>&lt;a href="https://hugoblox.com" target="_blank" rel="noopener">Hugo Blox Builder&lt;/a> is designed to give technical content creators a seamless experience. You can focus on the content and the Hugo Blox Builder which this template is built upon handles the rest.&lt;/p>
&lt;p>&lt;strong>Embed videos, podcasts, code, LaTeX math, and even test students!&lt;/strong>&lt;/p>
&lt;p>On this page, you&amp;rsquo;ll find some examples of the types of technical content that can be rendered with Hugo Blox.&lt;/p>
&lt;h2 id="video">Video&lt;/h2>
&lt;p>Teach your course by sharing videos with your students. Choose from one of the following approaches:&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/D2vj0WcvH5c?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
>&lt;/iframe>
&lt;/div>
&lt;p>&lt;strong>Youtube&lt;/strong>:&lt;/p>
&lt;pre>&lt;code>{{&amp;lt; youtube w7Ft2ymGmfc &amp;gt;}}
&lt;/code>&lt;/pre>
&lt;p>&lt;strong>Bilibili&lt;/strong>:&lt;/p>
&lt;pre>&lt;code>{{&amp;lt; bilibili id=&amp;quot;BV1WV4y1r7DF&amp;quot; &amp;gt;}}
&lt;/code>&lt;/pre>
&lt;p>&lt;strong>Video file&lt;/strong>&lt;/p>
&lt;p>Videos may be added to a page by either placing them in your &lt;code>assets/media/&lt;/code> media library or in your &lt;a href="https://gohugo.io/content-management/page-bundles/" target="_blank" rel="noopener">page&amp;rsquo;s folder&lt;/a>, and then embedding them with the &lt;em>video&lt;/em> shortcode:&lt;/p>
&lt;pre>&lt;code>{{&amp;lt; video src=&amp;quot;my_video.mp4&amp;quot; controls=&amp;quot;yes&amp;quot; &amp;gt;}}
&lt;/code>&lt;/pre>
&lt;h2 id="podcast">Podcast&lt;/h2>
&lt;p>You can add a podcast or music to a page by placing the MP3 file in the page&amp;rsquo;s folder or the media library folder and then embedding the audio on your page with the &lt;em>audio&lt;/em> shortcode:&lt;/p>
&lt;pre>&lt;code>{{&amp;lt; audio src=&amp;quot;ambient-piano.mp3&amp;quot; &amp;gt;}}
&lt;/code>&lt;/pre>
&lt;p>Try it out:&lt;/p>
&lt;audio controls >
&lt;source src="https://georglange.com/teaching/python/ambient-piano.mp3" type="audio/mpeg">
&lt;/audio>
&lt;h2 id="test-students">Test students&lt;/h2>
&lt;p>Provide a simple yet fun self-assessment by revealing the solutions to challenges with the &lt;code>spoiler&lt;/code> shortcode:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">{{&lt;span class="p">&amp;lt;&lt;/span> &lt;span class="nt">spoiler&lt;/span> &lt;span class="na">text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;👉 Click to view the solution&amp;#34;&lt;/span> &lt;span class="p">&amp;gt;&lt;/span>}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">You found me!
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{&lt;span class="p">&amp;lt;&lt;/span> &lt;span class="p">/&lt;/span>&lt;span class="nt">spoiler&lt;/span> &lt;span class="p">&amp;gt;&lt;/span>}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>renders as&lt;/p>
&lt;details class="spoiler " id="spoiler-2">
&lt;summary class="cursor-pointer">👉 Click to view the solution&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
You found me 🎉
&lt;/div>
&lt;/details>
&lt;h2 id="math">Math&lt;/h2>
&lt;p>Hugo Blox Builder supports a Markdown extension for $\LaTeX$ math. You can enable this feature by toggling the &lt;code>math&lt;/code> option in your &lt;code>config/_default/params.yaml&lt;/code> file.&lt;/p>
&lt;p>To render &lt;em>inline&lt;/em> or &lt;em>block&lt;/em> math, wrap your LaTeX math with &lt;code>{{&amp;lt; math &amp;gt;}}$...${{&amp;lt; /math &amp;gt;}}&lt;/code> or &lt;code>{{&amp;lt; math &amp;gt;}}$$...$${{&amp;lt; /math &amp;gt;}}&lt;/code>, respectively.&lt;/p>
&lt;div class="flex px-4 py-3 mb-6 rounded-md bg-primary-100 dark:bg-primary-900">
&lt;span class="pr-3 pt-1 text-primary-600 dark:text-primary-300">
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m11.25 11.25l.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0a9 9 0 0 1 18 0m-9-3.75h.008v.008H12z"/>&lt;/svg>
&lt;/span>
&lt;span class="dark:text-neutral-300">We wrap the LaTeX math in the Hugo Blox &lt;em>math&lt;/em> shortcode to prevent Hugo rendering our math as Markdown.&lt;/span>
&lt;/div>
&lt;p>Example &lt;strong>math block&lt;/strong>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-latex" data-lang="latex">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">{{&lt;/span>&amp;lt; math &amp;gt;&lt;span class="nb">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sb">$$&lt;/span>&lt;span class="nb">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">&lt;/span>&lt;span class="nv">\gamma&lt;/span>&lt;span class="nb">_{n} &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\frac&lt;/span>&lt;span class="nb">{ &lt;/span>&lt;span class="nv">\left&lt;/span>&lt;span class="nb"> | &lt;/span>&lt;span class="nv">\left&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">\mathbf&lt;/span>&lt;span class="nb"> x_{n} &lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\mathbf&lt;/span>&lt;span class="nb"> x_{n&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="nb">} &lt;/span>&lt;span class="nv">\right&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="nb">^T &lt;/span>&lt;span class="nv">\left&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">[&lt;/span>&lt;span class="nv">\nabla&lt;/span>&lt;span class="nb"> F &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">\mathbf&lt;/span>&lt;span class="nb"> x_{n}&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\nabla&lt;/span>&lt;span class="nb"> F &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">\mathbf&lt;/span>&lt;span class="nb"> x_{n&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="nb">}&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\right&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">]&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\right&lt;/span>&lt;span class="nb"> |}{&lt;/span>&lt;span class="nv">\left&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\|\nabla&lt;/span>&lt;span class="nb"> F&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">\mathbf&lt;/span>&lt;span class="nb">{x}_{n}&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\nabla&lt;/span>&lt;span class="nb"> F&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">\mathbf&lt;/span>&lt;span class="nb">{x}_{n&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="nb">}&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\right&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\|&lt;/span>&lt;span class="nb">^&lt;/span>&lt;span class="m">2&lt;/span>&lt;span class="nb">}
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">&lt;/span>&lt;span class="s">$$&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">{{&lt;/span>&amp;lt; /math &amp;gt;&lt;span class="nb">}}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>renders as&lt;/p>
$$\gamma_{n} = \frac{ \left | \left (\mathbf x_{n} - \mathbf x_{n-1} \right )^T \left [\nabla F (\mathbf x_{n}) - \nabla F (\mathbf x_{n-1}) \right ] \right |}{\left \|\nabla F(\mathbf{x}_{n}) - \nabla F(\mathbf{x}_{n-1}) \right \|^2}$$
&lt;p>Example &lt;strong>inline math&lt;/strong> &lt;code>{{&amp;lt; math &amp;gt;}}$\nabla F(\mathbf{x}_{n})${{&amp;lt; /math &amp;gt;}}&lt;/code> renders as $\nabla F(\mathbf{x}_{n})$
.&lt;/p>
&lt;p>Example &lt;strong>multi-line math&lt;/strong> using the math linebreak (&lt;code>\\&lt;/code>):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-latex" data-lang="latex">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">{{&lt;/span>&amp;lt; math &amp;gt;&lt;span class="nb">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sb">$$&lt;/span>&lt;span class="nb">f&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nb">k;p_{&lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="nb">}^{&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="nb">}&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\begin&lt;/span>&lt;span class="nb">{cases}p_{&lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="nb">}^{&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="nb">} &amp;amp; &lt;/span>&lt;span class="nv">\text&lt;/span>&lt;span class="nb">{if }k&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="nb">, &lt;/span>&lt;span class="nv">\\&lt;/span>&lt;span class="nb">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="nb">p_{&lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="nb">}^{&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="nb">} &amp;amp; &lt;/span>&lt;span class="nv">\text&lt;/span>&lt;span class="nb">{if }k&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="nb">.&lt;/span>&lt;span class="nv">\end&lt;/span>&lt;span class="nb">{cases}&lt;/span>&lt;span class="s">$$&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">{{&lt;/span>&amp;lt; /math &amp;gt;&lt;span class="nb">}}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>renders as&lt;/p>
$$
f(k;p_{0}^{*}) = \begin{cases}p_{0}^{*} &amp; \text{if }k=1, \\
1-p_{0}^{*} &amp; \text{if }k=0.\end{cases}
$$
&lt;h2 id="code">Code&lt;/h2>
&lt;p>Hugo Blox Builder utilises Hugo&amp;rsquo;s Markdown extension for highlighting code syntax. The code theme can be selected in the &lt;code>config/_default/params.yaml&lt;/code> file.&lt;/p>
&lt;pre>&lt;code>```python
import pandas as pd
data = pd.read_csv(&amp;quot;data.csv&amp;quot;)
data.head()
```
&lt;/code>&lt;/pre>
&lt;p>renders as&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">pandas&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">pd&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">pd&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">read_csv&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;data.csv&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">data&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">head&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="inline-images">Inline Images&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{{&amp;lt;&lt;/span> &lt;span class="nx">icon&lt;/span> &lt;span class="nx">name&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="s">&amp;#34;python&amp;#34;&lt;/span> &lt;span class="p">&amp;gt;}}&lt;/span> &lt;span class="nx">Python&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>renders as&lt;/p>
&lt;p>
&lt;span class="inline-block pr-1">
&lt;svg style="height: 1em; transform: translateY(0.1em);" xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 448 512" fill="currentColor">&lt;path d="M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"/>&lt;/svg>
&lt;/span> Python&lt;/p>
&lt;h2 id="did-you-find-this-page-helpful-consider-sharing-it-">Did you find this page helpful? Consider sharing it 🙌&lt;/h2></description></item><item><title>Fibermagic</title><link>https://georglange.com/project/fibermagic/</link><pubDate>Wed, 26 Oct 2022 00:00:00 +0000</pubDate><guid>https://georglange.com/project/fibermagic/</guid><description>&lt;p>Fibermagic is a Python library for large-scale analysis of fiber photometry data.&lt;/p></description></item><item><title>Online Course on Deep Learning for Computer Vision</title><link>https://georglange.com/project/online_course/</link><pubDate>Fri, 20 Mar 2020 00:00:00 +0000</pubDate><guid>https://georglange.com/project/online_course/</guid><description>&lt;p>This online course provides a comprehensive introduction to neural networks and deep learning, with a focus on computer vision applications. Starting from the theoretical foundations of artificial intelligence, the course covers both practical implementations and advanced concepts. Students learn how neural networks function, how to develop and deploy them, and explore training algorithms through hands-on exercises. The course also teaches optimization techniques and strategies for training with limited data. By the end, participants will understand how to build and optimize neural networks for their own applications.&lt;/p></description></item></channel></rss>