I do not consider myself an AFOL but I am an adult and I am a big fan of LEGO.

And, I just love this set.

I do have a cabinet in my office with a fair few models in but there are very few sets out there that I would happily have in my living room. I would be absolutely thrilled to have this one on display, though. I can’t wait to get it. I hope it is widely available!

FTL is one of my favourite games. It is also one of my favourite soundtracks. I love listening to soundtracks when I work because I find vocals distracting. Video game soundtracks work really well because they are often low key.

Today I thought I would check out the soundtrack for Into The Breach, which is also made by subset games. Lo and behold, Ben Prunty also composed the soundtrack (as he did for FTL) so that is a must listen, I thought. Turns out it is not on Amazon Music but I did find it on YouTube. I broke the first rule of the Internet and read the comments. I was very entertained. I have not actually played Into The Breach yet (no, I don’t know why) but the comments make me want to even more.

I like soundtrack so far too. Is a lot less chip tune but suitably dramatic, especially Old War Machines.

Replied to Using IFTTT to syndicate (PESOS) content from social services to WordPress using Micropub by Chris AldrichChris Aldrich (boffosocko.com)
Introduction What follows may tend toward the jargon-y end of programming, but I’ll endeavor to explain it all and go step-by-step to allow those with little or no programming experience to follow along and use the tools I’m describing in a very powerful way.  I’ll do my best to link the jarg...

I decided to give this a go over lunch. IFTTT is getting a 500 error on the micropub endpoint. I’ve tested the endpoint with quill and micropub.rocks – both worked fine. Did I miss something obvious?

Hey @firefox, have you had much feedback on how hard it is to identify the active tab in the default dark theme?

Beetle MB Games 1981

I just remembered this game we played as kids in the early 80s. Happy days.

If you request your data from @twitter this is the date format for each tweet in the JSON: Sat Oct 21 12:13:55 +0000 2017

Machine readable my eye ?

Well, who knew Cloudwatch would be so much fun to tinker with?! Not me!

I have been slowly refining my Cloudwatch dashboard: adding new alarms, expanding the scope of the log watch, all that good stuff. It is very satisfying. Over the last week or so I have also set-up fail2ban because (according to my audit log via Cloudwatch ?) sshd was getting hammered. As previously mentioned, this box is not well resourced, so I wanted to nip that in the bud. But does the cost of running fail2ban outweigh the benefits? Hard to say!

Anyway, I am getting quite a lot of email from fail2ban. This is good because I know it is working but I’d rather not have the email and still be able to easily check it was working… so Cloudwatch!

I added the fail2ban log to the config and used the Logs Insights tool to explore. This is typical line:

2021-04-30 17:58:06.631, "2021-04-30 18:58:06,208 fail2ban.filter [100432]: INFO [sshd] Found 205.185.119.236 - 2021-04-30 18:58:05"

We could use the date/time a few more times, right? I decided this was the time to jump into the parse command in the CloudWatch Logs Insights query language (rolls off the tongue that). I knew I was going to need another regex within about 10 seconds. But, damn, if the examples aren’t thin on the ground. I googled and found virtually nothing although this post did help a bit.

So, to regex101.com I went. I exported a few lines from the log to test and I must be getting quite a lot better because I got the basics working pretty quickly:

\[sshd\]\ (?<action>[a-zA-z]*)\ (?<ip_address>[\d\.]*)

Then this query in Cloudwatch Logs Insights did the job:

parse @message /\[sshd\]\ (?<action>[a-zA-z]*)\ (?<ip_address>[\d\.]*)/

| display @timestamp, action, ip_address

| limit 200

Unfortunately, I find reading timestamp pretty hard so a bit more tinkering:

parse @message /(?<date>\d\d\d\d-\d\d-\d\d)\ (?<time>\d\d:\d\d:\d\d).*\[sshd\]\ (?<action>[a-zA-z]*)\ (?<ip_address>[\d\.]*)/

| display date, time, action, ip_address

| limit 200

Excellent! It was running for about 5 minutes and it suddenly produced a blank line. Of course, [sshd] in the log refers to the jail. I have several set up so…

parse @message /(?<date>\d\d\d\d-\d\d-\d\d)\ (?<time>\d\d:\d\d:\d\d).*\[(?<jail>sshd|recidive|mysqld-auth)\]\ (?<action>[a-zA-z]*)\ (?<ip_address>[\d\.]*)/

| display date, time, jail, action, ip_address

| limit 200

And that does the job nicely at the moment. You can find an explanation of the regex on regex101.

Once I am a bit more confident, I’ll start filtering on the action, so I can just see bans and unbans:

| filter action = "Ban" or action ="Unban"