new layout

This commit is contained in:
James Ravenscroft 2024-09-04 20:56:18 +01:00
parent 3bfb4160fd
commit d5e97e4413
24 changed files with 234 additions and 159 deletions

3
.gitmodules vendored
View File

@ -4,3 +4,6 @@
[submodule "brainsteam/themes/Mainroad"]
path = brainsteam/themes/Mainroad
url = ssh://git@git.jamesravey.me:222/ravenscroftj/Mainroad.git
[submodule "brainsteam/themes/plague"]
path = brainsteam/themes/plague
url = https://github.com/brianreumere/plague.git

View File

@ -2,12 +2,19 @@ baseURL = "https://brainsteam.co.uk/"
languageCode = "en-us"
title = "Brainsteam"
#theme='hugo-ink'
theme='Mainroad'
#theme='Mainroad'
theme='plague'
paginate=10
disqusShortname = "brainsteam"
copyright = "© James Ravenscroft"
[module]
[[module.imports]]
disable = false
ignoreConfig = false
ignoreImports = true
path = 'plague' # Theme
pygmentsstyle = "vs"
@ -31,48 +38,76 @@ post_meta = ["author", "date", "categories", "translations"] # Order of post met
[markup.goldmark.renderer]
unsafe= true
[Params]
[params]
authorbox= true
subtitle = "Digital Home of James Ravenscroft Machine Learning and NLP specialist and software generalist"
avatar = "/images/avatar_small.png"
favicon = "/images/avatar_small.png"
siteHeaderText = "Brainsteam"
siteFooterText = "Powered by [Hugo](https://gohugo.io/) and the [plague](https://github.com/brianreumere/plague) theme."
copyright = "James Ravenscroft"
# subtitle = "Digital Home of James Ravenscroft Machine Learning and NLP specialist and software generalist"
# avatar = "/images/avatar_small.png"
# favicon = "/images/avatar_small.png"
# copyright = "James Ravenscroft"
recentSections = ["posts"]
mainSections = ["posts","notes","replies","likes","reposts","bookmarks", "watches"]
colors = "default"
[Author] # Used in authorbox
name = "James Ravenscroft"
bio = "James is an NLP and Machine Learning specialist and software generalist, currently CTO at Filament and previously an IBMer"
avatar = "/images/avatar.png"
#mainSections = ["posts","notes","replies","likes","reposts","bookmarks", "watches"]
mainSections = ["posts"]
[Params.Logo]
image = "/images/avatar_small.png"
[params.hcard]
avatar = "images/avatar_small.png"
fullName = "James Ravenscroft"
pronouns = ["he", "him"]
nickname = "jamesravey"
city = "Portsmouth"
region = "Hants"
country = "United Kingdom"
showLocation = true
[Params.sidebar]
home = "right" # Configure layout for home page
list = "right" # Configure layout for list pages
single = false # Configure layout for single pages
# Enable widgets in given order
widgets = ["search", "recent", "types", "social", "categories", "taglist", "languages"]
social = [
{ platform = "github", identity = "ravenscroftj", url_pattern = "https://github.com/%s" },
{ platform = "mastodon", identity = "jamesravey", url_pattern = "https://fosstodon.org/%s"},
{ platform = "bluesky", identity = "jamesravey", url_pattern = "https://bsky.app/profile/%s"}
]
[Params.widgets.social]
# Enable parts of social widget
#facebook = "username"
#twitter = "username"
#instagram = "username"
#linkedin = "username"
#telegram = "username"
github = "ravenscroftj"
mastodon = "https://fosstodon.org/@jamesravey"
#gitlab = "username"
#bitbucket = "username"
#email = "example@example.com"
# [Author] # Used in authorbox
# name = "James Ravenscroft"
# bio = "James is an NLP and Machine Learning specialist and software generalist, currently CTO at Filament and previously an IBMer"
# avatar = "/images/avatar.png"
# [Params.Logo]
# image = "/images/avatar_small.png"
# [Params.sidebar]
# home = "right" # Configure layout for home page
# list = "right" # Configure layout for list pages
# single = false # Configure layout for single pages
# # Enable widgets in given order
# widgets = ["search", "recent", "types", "social", "categories", "taglist", "languages"]
# [Params.widgets.social]
# # Enable parts of social widget
# #facebook = "username"
# #twitter = "username"
# #instagram = "username"
# #linkedin = "username"
# #telegram = "username"
# github = "ravenscroftj"
# mastodon = "https://fosstodon.org/@jamesravey"
# #gitlab = "username"
# #bitbucket = "username"
# #email = "example@example.com"
[[menu.main]]
name = "Home"
@ -80,20 +115,20 @@ url = "/"
weight = 1
[[menu.main]]
name = "Blog Posts"
name = "Posts"
url = "/posts"
weight = 2
[[menu.main]]
name = "About Me"
url = "/pages/about"
name = "Notes"
url = "/notes/"
weight = 3
[[menu.main]]
name = "My Work"
url = "/pages/my-work"
name = "Links"
url = "/bookmarks/"
weight = 5
[[menu.main]]
@ -102,26 +137,6 @@ url = "/search"
weight = 6
[[params.social]]
name = "Twitter"
icon = "twitter"
url = "https://twitter.com/jamesravey/"
[[params.social]]
name = "Mastodon"
url ="https://fosstodon.org/@jamesravey"
icon = "message-circle"
[[params.social]]
name = "Github"
icon = "github"
url = "https://github.com/ravenscroftj"
[[params.social]]
name = "RSS"
icon = "rss"
url = "/pages/feeds/"
[taxonomies]
tag = "tags"

