<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Portfolio on jwhogg</title><link>https://jwhogg.github.io/portfolio/</link><description>Recent content in Portfolio on jwhogg</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 07 Dec 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://jwhogg.github.io/portfolio/index.xml" rel="self" type="application/rss+xml"/><item><title>why-rs: A Causal Inference Library in Rust</title><link>https://jwhogg.github.io/portfolio/portfolio6/</link><pubDate>Sun, 07 Dec 2025 00:00:00 +0000</pubDate><guid>https://jwhogg.github.io/portfolio/portfolio6/</guid><description>&lt;p&gt;&lt;a href="https://github.com/jwhogg/why-rs"&gt;Github🔗&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;An under-development project, where I&amp;rsquo;m trying to build out a Causal Inference library in Rust. I found there wasn&amp;rsquo;t much in the way of CI libraries in Rust, and
I was underwhelemed with the level of support for the ones I&amp;rsquo;ve used in Python, so I decided to try and build my own, which I hope to make use of throughout
my PhD and extend to suit my purposes.&lt;/p&gt;</description></item><item><title>Radial Chess</title><link>https://jwhogg.github.io/portfolio/portfolio5/</link><pubDate>Sun, 01 Dec 2024 00:00:00 +0000</pubDate><guid>https://jwhogg.github.io/portfolio/portfolio5/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/jwhogg/Radial-Chess-Backend"&gt;Github- Back end 🔗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jwhogg/Radial-Chess-Frontend"&gt;Github- Front end 🔗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- &lt;img width="60%" alt="Screenshot 2024-10-25 at 14 31 29" src="https://github.com/user-attachments/assets/eeb29645-a658-4d88-ac06-09dfc15afd10"&gt; --&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img
 src="https://jwhogg.github.io/images/radial_chess_ui.png#large"
 alt="Radial Chess UI"
 loading="lazy"
 
 /&gt;
 &lt;figcaption&gt;Radial Chess UI&lt;/figcaption&gt;
 &lt;/figure&gt;

&lt;span class="text-gray-500 text-sm"&gt;
 Radial Chess UI
&lt;/span&gt;
&lt;/p&gt;


&lt;h2 id="demo"&gt;
 Demo
&lt;/h2&gt;
&lt;!-- &lt;img width="60%" alt="Demo of a game" src="https://github.com/user-attachments/assets/65dc3ed1-da70-4d31-a273-349de6703df2"&gt; --&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img
 src="https://jwhogg.github.io/images/radial_chess_game.gif#large"
 alt="Radial Chess Demo"
 loading="lazy"
 
 /&gt;
 &lt;figcaption&gt;Radial Chess Demo&lt;/figcaption&gt;
 &lt;/figure&gt;

&lt;span class="text-gray-500 text-sm"&gt;
 Playing against myself
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;Inspired by the &lt;a href="https://www.youtube.com/watch?v=7VSVfQcaxFY"&gt;heorics&lt;/a&gt; of lichess.org&amp;rsquo;s single developer, I decided to try to create a similar web-based online chess app, with matchmaking. The main goal of this project is to use my knowledge of system design to make a robust and scalable app that could theoretically handle a large number of users. This involves knowlege of infastructure tools, and overcoming dificulties such as scaling a Web-Socket app (hint: you will need sticky sessions for your load-balancer!).&lt;/p&gt;</description></item><item><title>Budgeting App</title><link>https://jwhogg.github.io/portfolio/portfolio3/</link><pubDate>Tue, 04 Jun 2024 00:00:00 +0000</pubDate><guid>https://jwhogg.github.io/portfolio/portfolio3/</guid><description>&lt;p&gt;&lt;a href="https://github.com/jwhogg/Rails-Burndown-Budgeting-App"&gt;Github 🔗&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On ongoing project of mine, taking inspriation from Monzo&amp;rsquo;s budgeting burndown feature. I&amp;rsquo;m building this web app with Ruby-on-Rails, and using the GoCardless API to handle linking user&amp;rsquo;s bank accounts to the app securely.&lt;/p&gt;
&lt;!-- &lt;img src="https://jwhogg.github.io/images/monzo_burndown.png" alt="The inspiration for the project: monzo's 'targets' tab." width="60%"&gt; --&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img
 src="https://jwhogg.github.io/images/monzo_burndown.webp#smaller"
 alt="budgeting inspo"
 loading="lazy"
 
 /&gt;
 &lt;figcaption&gt;budgeting inspo&lt;/figcaption&gt;
 &lt;/figure&gt;

