Compare commits

..

No commits in common. "master" and "aa059dfe0a4c30075c36b39b47c3571d6c3f732e" have entirely different histories.

28 changed files with 106 additions and 342 deletions

View file

@ -1,2 +0,0 @@
---
BUNDLE_PATH: "vendor/bundle"

1
.gitignore vendored
View file

@ -3,4 +3,3 @@ _site
.jekyll-cache .jekyll-cache
.jekyll-metadata .jekyll-metadata
vendor vendor
*.kate-swp

View file

@ -1,46 +0,0 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="GrazieInspection" enabled="false" level="TYPO" enabled_by_default="false" />
<inspection_tool class="PyAugmentAssignmentInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
<inspection_tool class="PyComparisonWithNoneInspection" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="PyCompatibilityInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ourVersions">
<value>
<list size="6">
<item index="0" class="java.lang.String" itemvalue="3.6" />
<item index="1" class="java.lang.String" itemvalue="3.7" />
<item index="2" class="java.lang.String" itemvalue="3.8" />
<item index="3" class="java.lang.String" itemvalue="3.9" />
<item index="4" class="java.lang.String" itemvalue="3.10" />
<item index="5" class="java.lang.String" itemvalue="3.10" />
</list>
</value>
</option>
</inspection_tool>
<inspection_tool class="PyInconsistentIndentationInspection" enabled="true" level="ERROR" enabled_by_default="true" />
<inspection_tool class="PyMissingTypeHintsInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
<inspection_tool class="PyPep8Inspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<option name="ignoredErrors">
<list>
<option value="E302" />
<option value="E305" />
<option value="E261" />
<option value="E128" />
<option value="E124" />
<option value="W191" />
</list>
</option>
</inspection_tool>
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredIdentifiers">
<list>
<option value="mutagen.id3._frames.APIC.*" />
<option value="music_tools.note.Note" />
</list>
</option>
</inspection_tool>
<inspection_tool class="RedundantNotNullExtensionReceiverOfInline" enabled="true" level="INFORMATION" enabled_by_default="true" />
<inspection_tool class="RegExpRepeatedSpace" enabled="true" level="INFORMATION" enabled_by_default="true" />
</profile>
</component>

View file

@ -7,7 +7,7 @@ source "https://rubygems.org"
# #
# This will help ensure the proper Jekyll version is running. # This will help ensure the proper Jekyll version is running.
# Happy Jekylling! # Happy Jekylling!
gem "jekyll", "~> 4.3.3" gem "jekyll", "~> 4.2.0"
# This is the default theme for new Jekyll sites. You may change this to anything you like. # This is the default theme for new Jekyll sites. You may change this to anything you like.
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and # If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`. # uncomment the line below. To upgrade, run `bundle update github-pages`.
@ -20,12 +20,12 @@ end
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library. # and associated library.
install_if -> { RUBY_PLATFORM =~ %r!mingw|mswin|java! } do install_if -> { RUBY_PLATFORM =~ %r!mingw|mswin|java! } do
gem "tzinfo", "~> 2.0" gem "tzinfo", "~> 1.2"
gem "tzinfo-data" gem "tzinfo-data"
end end
# Performance-booster for watching directories on Windows # Performance-booster for watching directories on Windows
gem "wdm", "~> 0.1.1", :install_if => Gem.win_platform? gem "wdm", "~> 0.1.1", :install_if => Gem.win_platform?
# fix for https://github.com/sass/sassc-ruby/issues/146
gem "sassc", "< 2.2.0" gem "webrick", "~> 1.7"

View file

