summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--capsule/molly.conf1
-rwxr-xr-xfeed.sh1
-rw-r--r--gemini/blobs/homescreen_20210403.jpgbin0 -> 156854 bytes
-rw-r--r--gemini/blobs/senders_skate_video_one.mp4bin0 -> 13334885 bytes
-rw-r--r--gemini/blobs/senders_skate_video_two.mp4bin0 -> 24912409 bytes
-rw-r--r--gemini/gemlog/2021-03-22-music-spotlight-visigoth-the-revenant-king.gmi (renamed from gemlog-staging/music-spotlight-visigoth-the-revenant-king.gmi)6
-rw-r--r--gemini/gemlog/2021-03-23-devlog-1-finding-motivation.gmi110
-rw-r--r--gemini/gemlog/2021-03-24-devlog-1-part-2-correcting-for-mistakes.gmi55
-rw-r--r--gemini/gemlog/2021-03-25-when-is-it-time-to-move-on.gmi58
-rw-r--r--gemini/gemlog/2021-03-28-devlog-2-unit-tests-and-streams.gmi64
-rw-r--r--gemini/gemlog/2021-04-02-i3-again.gmi25
-rw-r--r--gemini/gemlog/2021-04-03-digital-hygiene.gmi96
-rw-r--r--gemini/gemlog/2021-04-04-devlog-3-maven-and-logging.gmi54
-rw-r--r--gemini/gemlog/2021-04-05-skateboarding.gmi64
-rw-r--r--gemini/gemlog/index.gmi8
-rw-r--r--gemini/index.gmi6
-rw-r--r--gemlog-staging/enjoying-music.gmi19
-rw-r--r--gemlog-staging/music-spotlight-count-to-ten.gmi7
18 files changed, 571 insertions, 3 deletions
diff --git a/capsule/molly.conf b/capsule/molly.conf
index 86b6971..bd1a223 100644
--- a/capsule/molly.conf
+++ b/capsule/molly.conf
@@ -34,6 +34,7 @@ DirectoryReverse = true
#[MimeOverrides]
"atom.xml$" = "application/atom+xml"
"rss.xml$" = "application/rss+xml"
+"favicon.txt$" = "text/plain"
#
## Redirects
#
diff --git a/feed.sh b/feed.sh
new file mode 100755
index 0000000..8e9214f
--- /dev/null
+++ b/feed.sh
@@ -0,0 +1 @@
+docker-compose run gemini-feed
diff --git a/gemini/blobs/homescreen_20210403.jpg b/gemini/blobs/homescreen_20210403.jpg
new file mode 100644
index 0000000..703299b
--- /dev/null
+++ b/gemini/blobs/homescreen_20210403.jpg
Binary files differ
diff --git a/gemini/blobs/senders_skate_video_one.mp4 b/gemini/blobs/senders_skate_video_one.mp4
new file mode 100644
index 0000000..7563a39
--- /dev/null
+++ b/gemini/blobs/senders_skate_video_one.mp4
Binary files differ
diff --git a/gemini/blobs/senders_skate_video_two.mp4 b/gemini/blobs/senders_skate_video_two.mp4
new file mode 100644
index 0000000..4c737de
--- /dev/null
+++ b/gemini/blobs/senders_skate_video_two.mp4
Binary files differ
diff --git a/gemlog-staging/music-spotlight-visigoth-the-revenant-king.gmi b/gemini/gemlog/2021-03-22-music-spotlight-visigoth-the-revenant-king.gmi
index f5bc63b..1733fe5 100644
--- a/gemlog-staging/music-spotlight-visigoth-the-revenant-king.gmi
+++ b/gemini/gemlog/2021-03-22-music-spotlight-visigoth-the-revenant-king.gmi
@@ -6,7 +6,7 @@ I wrote a gemlog about my favorite new album of 2020 (new was unfortunately omit
## Visigoth - The Revenant King
-Visigoth is a Power Metal band from Utah. The Revenant King is their 2015 debut album and my favorite of theirs. I found them in 2020 while on an active pursuit to find more metal bands. It bangs. It's biggest downfall is I don't think any of the tracks live up to the absolute epicness that is the title track: The Revenant King. But each track brings something to the album and it never gets stale. They even managed to have a cover song - Necropolis (Manilla Road) - fit smoothly without feeling forced or out of place.
+Visigoth is a Power Metal band from Utah. The Revenant King is their 2015 debut album and my favorite of theirs. I found them in 2020 while on an active pursuit to find more metal bands. It bangs. Each track brings something to the album and it never gets stale. They even managed to have a cover song - Necropolis (Manilla Road) - fit smoothly without feeling forced or out of place. I would say it's weakest track is Creature of Desire. But that is remenicent of 70s hard-rock / proto-heavy metal songs like Rainbow's "Do You Close Your Eyes" if it was just... more metal.
### Top Tracks
@@ -16,6 +16,8 @@ Visigoth is a Power Metal band from Utah. The Revenant King is their 2015 debut
These are the FIRST THREE tracks on the album, which is a double edged battle axe. The album doesn't "get worse" they just lead with their best.
+I wanted to keep the list to a top 3 and Vengeance fell just short. I would bump Dungeon Master off for it, but I love the cheese of it and Mammoth Rider. If you can listen to Mammoth Rider without the urge to stomp around during the chorus let me know :)
+
### Dualing Guitars
A heavy metal staple this album is rife with dualing guitar solos, harmonizing their riffs and solos. It's especially notable on Dungeon Master.
@@ -36,7 +38,7 @@ This album was the definitive favorite of my new discoveries in 2020, and one of
## Conclusion
-Next time you're in your friends mom's basement and bust out your level 13 lawful neutral half-orc barbarian put this album on. You won't regret it.
+Next time you're in your friend's mom's basement and bust out your level 13 lawful neutral half-orc barbarian put this album on. You won't regret it.
Do you have any power metal recommendations? What was your favorite discovery in 2020? I'd love to hear!
diff --git a/gemini/gemlog/2021-03-23-devlog-1-finding-motivation.gmi b/gemini/gemlog/2021-03-23-devlog-1-finding-motivation.gmi
new file mode 100644
index 0000000..f1113f9
--- /dev/null
+++ b/gemini/gemlog/2021-03-23-devlog-1-finding-motivation.gmi
@@ -0,0 +1,110 @@
+# Devlog 1 - Finding Motivation
+
+Motivation is the hardest part of any personal project. The great community here has helped me keep strong interest in the space, but without the express _need_ for this server to be build I am struggling to find motivation to develop on it.
+
+## Engineering all day
+
+I am a professional software engineer, so even though my day to day isn't 100% coding, my position requires me to critque and plan projects as well as develop them... which is exactly what this project is for me too. So its more of the same. That can kill your motivation after a rough day at work sitting in meetings all day.
+
+## What progress has been made
+
+So today while writing my original entry about how I've made no progress, I looked at the clock and noticed I still had about 30 minutes to work so decided to do some work instead.
+
+What I came up with was essnetially 2 new classes that abstract away some of the hard implementaiton logic that I originally developed. Those two classes are:
+
+* Router.java - A collection of routes where your business logic will stem from
+* Route.java - A specific route and the function to handle it
+
+So what you'll be doing is implementing the Router class and registering a collection of routes that will be handled by that router. Then each route will be tied to a function that takes in a request object and returns a response.
+
+### Some code!
+
+MessageHandler is where we tie in the actual input into the routers
+
+```java MessageHandler.java
+Request request = new Request(URI.create(url));
+
+ResponseMessage response = routers.flatMap(Router::routes)
+ .filter(r -> RouteMatcher.match(r.route(), request.uri()))
+ .findFirst()
+ .map(r -> r.handle(request))
+ .orElse(this.defaultHandler.handle(request.uri()));
+
+// is "toResponseMessage()" a good fn name?
+byte[] data = response.toResponseMessage();
+ByteBuf res = ctx.alloc().buffer(data.length);
+res.writeBytes(data);
+```
+
+And the two new classes:
+
+Router.java
+```java Router.java
+public interface Router {
+
+ Stream<Route> routes();
+}
+```
+
+Route.java
+```java Route.java
+public class Route {
+ private final String route;
+ private final Function<Request, ResponseMessage> handleFn;
+
+ public Route(String route, Function<Request, ResponseMessage> handleFn) {
+ this.route = route;
+ this.handleFn = handleFn;
+ }
+
+ public String route() {
+ return this.route;
+ }
+
+ public ResponseMessage handle(final Request request) {
+ return this.handleFn.apply(request);
+ }
+}
+```
+
+PingRouter.java - and implementation of all of this.
+```java PingRouter.java
+public class PingRouter implements Router {
+
+ @Override
+ public Stream<Route> routes() {
+ return Stream.of(
+ new Route("/ping", this::ping)
+ );
+ }
+
+ ResponseMessage ping(final Request request) {
+ return new ResponseMessage(GeminiStatus.SUCCESS, "text/plain");
+ }
+}
+```
+
+Then in your Server file you can register a bunch of these routers that ultimate get called in that stream to determine how to handle each route.
+
+## Enterprise baby!
+
+To reiterate, this is my attempt at creating a generic gemini server that can be used for hosting a myriad of applications within gemini. And the intention is to draw inspiration from the enterprise webserver frameworks I use day to day. Tweaking what I like/don't like about those.
+
+## I think I made it fun?
+
+So what was unfun before was how you would register routes to basically instantiate a new "router" in this case and then configure its routes and all this frustrating creating a specific router for each type of route grouping.
+
+This direction I've moved into should make anyone implementing their own server side code able to do so without writing much boiler plate. Essentially, PingRouter and some plumbing is all you'll have to do!
+
+## Git soon!
+
+I'll be uploading this to git somewhere soon to browse. I just need to delete a lot of the old code.
+
+P.S - I am trying to find the best way to display this stuff. I use amfora and it looks... passible.. but if you have recommendations on how to format the code dump sections please email me or hit me up on IRC.
+
+Thanks :)
+
+# Links
+
+=> /gemlog/ Gemlog
+=> / Home
diff --git a/gemini/gemlog/2021-03-24-devlog-1-part-2-correcting-for-mistakes.gmi b/gemini/gemlog/2021-03-24-devlog-1-part-2-correcting-for-mistakes.gmi
new file mode 100644
index 0000000..2245987
--- /dev/null
+++ b/gemini/gemlog/2021-03-24-devlog-1-part-2-correcting-for-mistakes.gmi
@@ -0,0 +1,55 @@
+# Devlog 1 - Part 2 - Correcting for mistakes
+
+Literally after I posed yesterdays devlog I realized "Wait how the hell do I account for SNI? How do I have gemini.senders.io/index.gmi and app.senders.io/index.gmi?
+
+=> /gemlog/2021-03-23-devlog-1-finding-motivation.gmi Yesterday's devlog
+
+I got so use to running, if need be, smaller services (SOA style) behind an nginx or some other proxy that does the SSL handshake and then proxies over to another service to handle.
+
+Since this will just be a monolith where you can run your different services under I need to add a host layer ontop of the router layer. I wanted to keep the heirarchy of:
+1 Server -> multiple hosts -> multiple routers -> multiple routers.
+
+## The code
+
+```java MessageHandler.java
+ResponseMessage response =
+ hosts
+ .filter(h -> h.hosts().equals(request.uri().getHost()))
+ .flatMap(Host::routers)
+ .flatMap(Router::routes)
+ .filter(r -> RouteMatcher.match(r.route(), request.uri()))
+ .findFirst()
+ .map(r -> r.handle(request))
+ .orElse(this.fallbackRouteHandler.handle(request.uri()));
+```
+
+Basically you'll be at the mercy of "first come first serve" (literally) but we:
+
+* filter by host (app.senders.io)
+* map to the host's routers
+* iterate over the routers' routes
+* filter for matching paths
+* take the first we find
+* otherwise use server's fallback handler
+
+The fallback handler is an idea that I am thinking we basically allow you to put int like maybe just try and serve anything we don't match as a file. But I have a feeling you'd handle that on the route level but registering essentially a /* route or something...
+
+## What's next
+
+It will definetly take some time before I get this back into a working state. I've torn apart a lot of the sub-server layer that you'll be interfacing with as a developer and I want it to feel consistent.
+
+## Javadoc?
+
+Something that piqued my interest was getting the javadoc on gemini. Most likely it'll have to be a hand written reference but there is an idea for you java devs bored looking for a project: Javadoc -> gemini processor!
+
+## I'm excited again
+
+Thanks, I am excited again to actually push this thing out. I am also thinking of how to profile this app. So if you have ideas, or ways to test a gemini servers features...
+
+Thanks again
+- Senders
+
+# Links
+
+=> /gemlog/ Gemlog
+=> / Home
diff --git a/gemini/gemlog/2021-03-25-when-is-it-time-to-move-on.gmi b/gemini/gemlog/2021-03-25-when-is-it-time-to-move-on.gmi
new file mode 100644
index 0000000..87467d8
--- /dev/null
+++ b/gemini/gemlog/2021-03-25-when-is-it-time-to-move-on.gmi
@@ -0,0 +1,58 @@
+# When is it time to move on?
+
+I perform a lot of interviews for my company. I get asked what I like about my company and for years my answer has been two things: Autonomy, and flexibility. I think it may be time to take advantage of some of those perks.
+
+## My job
+
+I am a software engineer in developer infrastructure. I have actually been on the same team since I joined this company almost 4 and a half years ago. I'm sure doing some basic clicking around you can find where I work etc but I like to pretend I'm keeping some aspects of my personal life private. :)
+
+As I was saying :) I've been on the same team now for roughly 4.5 years. We've grown and changed a lot over that time, but what I have found is I've accumulated so much knowledge and frustration over that time. And what adds to that is majority of my team is at the 1 year or less mark with the team. My team is 1 product manager, 1 engineering manager (people manager - stuff like growth, pay, etc), 4 backend engineers, 1 senior frontend engineer, myself (senior backend engineer), and 1 staff level engineer. The frontend engineer has been on this team for maybe about 2 years, same as the staff level engineer. But the 4 other engineers as well as both managers are all in the 1.5 or less year mark (majority coming up on their 1 year).
+
+The reason I bring up tenure with the team is familiarity with the problem space. When I joined the company we formed a team consisting of just me and a product manager (who is now one of the leads of the entire org) to try and solve some of the problems in our infra offering. Since then I have seen countless members join and leave, me being the only consistent member through this time.
+
+Sadly, what that means is I've embodied a lot of the problems we've tried to solve. So when something gets brought up for the 1001st time I find myself frustrated and annoyed that users as well as myself have been trying to push these solutions through to no avail for YEARS now. And I think despite being so passionate about the space I work in I may need to move on...
+
+## Why should you care when reading this?
+
+This is just my diary at this point, why are you even reading this? Well I hope if you can relate to it in some way and maybe learn from my mistakes, or actively choose to avoid ending up in the situation I am in now.
+
+## What does it mean to move on?
+
+Like I mentioned at the start - we have "autonomy" and "freedom" at my company. This comes with a grain of salt as you're still a cog in a corporate machine. There is always someone to answer to. But I don't have to leave my company to find a new opportunity. And having worked on the same problems for years on out, maybe I just pack up and find a new problem space.
+
+## You're not exactly a greybeard, why are you acting like one? Get off your high horse there Gandalf...
+
+Something I feel I've recognized is that I take things too personally. But I also built a lot of these products from the ground up, and have seen people with barely an understanding of their meaning try and steer the product into a different direction ignoring the plan I had envisioned and pushed for well before they joined. So at times I see "maybe I should shut up and let my team make mistakes" I should just "state my piece, if people disagree so be it, it's just internal infra software, we can recover". But at the same time: I didn't dedicate 40+hrs per week for 4 years to just give up.
+
+But I think I should just give up. I'm sure some famous movie quote something like:
+
+> Have you ever just looked up and realized you're 10 years older and don't recognize anyone else around you?
+
+Because that's how I feel right now.
+
+## I just joined my first big company, what can I do to not become 30 and bitter?
+
+* Stop caring so much. It's just work. Especially if you build in-house developer tooling... like you're not saving lives, just maybe some time and effort for your friends and coworkers.
+* Moving on isn't giving up. You should track your growth, if you're spending more energy getting mad than growing just move on. There is no medal for longest serving team member.
+* Keep track of how you feel each day. This is a good thing in general. If your partner, family, friend tells you "you seem unhappy" that means you've been unhappy for a while. So keep a log. Check back on it. If things are trending downward try and correct it. If you've tried and nothing is working, see point 2 - just change jobs/teams/whatever. Life is too short to care about ones and zeroes.
+
+And if you ever find yourself a bit heated after some incident. Take a step back, breathe, leave a message with your people manager but asking if you can talk about it tomorrow.
+
+> Hey, that meeting got a little rough. Honestly, things upset me quite a bit and that concerns me. I think it would be good if we could meet tomorrow to discuss what happened, why it affected me like this and how in future we can prevent this from happening again.
+
+Or something. I am not a people manager, idk your job or your life. :) Don't take advice from me!
+
+## /end rant
+
+I wonder if there is work in the NLP space at my company. I don't have any practical experience but I'll check our internal listings and talk to my manager and theirs to see if I can get some hands on experience in that area. It was always something I wanted to do coming out of school, but I had to stop pursuing the linguistics minor due to my CS courses conflicting. Plus I was lazy and wanted to watch Star Trek with my roommate instead. My company has programs where you can work with other teams on a short term basis. I've used it before to help teams within my org who needed a senior engineer or some seniority in the org space. But maybe I should take some time working for a different org.
+
+## Conclusion
+
+Aside: Something I realized I was doing was naming my files after the post itself. Which is kinda not the point? As long as it's obvious which post it is? Either way. Curious to know if other people try to match the filename to the first header?
+
+- Senders
+
+# Links
+
+=> /gemlog/ Gemlog
+=> / Home
diff --git a/gemini/gemlog/2021-03-28-devlog-2-unit-tests-and-streams.gmi b/gemini/gemlog/2021-03-28-devlog-2-unit-tests-and-streams.gmi
new file mode 100644
index 0000000..d29fcc3
--- /dev/null
+++ b/gemini/gemlog/2021-03-28-devlog-2-unit-tests-and-streams.gmi
@@ -0,0 +1,64 @@
+# Devlog 2 - Unit Tests and Streams
+
+I haven't posted since my rant on Thursday. I have actually been on/off developing and trying to find something constructive to say after what was maybe my second worst day of work in a long time.
+
+## Progress
+
+I had made some progress in my last devlog but I hadn't gotten things in a runnable state. I actually made another blunder - Streams can't reprocess. I went with streams to begin with because it cuts out the decisions of like "What collection do I use?" But I figured just go with Collection for now and maybe put in the notes on a good way to interact.
+
+## Unit tests
+
+> "Hey, why not build a java gemini server? And spend your free time doing what you do at work all day"
+
+This is the brilliant idea I had. I don't feel comfortable sharing code, or even running it in production without at least _most_ of the custom code I have running without a single test hitting it. But that means writing a bunch of unit tests...
+
+### JUnit 5
+
+Because I can do two things at once: I can write my server AND learn something new: I am going to use JUni 5. I haven't used JUnit 5 at work yet, we kept everything on 4 and I don't see anything meaningful to make me move but figure at somepoint we'll have to use it and I better get use to it.
+
+## Collections
+
+The main bug left in the pre-alpha build was using Streams. You can't reprocess them so you could boot but not load the resources more than once. So we had to change it over to use some other collection. I decided to just go old-school and use the Collection interface and leave it up to the caller. Ideally you would use an immutable data-structure like an Iterable actually. But I didn't think of that until I started writing this log so maybe I'll try that out.
+
+```java
+hosts.stream()
+...
+ .flatMap(h -> routers().stream())
+ .flatMap(r -> r.routes().stream())
+...
+```
+
+Is essentially what we're left with. To use an Iterable you can do:
+
+```java
+StreamSupport.stream(hosts.spliterator(), false)
+...
+ .flatMap(h -> StreamSupport.stream(h.routers().spliterator(), false))
+ .flatMap(r -> StreamSupport.stream(r.routes().spliterator(), false))
+...
+```
+
+So while the internal structure matches more with the usage, its usage is just awkward so Collection is just easier honestly... but we'll see.
+
+## Pre-Alpha (0.0.1)
+
+I am actually going to finish unit testing this and migrate my server onto this. It still lacks client certificate support and CGIs. But I want to get something in production to run it through its paces.
+
+### What is required for alpha? (0.1.x)?
+
+For alpha I want to have: a deployable package, isolated logging (access vs error logs), and maybe even availability on maven central.
+
+### What is required for beta? (0.x.x)?
+
+To become beta I need client-certificates, cgi support, a stable API, documentation and contribution documents etc, and 100% be in maven central. Part of me even wants as a goal of post-beta to publish the documents in Gemini as well on my server. (Thank you SNI!)
+
+## Conclusion
+
+This wasn't exactly a meaningful devlog as it was really just saying "I am close to a pre-alpha build" and "I goof'd up one thing again". But I figure better to just think this out with you all in my log ... and take a break from unit tests.
+
+
+# Links
+
+=> /gemlog/ Gemlog
+=> / Home
+
diff --git a/gemini/gemlog/2021-04-02-i3-again.gmi b/gemini/gemlog/2021-04-02-i3-again.gmi
new file mode 100644
index 0000000..4987f59
--- /dev/null
+++ b/gemini/gemlog/2021-04-02-i3-again.gmi
@@ -0,0 +1,25 @@
+# i3 Again
+
+I setup on the first i3 again on my main desktop computer. I wrote about why I switched off of it, and how I brought it back to "a usable keyboard-navigable" state in my weblog:
+
+=> https://senders.io/blog/2020-12-17/ [https] Manjaro Experiment
+
+## Why i3
+
+Window navigation, and window tiling. I had been using i3 for many years prior and still use it on my work laptop daily. I had grown frustrated effectively manually tiling my windows. And decided to just go ahead and reinstall i3. However, instead of being the only window manager on my machine KWin still exists and I have my full KDE desktop environment being under utilized at the moment.
+
+## In the meantime
+
+Right now I simply setup i3 in my normal KDE environment, and I switched the session at the bottom of my login screen. This seems to have caused some interesting bugs throughout the process. VLC seems to glitch out. Some steam games just bugout and won't launch without a reboot after first attempt. It is strange. I am use to running a headless install that I install X11 and i3 onto, so I've never had to do the push-pull of two "environments" at once.
+
+So I will probably just revert back to KWin until I have the time to do a fresh arch installation, if I can't figure out what configs/environment settings are missing until then.
+
+## Tips
+
+If you have any tips on running i3 as the desktop and window manager in a KDE install let me know. I don't need _any_ plasma panels or widgets. I honestly don't need anything from it. But until I reset to a fresh env I need to deal... So let me know!
+
+# Links
+
+=> /gemlog/ Gemlog
+=> / Home
+
diff --git a/gemini/gemlog/2021-04-03-digital-hygiene.gmi b/gemini/gemlog/2021-04-03-digital-hygiene.gmi
new file mode 100644
index 0000000..463f7dd
--- /dev/null
+++ b/gemini/gemlog/2021-04-03-digital-hygiene.gmi
@@ -0,0 +1,96 @@
+# Digital Hygiene
+
+I archived my entire inbox today. This doesn't quite qualify as 'email bankruptcy' as I have addressed every email in my inbox. But I just left them in my inbox as 'read'. That isn't great for knowing 'what has come in and out'. But it also means it's easily to let a bad thing fester. I have been getting emails that are pointless to me, that I will never deal with, but harmless overall that I just don't bother to filter. So after listening to a podcast about a very similar subject I decided to improve my overall digital hygiene starting with email.
+
+## Email is great and bad
+
+Email is amazing. It is honest crazy how perfectly email just took snail-mail and moved it onto the net. It suffers from all the same problems. They barely solved any of the existing issues.
+
+I am exaggerating, slightly, as I can't click 'unsubscribe' from that magazine that showed up in my mailbox one day. But _anyone with my address can send me something_. I donate to one political campaign and now I get emails from every organization on my side of the political spectrum.
+
+But at the same time: having an open standard, accessible way to be contacted is amazing. I use protonmail as a hosting service for my own domain. So if PM goes under I can just take my address elsewhere. That's amazing. I could even spin up my own mail server. But I am not yet equipped to expose :25 from my home internet.
+
+## Good email hygiene
+
+Now that I have essentially 'started fresh'. If I get an email I don't want I'll either unsubscribe or filter it out. I don't mind getting some promos as I do shop occasionally and it's good to know when a too-good-to-be-true deal pops up. But also I don't want to be the chump who pays full price when I could have a coupon in my email waiting for me. But I certainly don't want to read them, or get a notification on my phone, every time they come in.
+
+## Good internet hygiene
+
+I also extended this to my web presence. I don't want to accept your cookie banner, I don't want to see that ad. So I updated my pi-hole, started flagging things in uBlock. I tried the no-js but honestly I only visit a subset of sites anyway and all of them require it so some capacity. But I'll revisit this.
+
+But also what junk am I consuming? Youtube is fun, but can quickly turn into the modern day laying on the couch mindlessly letting the TV play. So I unsubscribed or clicked 'None' on the notification settings of a bunch of YouTube channels. It's okay to support content creators. It's okay to use YouTube. But like anything, in excess it's not good for you, hence the 'hygiene' theme.
+
+### YouTube App Ads
+
+I use patreon to support the creators I truly believe are making good content. I understand ads help but I have my limits. I'll give you $5 a month, but I don't want to give That 'Do You Want Bigger Balls' ad any justification for existing. I use an ad-block on my phone, so why not benefit from it? Honestly, if you don't use Firefox on Android with uBlock I highly recommend doing so. I can watch YouTube videos in High Quality, without ads, and with my screen off (if the video isn't needed). That is amazing. However, if I get a push notification from YouTube I either need to 1. dismiss it and navigate manually to the page on the browser. Or 2. click the notification and get the first-ad, while I copy the link and re-open in Firefox. But I think I have a solution
+
+## RSS
+
+I don't comment on YouTube videos. I can be 15 minutes late. I don't really engage in Livestreams that aren't announced elsewhere, and most if-any of my YouTube creators have a patreon discord that I am in where these YT announcements are as well.
+
+So I drop the YT url into a RSS reader on my phone and that will notify me when a video goes up and I can watch it. I am trialing Feeder off of F-Droid, but am on the lookout for a good FOSS RSS program on Android. (So email or irc me if you have any).
+
+=> https://f-droid.org/en/packages/com.nononsenseapps.feeder/ [https] Feeder
+
+## Purging Apps
+
+I also tried to find any FOSS alternatives a while back to the primary apps I use. I honestly only use: Firefox, Spotify, and my 2FA application (Aegis). Right now my battery is at 68% from 17hrs since charge and my apps are:
+
+* Aegis
+* Nova Launcher (higher than usual?)
+* Firefox Nightly
+* Ariane
+* ProtonMail
+* Notes (Simple Notes)
+* Feeder
+
+Totaling usage of: 14% with a max of 4% for Aegis (which to be fair was left open for a bit while at work).
+
+I have 115 apps installed. Some of which are stock OnePlus and Google apps you can't remove, and other android/oxygen OS services (like ZenMode) of which I get 0 use of.
+
+My home screen is just 6 applications most of which are located in that usage list above.
+=> /blobs/homescreen_20210403.jpg [jpg] My homescreen
+
+### Goodbye Reddit
+
+I deleted all of the time wasters off of my phone. I have a draft gemlog about social media, but I decided to just remove the reddit app (Red Reader, from F-Droid, a great app if you do want one) off of my phone. I honestly barely used the site to begin with, I mostly just scroll and close it without any engagement. As I alluded to above, I want to do the same with YT barring the notification issue.
+
+## Do I really need notifications though?
+
+This is something I was thinking about as I was writing this. I enjoy seeing a video come up, and watching it. But I think that feeds into the bored moments later on, where it would be nice to have a cache of things to catch up on. So I am on the fence about deleting them all together. Part of why I liked it was it prevented me from browsing the website, but that is part 2 of the experiment assuming RSS fails me.
+
+## Filling time with something more meaningful?
+
+I am lazy. That's something I struggle with daily. My anxiety feeds into me not wanting to do anything for fear of embarrassment or burdening someone else. It is hard to explain. But what that results in is me sitting in front of a computer, noodling on my guitar (not the worst way to spend an evening) or watching (or worse rewatching) something on YouTube I don't really care about. I use to just watch TV shows but I no longer have streaming service subscriptions so its harder for me to just log into Netflix and pick a random show.
+
+### Learning
+
+While noodling on guitar isn't brain rotting as watching trash on the internet is, it isn't doing me any favors. So I have restarted (for the like 3rd time) ear training. For those who don't know ear training is, it is practicing hearing and identifying intervals in music. Either melodic or harmonic intervals (separate or together). And general music theory training but focusing on the listen aspect. So hearing a scale and identifying which scale it is. Things like that.
+
+If you are serious about music and getting better at it, and work within the western music style (12 tone equal temperment) I cannot recommend practice it enough! I use Rick Beato (another YouTube creator and music producer)'s Ear Training program. As it has _a lot_ of training. But you can find apps online for free, or even just grab your instrument of choice and practice yourself.
+
+=> https://beatoeartraining.com/ [https] Rick Beato's Ear Training (paid program)
+
+### Programming
+
+I also have been working slowly on my own gemini server in Java (if you've read my devlog).
+
+### Podcasts
+
+If I want to take a break from music, I started listening to the Cortex podcast, which actually is what inspired me to clean up my email and phone to prevent noise and distraction. The cortex podcast is a podcast co-hosted by CGP Grey (from YouTube) and Myke Hurley the co-founder of the podcast network. They talk about their work lives as content creators which also means discussing tech, productivity, working from home, and other things that actually are up-my-alley.
+
+=> https://www.relay.fm/cortex/ [https] relay.fm/cortex
+
+## Conclusion
+
+I don't know if I have a meaningful conclusion here. I just wanted to document the steps I took to try and be more mindful of the waste I endure in the digital world, and how I am trying to address it. Albeit disjointedly.
+
+Have you ever done something similar? Do you have advice or tips on how to make best the digital experience? I'd really love to hear it!
+
+- Senders
+
+# Links
+
+=> /gemlog/ Gemlog
+=> / Home
+
diff --git a/gemini/gemlog/2021-04-04-devlog-3-maven-and-logging.gmi b/gemini/gemlog/2021-04-04-devlog-3-maven-and-logging.gmi
new file mode 100644
index 0000000..4001939
--- /dev/null
+++ b/gemini/gemlog/2021-04-04-devlog-3-maven-and-logging.gmi
@@ -0,0 +1,54 @@
+# Devlog 3 - Maven and Logging
+
+I didn't get a lot done during the week, but on Friday and Saturday evening I was able to work a bit more. On Saturday I deployed my standalone server into prod under a test port. I was able to iron out some logging kinks and some other setup stuff. But I wasted a lot of time on /extra/ things.
+
+## Maven
+
+Maven has a lot of useful plugins for automating certain tasks. I got it so I can assmble a tar.gz of the standable server that I can share, so I feel I am one step closer to alpha. However, I got buried deep in the plugin blackhole... I wanted to get my javadoc deployed too to my website and licenses in order. Sadly, everyone seems to do things slightly differently and it ended up soaking up a lot of time that I could've spent elsewhere.
+
+## Prod Swap
+
+I am going to cut it out and follow my previous devlogs outline and try and get the server into prod this coming week. I don't expect to have it in a position where I can deploy it to maven central or anything for alpha (though solving some of this will move me closer). But I am delaying a lot of other important work.
+
+## Logging
+
+The main development change that I did was fixing how I write my logs. Right now I have 3 logs being written:
+
+* all.log
+* access.log
+* error.log
+
+### all.log
+
+My all.log is just everything the server outputs. So is comprised of general info+ logging from the server, access logs, and error logs.
+
+### access.log
+
+This is the IO logging for the server. Logging requests and responses in a tab separated format:
+
+```access.log
+2021-04-04T20:54:21,170Z IN /67.86.129.151:45974 gemini://senders.io:19650/gemlog/path/bad.txt 45
+2021-04-04T20:54:21,177Z OUT 51 /gemlog/path/bad.txt not found 35
+2021-04-04T20:55:10,442Z IN /67.86.129.151:45998 gemini://senders.io:19650/gemlog/2021-03-28-devlog-2-unit-tests-and-streams.gmi 79
+2021-04-04T20:55:10,473Z OUT 20 text/gemini; lang=en; 3335
+2021-04-04T20:55:12,066Z IN /67.86.129.151:46000 gemini://senders.io:19650/gemlog/2021-03-25-when-is-it-time-to-move-on.gmi 74
+2021-04-04T20:55:12,067Z OUT 20 text/gemini; lang=en; 6131
+```
+
+### error.log
+
+It can be nice to have errors written out separately, can be used as a metric/trigger when content/the file changes.
+
+### customization
+
+I've set it up so you can roll our own logging implementation if you want. By default we use logback and SLF4J since that is pretty standard in the Java world. However, you can specify your own logback.xml or your own AccessLogger with its own format. It's not pluggable at the moment. But I've laid the foundation to allow this to be configured when setting up your server!
+
+## What next?
+
+I want to focus on wrapping up the custom access logging and javadocs. I want to get the server in prod so I can do my server cert swap too.
+
+# Links
+
+=> /gemlog/ Gemlog
+=> / Home
+
diff --git a/gemini/gemlog/2021-04-05-skateboarding.gmi b/gemini/gemlog/2021-04-05-skateboarding.gmi
new file mode 100644
index 0000000..0581c05
--- /dev/null
+++ b/gemini/gemlog/2021-04-05-skateboarding.gmi
@@ -0,0 +1,64 @@
+# Skateboarding
+
+I spent the last week really hyped about skateboarding again. I use to skate a lot when I was a kid, and never really got any good. Rodney Mullen was my idol - the freestyle street skating he does can only be described as **rad**.
+
+## Why I got into the skateboarding mood
+
+I got into a skateboarding kick after watching some movies last weekend while my girlfriend was away. I watched Dazed and Confused, a college favorite of mine. I wanted to revisit it since my girlfriend had never seen it and it had been _years_ since I watched it. I remembered really liking it. It _sorta_ holds up.
+
+### Dazed and Confused tangent
+
+What works with the movie is the filmmaking. I think overall it does a good job dropping you into this world and just letting it playout. The film doesn't really get in the way. What doesn't work, for me, is just the era and the muddled messages. In todays US political climate the movie sorta sits in an awkward place. It doesn't really do enough to call out how wrong the conservative oppressive culture (the parents, the coaches, etc) and almost mocks (it feels) the progressive side of things. This doesn't _hurt the movie_ since it takes place in the 70s and was made in the 90s, not the 20s. So you can't hold it against it. Just something that made it a bit... less good to me.
+
+### Chasing Amy tangent
+
+Anyway tangent aside, Joey Lauren Adams is in the film as Simone, Pink's sorta girlfriend. I can't see her and not think of Kevin Smith so I decided the next night to watch Chasing Amy, another movie I was curious how it holds up, because even the last time I watched it the ending still felt like it falls flat. Spoiler alert: it still does. Honestly, Ben Affleck is just _too much of an asshole_ too much of the time. I could relate to the situation of falling for someone who is unavailable, and letting something stupid and pointless get the better of your judgement. But watching the movie, as an adult better in charge of his emotions, the movie was just frustrating. Plus, honestly, the dated early 2000s slang (f*g in particular) can be a bit grating to hear.
+
+## Skateboarding videos
+
+So the thing that really got me in the mood was Jason Lee. I was curious since I have never seen him skate before decided to look up some videos of him. I found a 20minute documentary for Video Days, a skateboarding video, Jason was in for Blind.
+
+I basically started down a whole looking at skateboarding videos and stumbled across two documentaries: Dogtown and Z-Boys and Bones Brigade: An Autobiography.
+
+## Dogtown and Z-Boys
+
+I actuallyed watched this documentary second. But chronologically is the first of two. It was made in 2001 and focused on the Dogtown area of Southern California and the Zephyr surf and skate team. This was a really cool doc to watch because I honestly knew nothing of this generation of skateboarding. It was briefly touched on in the early parts of the Bones Brigade, as this is the generation that brought up Stacy Peralta - the coach for the Bones Brigade. I haven't really seen anyone talk about this surf style skating before which was also really cool. Looking back with the knowledge of today it feels almost like "JUST DO X!" but if no one has done it before, are you really thinking about it? Plus the boards were so different: clay wheels, rollerskate trucks, flat, stiff boards. I am honestly surprised they were able to do such slick and stylish moves. (Well the style came after the poly-wheels). I would highly recommend this documentary if you are into skateboarding and don't know how it all started.
+
+## Bones Brigade: An Autobiography
+
+I was mixed on this documentary. I know enough about this era, as it was the era where the greats of my day came of age, to fill in what I felt the documentary glazed over. It felt more like basking in the past, and just being nostalgic rather than a good documentary documenting the rise of what would become modern skateboarding.
+
+But seeing old footage of Steve Caballero, Tony Hawk, and Rodney Mullen was so rad. Learning more about other skaters like Lance Mountain who I have never seen get much coverage (being one of the older skaters).
+
+I think if you're into skating you'll enjoy this one either way. But if you're just a casual viewer it may leave you wanting.
+
+## Tony Hawk Pro Skater 1+2
+
+I picked this up when it was released. It is so freaking good. They added some quality of life without changing the actual _feel_ of the original games. I was trying to 100% the game and ended up burning myself out trying to get the perfect lines, since I don't think my technical skill is up to par yet. If you have the original disks it may not be worth grabbing. I have it on PS4 and it plays perfectly.
+
+## Skater XL
+
+I picked this up too when it was in alpha (or whatever Steam calls it). I started messing around with it again and had a lot of fun. I was pretty burnt out (check my latest devlog (3?)) on programming so I wanted to do something. I swapped over to my Windows partition and kicked around. Turns out they added replays since I last played it. You can now rewatch previous lines you've done and reposition the camera and stuff.
+
+I ended up making two skate videos for fun to try out the process (each ~30s)
+
+=> /blobs/senders_skate_video_one.mp4 [mp4] Skate Video 1 (13MB)
+=> /blobs/senders_skate_video_two.mp4 [mp4] Skate Video 2 (24MB)
+
+It's a lot of fun. I played the replays back, recorded the game footage with OBS, and edited the videos in Davinci Resolve. It was pretty seemless. You can have all 3 programs up (I play the game windowed at 1080p) and when you land a cool run or trick just hit select and capture it.
+
+I want to make a full length one per park. Pick a track that fits the aesthetic of the map and do some sick lines.
+
+## Skating at 30?
+
+I wonder if its worth picking up some new wheels and bearings and trying to skate again. If I can find a private place to practice to avoid embarrassment and just not bother anyone with my constant repetitive actions I'll be happy.
+
+I also need to find some good street wheels too. If I have to start going into the office again the train is a straight path away so skating to and from would be a nice bit of exercise. Do people have two boards? Do modern wheels not stop at the tiniest of pebbles anymore?
+
+I'd love to hear from anyone who skateboards these days on any advice they have for someone wanting to get back into it. Also where I can buy some out of print decks? There are some classic boards I should've grabbed when I had the chance (but not the cash!).
+
+## Links
+
+=> /gemlog/ Gemlog
+=> / Home
+
diff --git a/gemini/gemlog/index.gmi b/gemini/gemlog/index.gmi
index 550ba38..dd6aa58 100644
--- a/gemini/gemlog/index.gmi
+++ b/gemini/gemlog/index.gmi
@@ -4,6 +4,14 @@ Welcome to my gemlog. I post whenever I do something I feel is worth writing abo
## My posts
+=> 2021-04-05-skateboarding.gmi 2021-04-05 - Skateboarding
+=> 2021-04-04-devlog-3-maven-and-logging.gmi 2021-04-04 - Devlog 3 - Maven and Logging
+=> 2021-04-03-digital-hygiene.gmi 2021-04-03 - Digital Hygiene
+=> 2021-04-02-i3-again.gmi 2021-04-02 - i3 Again
+=> 2021-03-28-devlog-2-unit-tests-and-streams.gmi 2021-03-28 - Devlog 2 - Unit Tests and Streams
+=> 2021-03-25-when-is-it-time-to-move-on.gmi 2021-03-25 - When is it Time to Move On
+=> 2021-03-24-devlog-1-finding-motivation.gmi 2021-03-24 - Devlog 1 - Finding Motivation
+=> 2021-03-22-music-spotlight-visigoth-the-revenant-king.gmi 2021-03-22 - Music Spotlight - Visigoth The Revenant King
=> 2021-03-21-music-spotlight-top-album-2020.gmi 2021-03-21 - Music Spotlight - Top Album 2020
=> 2021-03-20-spring.gmi 2021-03-20 - Spring
=> 2021-03-19-devlog-figuring-out-the-api.gmi 2021-03-19 - Devlog - Figuring out the api
diff --git a/gemini/index.gmi b/gemini/index.gmi
index bf1fcd0..862a758 100644
--- a/gemini/index.gmi
+++ b/gemini/index.gmi
@@ -1,4 +1,4 @@
-```ascii banner
+```senders' capsule (ascii banner)
_______ _______ __ _ ______ _______ ______ _______ __
| || || | | || | | || _ | | || |
| _____|| ___|| |_| || _ || ___|| | || | _____||__|
@@ -25,6 +25,10 @@ I'll be migrating my cert shortly
=> /gemlog/2021-03-11-cert-migration.gmi Cert Migration gemlog with the details
+### A months notice?
+
+I wanted to migrate when I changed servers and I am a few dev-days shy. So hopefully in the next 2 weeks I'll do the migration. If you get a cert change notice and this message is still up email me!
+
In the spirit of transparency, I'd like to just announce that I'm migrating off my 90 day Let's Encrypt Certificate to avoid the ever frequent renewal from you find readers. More details in the gemlog.
## About me
diff --git a/gemlog-staging/enjoying-music.gmi b/gemlog-staging/enjoying-music.gmi
new file mode 100644
index 0000000..1ab4cc2
--- /dev/null
+++ b/gemlog-staging/enjoying-music.gmi
@@ -0,0 +1,19 @@
+# Enjoying Music
+
+I write a lot about my music opinions and tastes here. I love music. It is apart of my everyday life and has been since I was a child. I was listening to old episodes of the podcast "Coretx" with CGP Greg where he admits to his co-host that he does not "enjoy" music. And while I knew these types of people were out there. And if I was to guess, it's not surprising that this robotic personality find little enjoyment from music.
+
+## Do you enjoy music?
+
+Before I get into it, please let me know your feelings around music and if it is a part of your everyday life. If it isn't, what do you listen to? Do you prefer silence? Soundscapes? Podcasts? Audiobooks? Why? Were you always this way? Does your life not facilitate general listening of music that you've just fallen out of listening? This is all FACINATING to me. Since I don't think I could survive without having music in my life.
+
+## When do I listen to music?
+
+Honestly, whenever I have the opportunity. If I am eating dinner, doing chores, writing my gemlog, programming at work, sleeping. Essentially, if my ears are free I want to be listening to music. But that doesn't mean I don't listen to other forms of audio content.
+
+## What do I listen to besides music?
+
+According to my Spotify Wrapped for the past 4 years I only listen to music. I enjoy podcasts as a format, especially comedy ones, but I find anything with continuity exhausting. I am more likely to consume a podcast if they're video podcasts (is it even a podcast then?).
+
+I use to listen to "Welcome to the Magic Tavern" which I REALLY enjoyed. However, I cannot pay attention to an "audio show" while doing OTHER things. So that limits how easily I can consume that type of content.
+
+I use to watch british panel shows while working at a job I was pretty much checked out of, but those are easy to "miss a joke in" because they moved on in a minute or two to a new story/joke.
diff --git a/gemlog-staging/music-spotlight-count-to-ten.gmi b/gemlog-staging/music-spotlight-count-to-ten.gmi
new file mode 100644
index 0000000..d72678c
--- /dev/null
+++ b/gemlog-staging/music-spotlight-count-to-ten.gmi
@@ -0,0 +1,7 @@
+# Music Spotlight - Tina Dico - Count to Ten
+
+Tina Dico (Dickow) is a Danish singer-songwriter. I am an American, so I can't speak to much of her actual popularity / exposure, especially in Europe or Denmark.
+
+I found her 7 or so years ago when I was listening to a Zero 7 album and was captivated by the vocals on the track "Home" off of their record When it Falls. It's fantastic and deserves its own spotlight.
+
+