View File

@ -0,0 +1,4 @@
---
---
Welcome to the Digital Home of James Ravenscroft Machine Learning and NLP specialist and software generalist.

View File

@ -1,19 +1,18 @@
---
date: '2023-06-19T21:44:34.280750'
date: "2023-06-19T21:44:34.280750"
mp-syndicate-to:
- https://brid.gy/publish/mastodon
- https://brid.gy/publish/mastodon
photo:
- https://brainsteam.co.uk/media/2023/06/19/1687211074_0.jpg
- url: https://brainsteam.co.uk/media/2023/06/19/1687211074_0.jpg
alt: a tiny mouse staring through the bars of a humane trap next to a large pile of peanut butter
post_meta:
- date
- date
tags:
- personal
- humour
- personal
- humour
thumbnail: https://brainsteam.co.uk/media/2023/06/19/1687211074_0.jpg
type: notes
url: /notes/2023/06/19/1687211074
---
<img src="/media/2023/06/19/1687211074_0.jpg" alt="a tiny mouse staring through the bars of a humane trap next to a large pile of peanut butter" class="u-photo" />
Had a run in with this little guy this morning. He's been living in our garage eating bird seed out of a sack I bought for our bird feeders for a few weeks. I set up infrared cameras and humane traps and I've been watching him scurrying around cutely at night.we released him into a hedgerow next to a big field this morning and I'm kind of going to miss him.
Had a run in with this little guy this morning. He's been living in our garage eating bird seed out of a sack I bought for our bird feeders for a few weeks. I set up infrared cameras and humane traps and I've been watching him scurrying around cutely at night.we released him into a hedgerow next to a big field this morning and I'm kind of going to miss him.

View File

@ -1,18 +1,13 @@
---
date: '2023-07-09T14:20:02.886483'
date: "2023-07-09T14:20:02.886483"
post_meta: ["date"]
photo:
- /media/2023/07/09/1688912402_0.jpg
- https://brainsteam.co.uk/media/2023/07/09/1688912402_0.jpg
tags:
- personal
thumbnail: /media/2023/07/09/1688912402_0.jpg
- personal
thumbnail: https://brainsteam.co.uk/media/2023/07/09/1688912402_0.jpg
type: notes
url: /notes/2023/07/09/1688912402
---
<img src="/media/2023/07/09/1688912402_0.jpg" class="u-photo" />
Welcome to my new look website. I've spent my Sunday morning getting the site looking nice and setting up webmentions. I'm now just testing that I can still make new posts
Welcome to my new look website. I've spent my Sunday morning getting the site looking nice and setting up webmentions. I'm now just testing that I can still make new posts