@ -1,87 +1,78 @@
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
addressable (2.8.7) addressable (2.7.0)
public_suffix (>= 2.0.2, < 7.0) public_suffix (>= 2.0.2, < 5.0)
bigdecimal (3.1.8)
colorator (1.1.0) colorator (1.1.0)
concurrent-ruby (1.3.4) concurrent-ruby (1.1.8)
em-websocket (0.5.3) em-websocket (0.5.2)
eventmachine (>= 0.12.9) eventmachine (>= 0.12.9)
http_parser.rb (~> 0) http_parser.rb (~> 0.6.0)
eventmachine (1.2.7) eventmachine (1.2.7)
ffi (1.17.0-x86_64-linux-gnu) ffi (1.15.0)
forwardable-extended (2.6.0) forwardable-extended (2.6.0)
google-protobuf (4.27.4-x86_64-linux) http_parser.rb (0.6.0)
bigdecimal i18n (1.8.10)
rake (>= 13)
http_parser.rb (0.8.0)
i18n (1.14.5)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
jekyll (4.3.3) jekyll (4.2.0)
addressable (~> 2.4) addressable (~> 2.4)
colorator (~> 1.0) colorator (~> 1.0)
em-websocket (~> 0.5) em-websocket (~> 0.5)
i18n (~> 1.0) i18n (~> 1.0)
jekyll-sass-converter (>= 2.0, < 4.0) jekyll-sass-converter (~> 2.0)
jekyll-watch (~> 2.0) jekyll-watch (~> 2.0)
kramdown (~> 2.3, >= 2.3.1) kramdown (~> 2.3)
kramdown-parser-gfm (~> 1.0) kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0) liquid (~> 4.0)
mercenary (>= 0.3.6, < 0.5) mercenary (~> 0.4.0)
pathutil (~> 0.9) pathutil (~> 0.9)
rouge (>= 3.0, < 5.0) rouge (~> 3.0)
safe_yaml (~> 1.0) safe_yaml (~> 1.0)
terminal-table (>= 1.8, < 4.0) terminal-table (~> 2.0)
webrick (~> 1.7) jekyll-sass-converter (2.1.0)
jekyll-sass-converter (3.0.0) sassc (> 2.0.1, < 3.0)
sass-embedded (~> 1.54)
jekyll-watch (2.2.1) jekyll-watch (2.2.1)
listen (~> 3.0) listen (~> 3.0)
kramdown (2.4.0) kramdown (2.3.1)
rexml rexml
kramdown-parser-gfm (1.1.0) kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0) kramdown (~> 2.0)
liquid (4.0.4) liquid (4.0.3)
listen (3.9.0) listen (3.5.1)
rb-fsevent (~> 0.10, >= 0.10.3) rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10) rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0) mercenary (0.4.0)
pathutil (0.16.2) pathutil (0.16.2)
forwardable-extended (~> 2.6) forwardable-extended (~> 2.6)
public_suffix (6.0.1) public_suffix (4.0.6)
rake (13.2.1) rb-fsevent (0.10.4)
rb-fsevent (0.11.2) rb-inotify (0.10.1)
rb-inotify (0.11.1)
ffi (~> 1.0) ffi (~> 1.0)
rexml (3.3.6) rexml (3.2.5)
strscan rouge (3.26.0)
rouge (4.3.0)
safe_yaml (1.0.5) safe_yaml (1.0.5)
sass-embedded (1.77.8-x86_64-linux-gnu) sassc (2.4.0)
google-protobuf (~> 4.26)
sassc (2.1.0-x86_64-linux)
ffi (~> 1.9) ffi (~> 1.9)
strscan (3.1.0) terminal-table (2.0.0)
terminal-table (3.0.2) unicode-display_width (~> 1.1, >= 1.1.1)
unicode-display_width (>= 1.1.1, < 3) thread_safe (0.3.6)
tzinfo (2.0.6) tzinfo (1.2.9)
concurrent-ruby (~> 1.0) thread_safe (~> 0.1)
tzinfo-data (1.2024.1) tzinfo-data (1.2021.1)
tzinfo (>= 1.0.0) tzinfo (>= 1.0.0)
unicode-display_width (2.5.0) unicode-display_width (1.7.0)
wdm (0.1.1) wdm (0.1.1)
webrick (1.8.1) webrick (1.7.0)
PLATFORMS PLATFORMS
x86_64-linux x86_64-linux
DEPENDENCIES DEPENDENCIES
jekyll (~> 4.3.3) jekyll (~> 4.2.0)
sassc (< 2.2.0) tzinfo (~> 1.2)
tzinfo (~> 2.0)
tzinfo-data tzinfo-data
wdm (~> 0.1.1) wdm (~> 0.1.1)
webrick (~> 1.7)
BUNDLED WITH BUNDLED WITH
2.4.10 2.2.16

View file