&lt;span class="text-gray-500 text-sm"&gt;
 The inspiration for the project: monzo's 'targets' tab.
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;So far, I am building the MVP, and have implemented functionality to link a bank account with the app, and to store the user&amp;rsquo;s key to access their bank account data using server-side sessions, which are much more secure than cookies sesion storage.&lt;/p&gt;</description></item><item><title>Fine-tuning GPT2-2</title><link>https://jwhogg.github.io/portfolio/portfolio4/</link><pubDate>Tue, 04 Jun 2024 00:00:00 +0000</pubDate><guid>https://jwhogg.github.io/portfolio/portfolio4/</guid><description>&lt;p&gt;&lt;a href="https://github.com/jwhogg/GPT-2-Fine-Tuning/tree/main"&gt;Github 🔗&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A brief jupyter notebook I made showing how to fine tune a model using the 🤗 Transformers libary. The example I wrote uses the popular CNN/DailyMail dataset.&lt;/p&gt;</description></item><item><title>Youtube2Summary</title><link>https://jwhogg.github.io/portfolio/portfolio1/</link><pubDate>Mon, 03 Jun 2024 00:00:00 +0000</pubDate><guid>https://jwhogg.github.io/portfolio/portfolio1/</guid><description>&lt;p&gt;&lt;a href="https://github.com/jwhogg/youtube_to_summary"&gt;Github 🔗&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;🤗 Pipeline to generate summaries of youtube videos, using Whisper-Small for transcription, and BART-LARGE-XSUM for summarisation.&lt;/p&gt;
&lt;p&gt;BART has been finetuned on the popular CNN/Daily Mail Dataset, as it lends itself to summarisation tasks. Initially, we attempted to fine-tune GPT-2 for the summarisation task, but found it had poor performance: being a generative transfotmer, it generates words one-by-one, (extractive summarisation) whereas BART can generate at the sentence level (using abstractive summarisation). For more info on choice of summarisation model, see this article. We use the HuggingFace Transformers libary to abstract some of the PyTorch code using the pipeline submodule.&lt;/p&gt;</description></item><item><title>Causal Implicit GAN: Data Augmentation for Causal Discovery</title><link>https://jwhogg.github.io/portfolio/portfolio2/</link><pubDate>Tue, 16 May 2023 00:00:00 +0000</pubDate><guid>https://jwhogg.github.io/portfolio/portfolio2/</guid><description>&lt;p&gt;&lt;a href="https://github.com/jwhogg/CIGAN"&gt;Github 🔗&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My University dissertation research project, where I designed and trained a GAN model for data augmentation (generating new training samples for downstream models). I was very proud to receive a score of 83 on this disseration (high 1st).&lt;/p&gt;
&lt;!-- &lt;img src="https://jwhogg.github.io/images/cigan.png" alt="A high-level overview of the CIGAN project" width="60%"&gt; --&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img
 src="https://jwhogg.github.io/images/cigan.webp#small"
 alt="cigan"
 loading="lazy"
 
 /&gt;
 &lt;figcaption&gt;cigan&lt;/figcaption&gt;
 &lt;/figure&gt;

&lt;span class="text-gray-500 text-sm"&gt;
 A high-level overview of the CIGAN project
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;The data the GAN generates is intended for use on Causal Discovery models, an area where quality ground-truth datasets are hard to come by- making data augmentation a valuable technique. The novel contribution of my project is that the GAN is designed to implicitly learn causal relations, which we hypothesise leads to more &amp;lsquo;realistic&amp;rsquo; output data.&lt;/p&gt;</description></item></channel></rss>