View File

@ -1,22 +1,19 @@
---
date: '2023-08-06T09:09:35.376904'
date: "2023-08-06T09:09:35.376904"
mp-syndicate-to:
- https://brid.gy/publish/mastodon
- https://brid.gy/publish/mastodon
photo:
- /media/2023/08/06/1691312975_0.jpg
- /media/2023/08/06/1691312975_0.jpg
post_meta:
- date
- date
tags:
- personal
- personal
thumbnail: /media/2023/08/06/1691312975_0.jpg
type: notes
url: /notes/2023/08/06/1691312975
---
<img src="/media/2023/08/06/1691312975_0.jpg" alt="James walking along a beach wearing sunglasses. the sky is clear and blue." class="u-photo" />
a quick walk along Lee-on-the-Solent beach to burn some morning lark energy this morning
<a href="https://brid.gy/publish/mastodon"></a>
a quick walk along Lee-on-the-Solent beach to burn some morning lark energy this morning
<a href="https://brid.gy/publish/mastodon"></a>

View File

@ -1,6 +1,6 @@
---
post_meta:
- date
- date
title: About Me
type: pages
url: /pages/about
@ -11,8 +11,6 @@ I'm James, I am a Chief Technology Officer and Software Engineer specialising in
- [What I'm up to right now](#what-im-up-to-right-now)
- [What I do for work](#what-i-do-for-work)
- [What I do for fun](#what-i-do-for-fun)
- [About The Site](#about-the-site)
## What I'm up to right now
@ -20,29 +18,17 @@ I keep my [now](/now) page up to date with exactly where I'm at.
## What I do for work
- I've been freelancing and [building websites](https://web.archive.org/web/20051102052726/http://www.simssource.net/) since the mid 00s
- I started my full time career at IBM in 2011 in their [CICS transaction processing product](https://www.ibm.com/it-infrastructure/z/cics) before moving over to Watson where I was a customer-facing solutions architect which entailed helping other techies to use Watson APIs and services.
- In 2016 I left IBM to co-found [Filament AI](https://filament.ai), formerly an AI & ML consultancy and now a software product business where I am currently CTO and Chief Data Scientist. I oversee and manage our technical roadmap and strategy, but I also keep my hands dirty and regularly deliver code for customers and for our products.
- In 2022 I wrapped up up my part-time PhD which I've been working on under the dual supervision of [Prof. Maria Liakata](https://www.turing.ac.uk/people/researchers/maria-liakata) at the [Alan Turing Institute](https://www.turing.ac.uk/) [Dr Amanda Clare](https://users.aber.ac.uk/afc/) at Aberystwth University (where I finished my BSc in 2013).
- My main academic affiliation was with [University of Warwick](https://warwick.ac.uk/fac/sci/dcs/) but, I often crash Turing events and, I've been known to visit Aberystwyth to give talks at careers events and departmental seminars.
- I've been freelancing and [building websites](https://web.archive.org/web/20051102052726/http://www.simssource.net/) since the mid 00s
- I started my full time career at IBM in 2011 in their [CICS transaction processing product](https://www.ibm.com/it-infrastructure/z/cics) before moving over to Watson where I was a customer-facing solutions architect which entailed helping other techies to use Watson APIs and services.
- In 2016 I left IBM to co-found [Filament AI](https://filament.ai), formerly an AI & ML consultancy and now a software product business where I am currently CTO and Chief Data Scientist. I oversee and manage our technical roadmap and strategy, but I also keep my hands dirty and regularly deliver code for customers and for our products.
- In 2022 I wrapped up up my part-time PhD which I've been working on under the dual supervision of [Prof. Maria Liakata](https://www.turing.ac.uk/people/researchers/maria-liakata) at the [Alan Turing Institute](https://www.turing.ac.uk/) [Dr Amanda Clare](https://users.aber.ac.uk/afc/) at Aberystwth University (where I finished my BSc in 2013).
- My main academic affiliation was with [University of Warwick](https://warwick.ac.uk/fac/sci/dcs/) but, I often crash Turing events and, I've been known to visit Aberystwyth to give talks at careers events and departmental seminars.
## What I do for fun
- I'm a big fan of food - both cooking and eating it.
- I like to tinker with software and hardware (like [this talking moose head](/2016/06/05/blackgangpi-a-raspberry-pi-hack-at-blackgang-chine/)) in my spare time. I'm a big fan of open source culture including efforts to decentralise the web like [indieweb](https://indieweb.org/) and [the fediverse](https://fediverse.party/en/fediverse).
- I like to read, frequently science fiction and fantasy but the occasional pop-sci title or general fiction. I have historically tracked some of my reading over at [Goodreads](https://www.goodreads.com/user/show/4547536-james-ravenscroft) but I now keep track with [Bookwyrm](https://bookwyrm.social/user/jamesravey) and eventually I plan to start tracking this stuff here via [bookwyrm](https://indiebookclub.biz/) and micropub.
- I like to watch box sets and movies - my wife and I are [Cineworld Unlimited card](cineworld.co.uk/) holders.
- I've been playing saxophone (Alto and Tenor mainly) off-and-on since the early 2000s. I can also play a few chords on a guitar and I'll happily tinker with a piano/keyboard, harmonica and clarinet although don't ask me to play you a full track!
- Although I've not had time recently I did really enjoy [Lindyhop](/2015/06/28/bedford-place-vintage-festival/) - a 1920s style swing dance.
## About The Site
I'm using some icons from SVGRepo like:
- [the link icon](https://www.svgrepo.com/svg/525988/link)
- [the like icon](https://www.svgrepo.com/svg/506227/like)
- [the comment icon](https://www.svgrepo.com/svg/522070/comment-3)
- [the repost icon](https://www.svgrepo.com/svg/469632/retweet)
- [the mastodon icon](https://www.svgrepo.com/svg/362235/mastodon-simple)
in all cases I've made some small changes to the svg metadata - you're free to copy and make similar changes to these according to [the license](https://www.svgrepo.com/page/licensing#CC%20Attribution)
- I'm a big fan of food - both cooking and eating it.
- I like to tinker with software and hardware (like [this talking moose head](/2016/06/05/blackgangpi-a-raspberry-pi-hack-at-blackgang-chine/)) in my spare time. I'm a big fan of open source culture including efforts to decentralise the web like [indieweb](https://indieweb.org/) and [the fediverse](https://fediverse.party/en/fediverse).
- I like to read, frequently science fiction and fantasy but the occasional pop-sci title or general fiction. I have historically tracked some of my reading over at [Goodreads](https://www.goodreads.com/user/show/4547536-james-ravenscroft) but I now keep track with [Bookwyrm](https://bookwyrm.social/user/jamesravey) and eventually I plan to start tracking this stuff here via [bookwyrm](https://indiebookclub.biz/) and micropub.
- I like to watch box sets and movies - my wife and I are [Cineworld Unlimited card](cineworld.co.uk/) holders.
- I've been playing saxophone (Alto and Tenor mainly) off-and-on since the early 2000s. I can also play a few chords on a guitar and I'll happily tinker with a piano/keyboard, harmonica and clarinet although don't ask me to play you a full track!
- Although I've not had time recently I did really enjoy [Lindyhop](/2015/06/28/bedford-place-vintage-festival/) - a 1920s style swing dance.

View File

@ -1,4 +0,0 @@
---
post_meta:
- date
---

View File

@ -1,4 +0,0 @@
---
post_meta:
- date
---

View File

@ -2,16 +2,15 @@
date: 2023-02-01 09:39:03+00:00
description: Why you shouldn't use async in your new Promise()
mp-syndicate-to:
- https://brid.gy/publish/mastodon
- https://brid.gy/publish/twitter
- https://brid.gy/publish/mastodon
- https://brid.gy/publish/twitter
post_meta:
- date
- date
tags:
- nodejs
- typescript
- javascript
- softeng
- null
- nodejs
- typescript
- javascript
- softeng
title: Async Promise Constructors
type: posts
url: /2023/2/1/async-promise-constructors
@ -22,24 +21,22 @@ I ran into an interesting typescript/js problem yesterday at work.
The following code snippet was generating an error and a stack trace that was never being propagated up to the caller:
```typescript
return new Promise(async (resolve, reject) =>{
return new Promise(async (resolve, reject) => {
const data = await this.client.getObject(bucket, path);
const data = await this.client.getObject(bucket, path)
const buf: any[] = [];
const buf : any[] = []
data.on("data", (data) => {
buf.push(data);
});
data.on('data', (data) => {
buf.push(data)
})
data.on('error', (err) => {
reject(err)
})
data.on('end', ()=>{
resolve(JSON.parse(Buffer.concat(buf).toString()))
})
data.on("error", (err) => {
reject(err);
});
data.on("end", () => {
resolve(JSON.parse(Buffer.concat(buf).toString()));
});
});
```
@ -47,31 +44,32 @@ The code basically uses [minio](https://min.io/)'s client library to get the con
Seasoned js folks may have already spotted the problem (or at least guessed it based on the blog post title).
I'ved used an `async` function inside my Promise constructor. I'm doing this so that I can make my async call to S3 but this has the added side effect of turning my promise constructer itself into a promise (promise-ception?). Promise constructors can't `await` so effectively if the `getObject` async call fails, the error is lost and nothing happens and the outer promise is never resolved or rejected.
I'ved used an `async` function inside my Promise constructor. I'm doing this so that I can make my async call to S3 but this has the added side effect of turning my promise constructer itself into a promise (promise-ception?). Promise constructors can't `await` so effectively if the `getObject` async call fails, the error is lost and nothing happens and the outer promise is never resolved or rejected.
As it turns out, [eslint has a rule for this](https://eslint.org/docs/latest/rules/no-async-promise-executor) which I had turned off.
As it turns out, [eslint has a rule for this](https://eslint.org/docs/latest/rules/no-async-promise-executor) which I had turned off.
### Solution
I could make the getObject outer function async and then do the `getObject()` call in the outer layer:
```typescript
async function someFunction() {
const data = await this.client.getObject(bucket, path);
async function someFunction(){
return new Promise((resolve, reject) => {
const buf: any[] = [];
const data = await this.client.getObject(bucket, path)
return new Promise((resolve, reject) =>{
const buf : any[] = []
data.on('data', (data) => { buf.push(data) })
data.on('error', (err) => { reject(err) })
data.on('end', ()=>{
resolve(JSON.parse(Buffer.concat(buf).toString()))
})
data.on("data", (data) => {
buf.push(data);
});
data.on("error", (err) => {
reject(err);
});
data.on("end", () => {
resolve(JSON.parse(Buffer.concat(buf).toString()));
});
});
}
```
Now if the `getObject` call fails the whole `someFunction()` fails (effectively the promise that is generated by use of the await/async syntactic sugar is rejected).
Now if the `getObject` call fails the whole `someFunction()` fails (effectively the promise that is generated by use of the await/async syntactic sugar is rejected).

View File

@ -10,7 +10,7 @@ post_meta:
resources:
- name: feature
src: images/language.jpg
thumbnail: /2023/3/25//nlp-is-more-than-just-llms/images/language.jpg
thumbnail: images/language.jpg
tags:
- nlp
- llms

View File

@ -12,7 +12,7 @@ tags:
- personal
- ai
- ml
thumbnail: /2023/6/17/xavier-the-spotify-dj/images/dj.png
thumbnail: images/dj.png
title: Xavier the Spotify AI DJ
type: posts
url: /2023/6/17/xavier-the-spotify-dj

View File

@ -0,0 +1,16 @@
---
title: "Turbopilot"
date: 2023-08-05T19:40:53+01:00
draft: true
description: short summary
url: /2023/8/5/turbopilot
type: posts
mp-syndicate-to:
- https://brid.gy/publish/mastodon
- https://brid.gy/publish/twitter
tags:
- post
---
In April I caught COVID and while I was stuck at home I got bored with sitting around feeling sorry for myself, so I decided to play around with

View File

@ -0,0 +1,14 @@
---
title: "FreshRSS Updates"
date: 2023-08-13T08:39:05+01:00
description: Troubleshooting some freshrss maaintenance issues
url: /2023/8/13/freshrss-updates
type: posts
mp-syndicate-to:
- https://brid.gy/publish/mastodon
- https://brid.gy/publish/twitter
tags:
- rss
- selfhosting
---

View File

@ -0,0 +1,4 @@
<svg viewBox="0 0 360 320" xmlns="http://www.w3.org/2000/svg">
<path d="M254.896 184.158C252.81 183.926 250.733 183.645 248.671 183.315C250.773 183.574 252.849 183.855 254.896 184.158Z"/>
<path d="M180 141.964C163.699 110.262 119.308 51.1817 78.0347 22.044C38.4971 -5.86834 23.414 -1.03207 13.526 3.43594C2.08093 8.60755 0 26.1785 0 36.5164C0 46.8542 5.66748 121.272 9.36416 133.694C21.5786 174.738 65.0603 188.607 105.104 184.156C107.151 183.852 109.227 183.572 111.329 183.312C109.267 183.642 107.19 183.924 105.104 184.156C46.4204 192.847 -5.69621 214.233 62.6582 290.33C137.848 368.18 165.705 273.637 180 225.702C194.295 273.637 210.76 364.771 295.995 290.33C360 225.702 313.58 192.85 254.896 184.158C252.81 183.926 250.733 183.645 248.671 183.315C250.773 183.574 252.849 183.855 254.896 184.158C294.94 188.61 338.421 174.74 350.636 133.697C354.333 121.275 360 46.8568 360 36.519C360 26.1811 357.919 8.61012 346.474 3.43851C336.586 -1.02949 321.503 -5.86576 281.965 22.0466C240.692 51.1843 196.301 110.262 180 141.964Z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z"/></svg>

After

Width:  |  Height:  |  Size: 754 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"/></svg>

After

Width:  |  Height:  |  Size: 906 B

View File

@ -0,0 +1,3 @@
<svg class="w-6 h-6 text-gray-800 dark:text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" viewBox="0 0 24 24">
<path fill-rule="evenodd" d="M9.484 6.743c.41-.368.443-1 .077-1.41a.99.99 0 0 0-1.405-.078L2.67 10.203l-.007.006A2.048 2.048 0 0 0 2 11.721a2.058 2.058 0 0 0 .662 1.51l5.584 5.09a.99.99 0 0 0 1.405-.07 1.003 1.003 0 0 0-.07-1.412l-5.577-5.082a.05.05 0 0 1 0-.072l5.48-4.942Zm6.543 9.199v-.42a4.168 4.168 0 0 1 2.715 2.415c.154.382.44.695.806.88a1.683 1.683 0 0 0 2.167-.571c.214-.322.312-.707.279-1.092V15.88c0-3.77-2.526-7.039-5.966-7.573V7.57a1.957 1.957 0 0 0-.994-1.838 1.931 1.931 0 0 0-2.153.184L7.8 10.164a.753.753 0 0 0-.012.011l-.011.01a2.098 2.098 0 0 0-.703 1.57 2.108 2.108 0 0 0 .726 1.59l5.08 4.25a1.933 1.933 0 0 0 2.929-.614c.167-.32.242-.68.218-1.04Z" clip-rule="evenodd"/>
</svg>

After

Width:  |  Height:  |  Size: 869 B

View File

@ -0,0 +1,15 @@
<svg
class="w-6 h-6 text-gray-800 dark:text-white"
aria-hidden="true"
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
fill="currentColor"
viewBox="0 0 24 24"
>
<path
fill-rule="evenodd"
d="M15.03 9.684h3.965c.322 0 .64.08.925.232.286.153.532.374.717.645a2.109 2.109 0 0 1 .242 1.883l-2.36 7.201c-.288.814-.48 1.355-1.884 1.355-2.072 0-4.276-.677-6.157-1.256-.472-.145-.924-.284-1.348-.404h-.115V9.478a25.485 25.485 0 0 0 4.238-5.514 1.8 1.8 0 0 1 .901-.83 1.74 1.74 0 0 1 1.21-.048c.396.13.736.397.96.757.225.36.32.788.269 1.211l-1.562 4.63ZM4.177 10H7v8a2 2 0 1 1-4 0v-6.823C3 10.527 3.527 10 4.176 10Z"
clip-rule="evenodd"
/>
</svg>

After

Width:  |  Height:  |  Size: 650 B

View File

@ -0,0 +1,17 @@
<svg
class="w-6 h-6 text-gray-800 dark:text-white"
aria-hidden="true"
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
fill="none"
viewBox="0 0 24 24"
>
<path
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="m16 10 3-3m0 0-3-3m3 3H5v3m3 4-3 3m0 0 3 3m-3-3h14v-3"
/>
</svg>

After

Width:  |  Height:  |  Size: 331 B

View File

@ -0,0 +1,13 @@
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="like-icon" viewBox="0 0 24 24">
<path fill-rule="evenodd" d="M15.03 9.684h3.965c.322 0 .64.08.925.232.286.153.532.374.717.645a2.109 2.109 0 0 1 .242 1.883l-2.36 7.201c-.288.814-.48 1.355-1.884 1.355-2.072 0-4.276-.677-6.157-1.256-.472-.145-.924-.284-1.348-.404h-.115V9.478a25.485 25.485 0 0 0 4.238-5.514 1.8 1.8 0 0 1 .901-.83 1.74 1.74 0 0 1 1.21-.048c.396.13.736.397.96.757.225.36.32.788.269 1.211l-1.562 4.63ZM4.177 10H7v8a2 2 0 1 1-4 0v-6.823C3 10.527 3.527 10 4.176 10Z" clip-rule="evenodd" />
</symbol>
<symbol id="repost-icon" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m16 10 3-3m0 0-3-3m3 3H5v3m3 4-3 3m0 0 3 3m-3-3h14v-3" />
</symbol>
<symbol id="comment-icon" viewBox="0 0 24 24">
<path fill-rule="evenodd" d="M9.484 6.743c.41-.368.443-1 .077-1.41a.99.99 0 0 0-1.405-.078L2.67 10.203l-.007.006A2.048 2.048 0 0 0 2 11.721a2.058 2.058 0 0 0 .662 1.51l5.584 5.09a.99.99 0 0 0 1.405-.07 1.003 1.003 0 0 0-.07-1.412l-5.577-5.082a.05.05 0 0 1 0-.072l5.48-4.942Zm6.543 9.199v-.42a4.168 4.168 0 0 1 2.715 2.415c.154.382.44.695.806.88a1.683 1.683 0 0 0 2.167-.571c.214-.322.312-.707.279-1.092V15.88c0-3.77-2.526-7.039-5.966-7.573V7.57a1.957 1.957 0 0 0-.994-1.838 1.931 1.931 0 0 0-2.153.184L7.8 10.164a.753.753 0 0 0-.012.011l-.011-.10a2.098 2.098 0 0 0-.703 1.57 2.108 2.108 0 0 0 0 .726 1.59l5.08 4.25a1.933 1.933 0 0 0 2.929-.614c.167-.32.242-.68.218-1.04Z" clip-rule="evenodd"/>
</symbol>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@ -1 +1 @@
Subproject commit c1b6060453911a7d30108286df4533303a615d82
Subproject commit b8cb96f370a009c5cb487147a96c71f52613af7d

@ -0,0 +1 @@
Subproject commit 4739bdb60036bd783ebd04fbf5151ab6346a63c9