@ -3,28 +3,20 @@ lynnesbian.space
This is the Jekyll site directory for [lynnesbian.space](https://lynnesbian.space). I can't really see anyone getting This is the Jekyll site directory for [lynnesbian.space](https://lynnesbian.space). I can't really see anyone getting
much use out of the source for the website, but there's not really a reason *not* to publish it, so whatever. much use out of the source for the website, but there's not really a reason *not* to publish it, so whatever.
## Getting started
```bash
git clone https://git.bune.city/lynnesbian/lynnespace
cd lynnespace
gem install bundler
bundler install
```
## Licensing ## Licensing
This is gonna get complicated, but here goes: This is gonna get complicated, but here goes:
- The provided HTML, JavaScript, and CSS files are licensed under the Expat license (aka the "MIT license"). - The provided HTML, JavaScript, and CSS files are licensed under the Expat license (aka the "MIT license").
- `favicon.ico` and `favicon.png` are both CC-BY-SA. - `favicon.ico` and `favicon.png` are both CC-BY-SA.
- All files in the `/_projects` directory are CC-BY-SA. - All files in the `/_data` and `/_projects` directories are CC-BY-SA.
- All other files are Expat licensed. - All other files are Expat licensed.
- If files seem to be licensed under two licenses (my bad), assume Expat. - If files seem to be licensed under two licenses (my bad), assume Expat.
In other words: You can use the JavaScript, HTML, and CSS content of this website without attribution (although I would In other words: You can use the JavaScript, HTML, and CSS content of this website without attribution (although I would
prefer it if you did provide attribution). You can also do whatever you want with the files in `/_projects`, but you prefer it if you did provide attribution). You can also do whatever you want with the files in `/_data` and
must provide attribution for these files, and any derivative works made with them must also be CC-BY-SA licensed. `/_projects`, but you must provide attribution for these files, and any derivative works made with them must also be
CC-BY-SA licensed.
### Links to licenses used ### Links to licenses used
- [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/legalcode) - [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0/legalcode)

View file

@ -15,8 +15,8 @@ defaults:
collections: collections:
content: content:
output: true output: true
permalink: /:name:output_ext permalink: /:name
projects: projects:
output: true output: true
permalink: /:collection/:name:output_ext permalink: /:collection/:name

View file

@ -3,11 +3,10 @@ title: About
--- ---
{% include h.html level=2 content="What I do" %} {% include h.html level=2 content="What I do" %}
<p> <p>
My interests include creating and improving free software, learning all I can about computer science, playing I'm Lynne. My interests include creating free software, playing story-driven games, photography, and writing.
story-driven games, photography, and writing.
</p> </p>
<p> <p>
Much of what I do with computers is about helping people, whether that's through writing simple scripts to automate Most of what I do with computers is about helping people, whether that's through writing simple scripts to automate
things or writing software to make things more accessible. things or writing software to make things more accessible.
</p> </p>
<p> <p>
@ -16,25 +15,18 @@ title: About
contraptions and logic machines to accomplish tasks within the game. contraptions and logic machines to accomplish tasks within the game.
</p> </p>
<p> <p>
The type of software I want to create most is that which helps people, whether it be through providing or improving While making games and tools was (and is) enjoyable to me, what I want to do most is create software that helps
on accessibility options, creating tools that aim to simplify complex tasks, or even writing documentation that people - I find it by far my greatest motivator.
makes existing software easier to use - I find it by far my greatest motivator.
</p> </p>
<p> <p>
I don't really consider myself a <em>hardcore gamer</em>, but I do enjoy video games - usually those with a focus on I don't really consider myself a <em>hardcore gamer</em>, but I do enjoy video games - usually those with a focus on
creativity or story. I've tried to make a few games before, but never completed any outside of short little minigames creativity or story. I've tried to make a few games before, but never completed any outside of short little minigames
and TI-84 calculator toys. I'd like to make a few small games of my own, and I'm really interested in one day making and TI-84 calculator toys. I'd like to make a few small games of my own, and I'm really interested in one day making
mods for existing games to make them more accessible - lowering difficulty, removing epilepsy-triggering sequences, mods for existing games to make them more accessible - lowering difficulty, removing epilepsy-triggering sequences,
removing potentially phobia-inducing elements, and so on. {% comment %} FOOTNOTE - why do so many games have removing potentially phobia-inducing elements, etc. {% comment %} FOOTNOTE - why do so many games have spiders!!!! {% endcomment %}
spiders!!!! {% endcomment %}
</p> </p>
{% comment %} {% comment %}
{% include h.html level=3 content="Some things I've made" %} {% include h.html level=3 content="Some things I've made" %}
<p>
<a href="https://gitlab.com/Lynnesbian/fif">fif</a> is a tool to find and optionally correct files with misnamed
extensions. It's written in Rust, partially to teach myself the language, and partially because it's (in my
opinion) a more suitable language for a small CLI project like this than something like C# or Python.
</p>
<p> <p>
I've made a lot of software to help my wife Petra, but much of it is too specific to her needs to be useful on a I've made a lot of software to help my wife Petra, but much of it is too specific to her needs to be useful on a
greater scale, with perhaps a few exceptions, such as greater scale, with perhaps a few exceptions, such as
@ -51,22 +43,26 @@ title: About
{% include h.html level=2 content="What I use" %} {% include h.html level=2 content="What I use" %}
<p> <p>
All my computers and laptops run Linux, perhaps unsurprisingly. I mainly stick to All my computers and laptops run Linux, perhaps unsurprisingly. I mainly stick to
<a href="https://fedoraproject.org">Fedora</a> and <a href="https://debian.org">Debian</a>, although in the past I <a href="https://archlinux.org">Arch</a> and <a href="https://debian.org">Debian</a>. Every Android phone I've ever
used <a href="https://archlinux.org">Arch</a>. Up until my most recent one, every Android phone I've ever
owned (with the exception of <a href="https://www.gsmarena.com/huawei_u8150_ideos-3513.php">my very first</a>) ended owned (with the exception of <a href="https://www.gsmarena.com/huawei_u8150_ideos-3513.php">my very first</a>) ended
up running <a href="https://en.wikipedia.org/wiki/CyanogenMod">Cyanogenmod</a> or up running <a href="https://en.wikipedia.org/wiki/CyanogenMod">Cyanogenmod</a> or
<a href="https://lineageos.org/">LineageOS</a> at some point, usually soon after purchase. One UI finally won me <a href="https://lineageos.org/">LineageOS</a> at some point, usually soon after purchase. This includes my current
over, and rooting phones is just too annoying now, with phone.
<a href="https://developer.android.com/google/play/integrity">Play Integrity</a> (formerly SafetyNet) and all that.
</p> </p>
<p> <p>
I consider myself an advocate for free and open source software, and all of my existing projects are licensed under I avoid proprietary and/or closed software wherever I can without hugely inconveniencing myself. The vast majority of
copyleft or permissive licences. the software on my computer(s) is free and open source. I am strongly opposed to almost all forms of
<a href="https://en.wikipedia.org/wiki/Digital_rights_management">DRM</a>, and either avoid buying media with it, or
remove it after purchase. For example, I buy all of my music from <a href="https://bandcamp.com/">Bandcamp</a> and
download the <a href="https://en.wikipedia.org/wiki/Ogg_Vorbis">OGG</a> version of the albums. I do this for both
ideological/philosophical and practical reasons.
</p> </p>
<p> <p>
I'm fairly active on the Fediverse, and I self-host Mastodon. You can follow me on I used to use social media (the <a href="https://en.wikipedia.org/wiki/Fediverse">Fediverse</a>, specifically) a fair
<a rel="me" href="https://fedi.lynnesbian.space/@lynnesbian">my account at fedi.lynnesbian.space</a>! amount, but I've since moved away from all forms of social media besides reddit (where I never post).
</p> </p>
<p> <p>
For info on what programming languages I tend to use, see <a href="skills.html">my skills page</a>. Most of my programming is done in <a href="https://rust-lang.org/">Rust</a> or <a href="https://python.org">Python</a>. I'm also somewhat familiar with
<a href="https://docs.microsoft.com/dotnet/csharp">C#</a> and
<a href="https://wikipedia.org/wiki/JavaScript">JavaScript</a>.
</p> </p>

View file

@ -1,7 +1,5 @@
--- ---
title: Contact title: Contact
--- ---
<p> I can by reached <a href="mailto:lynne@bune.city">by email</a>. If you find any bugs or issues with my software, feel
I can by reached <a href="mailto:lynne@bune.city">by email</a>. If you find any bugs or issues with my software, feel free to open an issue on the respective repository or email me.
free to open an issue on the respective repository or email me.
</p>

View file

@ -3,9 +3,8 @@ title: Home
custom_heading: true custom_heading: true
--- ---
<picture id="bune"> <picture id="bune">
<source type="image/webp" srcset="/assets/img/bune-smol.webp 1x, /assets/img/bune.webp 2x"> <source type="image/webp" srcset="/assets/img/bune.webp">
<img id="bune-img" src="/assets/img/bune.png" alt="A drawing of a rabbit with brown-tipped ears sniffing the air <img id="bune" src="/assets/img/bune.png" alt="A drawing of a rabbit with brown-tipped ears sniffing the air excitedly!" title="" style="">
excitedly!" title="">
</picture> </picture>
{% include h.html level=1 content="Lynnesbian dot Space" %} {% include h.html level=1 content="Lynnesbian dot Space" %}
@ -17,17 +16,12 @@ custom_heading: true
{% include h.html level=2 content="Quick Links" %} {% include h.html level=2 content="Quick Links" %}
<p> <p>
I'm on the Fediverse! Follow me: <a href="https://bune.city/">My blog</a> is updated very infrequently, and focuses mostly on technology and/or games.
<a rel="me" href="https://fedi.lynnesbian.space/@lynnesbian">@lynnesbian@fedi.lynnesbian.space</a>
</p>
<p>
<a href="https://bune.city/">My abandoned blog</a> updated very infrequently, and focused mostly on technology and/or
games.
</p> </p>
<p> <p>
My <a href="https://keybase.io/lynnesbian/pgp_keys.asc">public PGP key</a> is available on Keybase. I've proven My <a href="https://keybase.io/lynnesbian/pgp_keys.asc">public PGP key</a> is available on Keybase. I've proven
ownership of the lynnesbian Keybase account via ownership of the lynnesbian Keybase account via
<a href="//keybase.io/lynnesbian/sigchain#ad0cb53b48a917df3c369f64150672fc86be8bd946850269b81d25fd068626d30f">DNS</a>. <a href="https://keybase.io/lynnesbian/sigchain#ad0cb53b48a917df3c369f64150672fc86be8bd946850269b81d25fd068626d30f">DNS</a>.
</p> </p>
<p> <p>
I host a few small <a href="https://apt.bune.city">apt repository mirrors</a> on this server, along with I host a few small <a href="https://apt.bune.city">apt repository mirrors</a> on this server, along with

View file

@ -9,7 +9,7 @@ title: Projects
{% assign projects = site.projects | sort:"order" %} {% assign projects = site.projects | sort:"order" %}
{% for project in projects %} {% for project in projects %}
<div class="project"> <div class="project">
<h2>{{ project.name }} <span class="subtle"><em>{{ project.language }}</em></span></h2> <h2>{{ project.name }}</h2>
<p> <p>
{{ project.description }} {{ project.description }}
</p> </p>

View file

@ -53,7 +53,7 @@ layout: none
</TD> </TD>
<TD ID=" MAIN"> <TD ID=" MAIN">
<H2>Who?</H2> <H2>Who?</H2>
My name is Lynne, a twenty-five year old woman living in Australia (the land down under!) My name is Lynne, a twenty-two year old woman living in Australia (the land down under!)
<BR /> <BR />
<BR /> <BR />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -106,8 +106,14 @@ layout: none
that I that I
sound paranoid, but in my opinion, it's better safe than sorry. sound paranoid, but in my opinion, it's better safe than sorry.
<H2>Where?</H2> <H2>Where?</H2>
You won't find me on any data-slurping "social media" websites. Drop me a line at You won't find me on centralised blogging websites. You can, however, find me on the Fediverse - an
<A HREF='mailto:lynne@bune.city'>lynne@bune.city</A> if you need to get in touch. open
and federated social networking platform that allows for messages to flow freely from computer to
computer
through centralised servers ("instances") - without relying on a single point of failure. Drop me a
line at <A HREF='@lynnesbian@fedi.lynnesbian.space'>@lynnesbian@fedi.lynnesbian.space</A>, or if
you're more
old-school, you can email me at <A HREF='mailto:lynne@bune.city'>lynne@bune.city</A>.
<H2>When?</H2> <H2>When?</H2>
Until the end of cyber freedom as we know it, the webmasters, webmistresses and webmakers of the Until the end of cyber freedom as we know it, the webmasters, webmistresses and webmakers of the

View file

@ -1,32 +0,0 @@
---
title: Skills
---
{% include h.html level=2 content="Languages" %}
I'm most comfortable with...
<ul>
<li><a href="https://rust-lang.org/">Rust</a> - my preferred language, and my default for new CLI/TUI projects</li>
<li><a href="https://python.org">Python</a> - my go-to scripting/glue language</li>
<li><a href="https://docs.microsoft.com/dotnet/csharp">C#</a> - my usual pick for GUI projects</li>
</ul>
I'm fairly capable with...
<ul>
<li><a href="https://wikipedia.org/wiki/JavaScript">JavaScript</a></li>
<li><a href="https://wikipedia.org/wiki/HTML">HTML</a>/<a href="https://wikipedia.org/wiki/CSS">CSS</a></li>
<li><a href="https://www.gnu.org/software/bash/manual/bash.html">Bash</a></li>
</ul>
I'm currently learning...
<ul>
<li><a href="https://isocpp.org">C++</a> - while I much prefer Rust, C++ has a far larger established base, and
learning either it or C (preferably both) is near-essential for systems programming, particularly when working
with Linux internals</li>
<li><a href="https://en.wikipedia.org/wiki/C_(programming_language)">C</a> - a very useful language for both
working with established codebases and for writing software for small, low-power devices, such as in the context
of embedded hardware.</li>
<li><a href="https://kotlinlang.org">Kotlin</a> - my personal favourite of the various JVM languages. Java is
widespread in many industries, and Kotlin provides near-seamless Java interop. Knowing at least one JVM
language should be very helpful for integrating with existing established codebases.</li>
<li><a href="https://ziglang.org">Zig</a> - Zig's alluring promise of a better C captured my attention, and I quite
enjoy its <tt>comptime</tt> paradigm, ease of configuring allocators, and philosophy around error handling.</li>
</ul>

View file

@ -3,12 +3,12 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<link rel="stylesheet" type="text/css" href="/assets/style.css"> <link rel="stylesheet" type="text/css" href="/assets/style.css">
<link rel="stylesheet" type="text/css" href="/assets/fonts/fonts.css"> <link rel="stylesheet" type="text/css" href="/assets/fonts/fonts.css">
<link rel="shortcut icon" href="/assets/img/favicon.png"> <link rel="shortcut icon" href="/assets/img/favicon.png">
<script src='/assets/script.js'></script> <script src='/assets/script.js'></script>
<script async src="https://ackee.lynnesbian.space/script.js" data-ackee-server="https://ackee.lynnesbian.space" data-ackee-domain-id="f0217e7d-ec2a-4a9b-baf3-d2d2215810ba"></script> {% comment %}<script async src="https://ackee.lynnesbian.space/script.js" data-ackee-server="https://ackee.lynnesbian.space" data-ackee-domain-id="f0217e7d-ec2a-4a9b-baf3-d2d2215810ba"></script>{% endcomment %}
<title>{{ page.title | default: "lynnesbian dot space" }}</title> <title>{{ page.title | default: "lynnesbian dot space" }}</title>
<meta property="og:title" content="{{ page.title | default: 'Henlo!' }}"> <meta property="og:title" content="{{ page.title | default: 'Henlo!' }}">
<meta property="og:site_name" content="lynnesbian dot space"> <meta property="og:site_name" content="lynnesbian dot space">
@ -21,22 +21,20 @@
<body> <body>
<header> <header>
<section id="header-content"> <section id="header-content">
<a href="/"> <picture id="logo">
<picture id="logo"> <source type="image/webp" srcset="/assets/img/lynnesoft-centred.png">
<source type="image/webp" srcset="/assets/img/lynnesoft-centred.webp"> <img id="logo"
<img id="logo" src="/assets/img/lynnesoft-centred.png"
src="/assets/img/lynnesoft-centred.png" alt="A cyan-purple parallelogram with an outline of the letter L in its bottom-left corner."
alt="A cyan-purple parallelogram with an outline of the letter L in its bottom-left corner." height="442"
height="442" width="607">
width="607"> </picture>
</picture>
</a>
<nav> <nav>
<a href='/' {%- if page.title == "Home" %} class='current'{% endif -%}>Home</a> <a href='/' {%- if page.title == "Home" %} class='current'{% endif -%}>Home</a>
{%- for html_page in site.content -%} {%- for html_page in site.content -%}
{%- unless html_page.title == 'Home' -%} {%- unless html_page.url == '/index' -%}
<a href='{{ html_page.url }}' {%- if page.title == html_page.title or layout.sidebar_title == html_page.title %} class='current'{% endif -%}> <a href='{{ html_page.url }}' {%- if page.title == html_page.title %} class='current'{% endif -%}>
{{ html_page.title }} {{ html_page.title }}
</a> </a>
{%- endunless -%} {%- endunless -%}

View file

@ -1,15 +1,11 @@
--- ---
layout: default layout: default
sidebar_title: Projects
--- ---
{% comment %}<h1>{{ page.name }}</h1>{% endcomment %}
<div class='subheading-links'> <div class='subheading-links'>
{% if page.source %}<a href='{{ page.source }}'>Source code</a>{% endif %} {% if page.source %}<a href='{{ project.source }}'>Source code</a>{% endif %}
{% if page.website %}<a href='{{ page.website }}'>Website</a>{% endif %} {% if page.website %}<a href='{{ project.website }}'>Website</a>{% endif %}
</div> </div>
<div id="project-language">Written in {{ page.language }}</div>
<p>{{ page.description }}</p> <p>{{ page.description }}</p>
{{ content | rstrip | default: "There's nothing here yet." }} {{ content | rstrip | default: "There's nothing here yet." }}
{% if page.image %}
<img class="project-image" alt="A screenshot of {{ page.name }}." src="{{ page.image }}" />
{% endif %}
<a href="/projects.html">Back to all projects</a> <a href="/projects.html">Back to all projects</a>

View file

@ -1,38 +0,0 @@
require "liquid"
require "jekyll"
module Jekyll
module LynnesbianDotSpaceFilters
def ansi_colour(code)
"\u001b[38;5;#{code}m"
end
def ansi_bg(code)
"\u001b[48;5;#{code}m"
end
end
class AnsiResetTag < Liquid::Tag
def render(context)
"\u001b[0m"
end
end
class AnsiBoldTag < Liquid::Tag
def render(context)
"\u001b[1m"
end
end
class AnsiUnderlineTag < Liquid::Tag
def render(context)
"\u001b[4m"
end
end
end
Liquid::Template.register_filter(Jekyll::LynnesbianDotSpaceFilters)
Liquid::Template.register_tag('ansi_reset', Jekyll::AnsiResetTag)
Liquid::Template.register_tag('ansi_bold', Jekyll::AnsiBoldTag)
Liquid::Template.register_tag('ansi_underline', Jekyll::AnsiUnderlineTag)

View file

@ -3,6 +3,6 @@ name: BuyPeeb
description: BuyPeeb is a simple program that allows you to track auctions on Yahoo Auctions Japan. description: BuyPeeb is a simple program that allows you to track auctions on Yahoo Auctions Japan.
source: https://git.bune.city/lynnesbian/buypeeb-cs source: https://git.bune.city/lynnesbian/buypeeb-cs
language: C# language: C#
order: "05" order: "02"
--- ---
I made it for my wife Petra some time ago, and I haven't really been working on or updating it. I made it for my wife Petra some time ago, and I haven't really been working on or updating it.

View file

@ -4,8 +4,7 @@ title: fif
description: fif is a command-line tool for detecting and optionally correcting files with incorrect extensions. description: fif is a command-line tool for detecting and optionally correcting files with incorrect extensions.
source: https://gitlab.com/Lynnesbian/fif source: https://gitlab.com/Lynnesbian/fif
language: Rust language: Rust
order: "04" order: "01"
image: /assets/img/projects/fif.png
--- ---
It's cross-platform, multi-threaded, and can output its findings in a variety of formats, such as PowerShell and Bourne It's cross-platform, multi-threaded, and can output its findings in a variety of formats, such as PowerShell and Bourne
Shell scripts. Shell scripts.

View file

@ -1,9 +0,0 @@
---
name: Scoop UI
title: Scoop UI
description: Scoop UI is a graphical frontend to Scoop.
source: https://gitlab.com/Lynnesbian/scoop-ui
language: Rust
order: "02"
---
It uses the egui framework and has a much faster search feature than Scoop's own native one.

View file

@ -1,9 +0,0 @@
---
name: Smallgoo
description: Smallgoo is a GUI frontend to various image optimisers.
source: https://gitlab.com/Lynnesbian/smallgoo
language: C++
order: "03"
image: /assets/img/projects/smallgoo.png
---
It compresses files in parallel and supports various configuration options.

View file

@ -1,10 +0,0 @@
---
name: ZtGui
title: ZtGui
description: ZtGui is a cross-platform graphical frontend for managing ZeroTier networks.
source: https://gitlab.com/Lynnesbian/ztgui
language: Rust
order: "01"
image: /assets/img/projects/ztgui.png
---
It provides a much friendlier interface for managing networks than the default command-line interface.

View file

@ -3,7 +3,6 @@
font-family: 'Roboto'; font-family: 'Roboto';
font-style: normal; font-style: normal;
font-weight: 100; font-weight: 100;
font-display: swap;
src: local(''), src: local(''),
url('/assets/fonts/roboto-v20-latin-100.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ url('/assets/fonts/roboto-v20-latin-100.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('/assets/fonts/roboto-v20-latin-100.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ url('/assets/fonts/roboto-v20-latin-100.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
@ -14,7 +13,6 @@
font-family: 'Roboto'; font-family: 'Roboto';
font-style: italic; font-style: italic;
font-weight: 100; font-weight: 100;
font-display: swap;
src: local(''), src: local(''),
url('/assets/fonts/roboto-v20-latin-100italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ url('/assets/fonts/roboto-v20-latin-100italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('/assets/fonts/roboto-v20-latin-100italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ url('/assets/fonts/roboto-v20-latin-100italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
@ -25,7 +23,6 @@
font-family: 'Roboto'; font-family: 'Roboto';
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-display: swap;
src: local(''), src: local(''),
url('/assets/fonts/roboto-v20-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ url('/assets/fonts/roboto-v20-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('/assets/fonts/roboto-v20-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ url('/assets/fonts/roboto-v20-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
@ -36,7 +33,6 @@
font-family: 'Roboto'; font-family: 'Roboto';
font-style: italic; font-style: italic;
font-weight: 400; font-weight: 400;
font-display: swap;
src: local(''), src: local(''),
url('/assets/fonts/roboto-v20-latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ url('/assets/fonts/roboto-v20-latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('/assets/fonts/roboto-v20-latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ url('/assets/fonts/roboto-v20-latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
@ -47,7 +43,6 @@
font-family: 'Roboto'; font-family: 'Roboto';
font-style: italic; font-style: italic;
font-weight: 500; font-weight: 500;
font-display: swap;
src: local(''), src: local(''),
url('/assets/fonts/roboto-v20-latin-500italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ url('/assets/fonts/roboto-v20-latin-500italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('/assets/fonts/roboto-v20-latin-500italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ url('/assets/fonts/roboto-v20-latin-500italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
@ -58,7 +53,6 @@
font-family: 'Roboto'; font-family: 'Roboto';
font-style: normal; font-style: normal;
font-weight: 500; font-weight: 500;
font-display: swap;
src: local(''), src: local(''),
url('/assets/fonts/roboto-v20-latin-500.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ url('/assets/fonts/roboto-v20-latin-500.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('/assets/fonts/roboto-v20-latin-500.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ url('/assets/fonts/roboto-v20-latin-500.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
@ -69,7 +63,6 @@
font-family: 'Open Sans'; font-family: 'Open Sans';
font-style: normal; font-style: normal;
font-weight: 300; font-weight: 300;
font-display: swap;
src: local(''), src: local(''),
url('/assets/fonts/open-sans-v18-latin-300.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ url('/assets/fonts/open-sans-v18-latin-300.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('/assets/fonts/open-sans-v18-latin-300.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ url('/assets/fonts/open-sans-v18-latin-300.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
@ -80,7 +73,6 @@
font-family: 'Open Sans'; font-family: 'Open Sans';
font-style: italic; font-style: italic;
font-weight: 300; font-weight: 300;
font-display: swap;
src: local(''), src: local(''),
url('/assets/fonts/open-sans-v18-latin-300italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ url('/assets/fonts/open-sans-v18-latin-300italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('/assets/fonts/open-sans-v18-latin-300italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ url('/assets/fonts/open-sans-v18-latin-300italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
@ -91,7 +83,6 @@
font-family: 'Open Sans'; font-family: 'Open Sans';
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-display: swap;
src: local(''), src: local(''),
url('/assets/fonts/open-sans-v18-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ url('/assets/fonts/open-sans-v18-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('/assets/fonts/open-sans-v18-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ url('/assets/fonts/open-sans-v18-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
@ -102,7 +93,6 @@
font-family: 'Open Sans'; font-family: 'Open Sans';
font-style: normal; font-style: normal;
font-weight: 600; font-weight: 600;
font-display: swap;
src: local(''), src: local(''),
url('/assets/fonts/open-sans-v18-latin-600.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ url('/assets/fonts/open-sans-v18-latin-600.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('/assets/fonts/open-sans-v18-latin-600.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ url('/assets/fonts/open-sans-v18-latin-600.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
@ -113,7 +103,6 @@
font-family: 'Open Sans'; font-family: 'Open Sans';
font-style: italic; font-style: italic;
font-weight: 700; font-weight: 700;
font-display: swap;
src: local(''), src: local(''),
url('/assets/fonts/open-sans-v18-latin-700italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ url('/assets/fonts/open-sans-v18-latin-700italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('/assets/fonts/open-sans-v18-latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ url('/assets/fonts/open-sans-v18-latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
@ -124,7 +113,6 @@
font-family: 'Open Sans'; font-family: 'Open Sans';
font-style: normal; font-style: normal;
font-weight: 700; font-weight: 700;
font-display: swap;
src: local(''), src: local(''),
url('/assets/fonts/open-sans-v18-latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ url('/assets/fonts/open-sans-v18-latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('/assets/fonts/open-sans-v18-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ url('/assets/fonts/open-sans-v18-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

View file

@ -27,9 +27,6 @@ h1, h2, h3 {
h1 { h1 {
font-size: 3em; font-size: 3em;
text-align: center; text-align: center;
}
main article h1 a {
/* needed for chrome */
/*noinspection CssInvalidPropertyValue*/ /*noinspection CssInvalidPropertyValue*/
text-decoration: underline mediumpurple dotted 5px; text-decoration: underline mediumpurple dotted 5px;
} }
@ -70,10 +67,6 @@ main article a:hover {
text-decoration-color: unset; text-decoration-color: unset;
} }
.subtle {
color: gray;
}
p { p {
line-height: 1.5em; line-height: 1.5em;
} }
@ -99,7 +92,6 @@ header::after {
z-index: -1; z-index: -1;
/*noinspection CssInvalidFunction*/ /*noinspection CssInvalidFunction*/
background: linear-gradient(to bottom, #333, #333 10%, 70%, transparent), background: linear-gradient(to bottom, #333, #333 10%, 70%, transparent),
/* image("/assets/img/background.webp", "/assets/img/background.jpeg") no-repeat bottom center/cover, */
url("/assets/img/background.jpeg") no-repeat bottom center/cover, url("/assets/img/background.jpeg") no-repeat bottom center/cover,
#333; #333;
filter: blur(5px) saturate(75%); filter: blur(5px) saturate(75%);
@ -166,7 +158,7 @@ nav a.current::before {
margin: 30px auto 50px auto; margin: 30px auto 50px auto;
} }
#bune, #bune-img { #bune {
height: max(200px, 10vh); height: max(200px, 10vh);
display: block; display: block;
margin: 50px auto 0; margin: 50px auto 0;
@ -189,19 +181,6 @@ nav a.current::before {
font-style: italic; font-style: italic;
} }
.subheading-links {
text-align: center;
}
.project-image {
max-height: 500px;
display: block;
margin: 0 auto;
}
#project-language {
text-align: center;
margin-top: 0.5em;
}
/* mobile tweaks */ /* mobile tweaks */
@media only screen and (min-device-width : 320px) and (max-device-width : 480px) { @media only screen and (min-device-width : 320px) and (max-device-width : 480px) {
main { main {
@ -222,7 +201,6 @@ nav a.current::before {
position: fixed; position: fixed;
left: -100vw; left: -100vw;
width: 100vw; width: 100vw;
overflow: hidden;
z-index: 3; z-index: 3;
} }
header.active { header.active {

25
cli.txt
View file

@ -1,25 +0,0 @@
---
layout: none
---
{%- assign cyan = 87 | ansi_colour -%}
{%- assign purple = 99 | ansi_colour -%}
{{ purple }}{{ 231 | ansi_bg }}{% ansi_bold %}▞▚▞▚▞▚▖ ▂▃▄▅▆▇█{{99 | ansi_bg }}{{ 231 | ansi_colour }} lynnesbian dot space {{ purple }}{{ 231 | ansi_bg }}█▇▆▅▄▃▂ ▗▞▚▞▚▞▚{% ansi_reset %}
{{ purple }} {% ansi_underline %} {{ cyan }} {% ansi_reset %}
{{ purple }} {{ cyan }} {% ansi_reset %}
{{ purple }} {{ cyan }} {% ansi_reset %}
{{ cyan }} {% ansi_reset %}
{{ cyan }} {% ansi_underline %} {% ansi_reset %}{{ cyan }}{% ansi_reset %}
{{ cyan }} {% ansi_underline %} {% ansi_reset %}{{ cyan }}{% ansi_reset %}
{{ 81 | ansi_bg }} {{ 213 | ansi_bg }} {{ 231 | ansi_bg }} {{ 213 | ansi_bg }} {{ 81 | ansi_bg }} {% ansi_reset %}
╭──────────────────────────────────────┬───────────────────────────────────────╮
│ Name │ Lynne, aka Lynnesbian │
│ Timezone │ Australia/Brisbane - AEST - UTC+1000 │
│ What I do │ Free and open source software │
│ Languages │ Rust, Python, C#, JavaScript... │
│ Email │ @lynne@bune.city │
│ Blog │ https://bune.city │
│ Be gay │ Do crimes │
╰──────────────────────────────────────┴───────────────────────────────────────╯
{{ 81 | ansi_bg }} {{ 213 | ansi_bg }} {{ 231 | ansi_bg }} {{ 213 | ansi_bg }} {{ 81 | ansi_bg }} {% ansi_reset %}
{{ purple }}{{ 231 | ansi_bg }}{% ansi_bold %}░▒▓▒░▒▓▒░▒▓▒░▒▓▒░ Source code: https://l.bune.city/clisrc ░▒▓▒░▒▓▒░▒▓▒░▒▓▒░▓▒░{% ansi_reset %}