Categories
Internet och IT

Migrating a WordPress blog to Amazon CloudFront

This is an article I wrote for LinkedIn, published here for posterity.

Throughout the many jobs I’ve had developing software, we’ve talked a lot about technical debt. Usually this is in reference to legacy systems that are so very vital to the business that they can’t be replaced, or architectural choices that only made sense at the time. Recently, I’ve been struggling with another type of tech debt altogether: the ghosts of past hobby projects. I’m talking about things I built some 15 years ago that I still use regularly. Seeing that old code still doing what it’s doing is a source of comfort and concern in equal measure.

Sometimes, it’s easy. Just recently, I needed an app that I had written in 2016 and hadn’t touched since. Thankfully, it was .NET, and if there’s one thing you can count on our friends at Microsoft for, it’s backwards compatibility. When I opened up the Jurassic-era source code, I was cheerfully suggested to upgrade it to the latest framework, and Visual Studio did so without a hitch, the app whizzing back to life. An altogether different experience to the time that I tried to modernize an app originally built with AngularDart. What was I thinking?

I used to build a lot of sites using WordPress, because the low cost and ubiquity of LAMP (Linux, Apache, MySQL, PHP) hosting made it an attractive choice. Even today, it’s still a very popular way to get content on the web. Unfortunately, WordPress has a poor – and mostly undeserved – reputation when it comes to security. Major flaws in WordPress itself are historically rare, and unless running shady plugins, keeping up to date with the latest version has usually kept one out of harm’s way.

However, if the interactive element of running a blog-type site isn’t necessary – as it rarely is nowadays, with discussions having moved to social media – hosting a WordPress blog as a static site on AWS can be more cost-effective than even traditional LAMP hosting, and a very effective way to alleviate security concerns. So, this last weekend I decided to convert a couple of my old WordPress instances.

Finding a good step-by-step guide that covered the whole process was difficult, so I wrote one myself. Please have a look if you’re interested.

As for that venerable AngularDart app – I’m very slowly rewriting it in Flutter, and the backend for it is eventually going to get a microservice makeover. Until then, like all the other legacy code out there, it’s continuing to do what it was designed to do, unbothered.

Do you have a piece of old software that you wrote yourself, and still depend on? Or is that just a me thing?

Migrating a WordPress blog to Amazon CloudFront

This guide is intended to take you through the process of migrating an existing live WordPress blog to a static website hosted on Amazon CloudFront. Typically more cost-effective than traditional hosting, replacing dynamically executed PHP code with static HTML pages also considerably improves your security posture. You will no longer have to worry about keeping WordPress, or any other component of the stack up to date with security patches. The disadvantage is that any interactive elements of your blog – such as comments, pingbacks, and many plugins – are lost.

Necessary information: I work at Amazon Web Services, but this guide is based purely on my personal opinions and experiences. Where specific products such as plug-ins are mentioned, they are merely the ones I personally decided to use, and not official endorsements or recommendations by AWS.

Prerequisites

  • You have an AWS account.
  • You understand that following this guide will incur costs on your AWS account.
  • You have a live WordPress site, with admin rights.
  • You have a domain name for your site, where you control the DNS records.

Creating a static copy of your WordPress site

  1. On your live site, install and activate the WP Migrate Lite plug-in.
  2. Use this to create a backup of your site. You will typically only need to include the database, uploads, and themes. If you have made extensive customizations, you may need to select additional files.
  3. After making the backup, deactivate the plug-in on the live site.
  4. Install Local on your local machine and run it.
  5. Import the backup into Local, creating a new site. I had issues using nginx as the web server for my sites, even though it’s the preferred choice; I had better luck with Apache.
  6. Trust the SSL certificate generated by Local, otherwise you won’t be able to open the WordPress admin console.
  7. Click “Open site” and browse through the site, observing that everything is working as it did when the site was live. If not, troubleshoot.
  8. Open the admin console by clicking “WP Admin”. You will probably want to make some changes. For example, you should remove WordPress’s built-in search, disable comments, and so on. No worries; if you make a mistake, you can revert changes by deleting the site from Local and re-importing the backup.
  9. Install and activate the Simply Static plug-in.
  10. Configure Simply Static according to your needs. I mainly had to adjust the crawlers in order to get all the pages I needed generated.
  11. In the Deploy menu, select a local directory as your deployment destination. If you bought Simply Static Pro, you can directly select an S3 bucket here, but I will assume you’re manually uploading to S3.
  12. Generate the static export. This can take a fair bit of time, and the Activity Log does not update immediately. Simply Static generates a detailed debug log (in the wp-content/uploads/simply-static folder) that you can check to see what’s going on.

You now have a static export of your site. You can repeat the export with different settings later, if need be.

Setting up static website hosting in AWS

  1. In the AWS console, ensure you have selected your preferred region. Most services we’ll use are global, but not all. The preferred region will typically be the one closest to you.
  2. If you didn’t do so already, go to Billing and Cost Management and create a budget. While the costs of this solution should be modest, you always want to remain in control of your cloud spend.
  3. Go to S3 and create a general-purpose bucket. The bucket name should, by convention, be the same as your website domain name. You do not need to enable public access, since we’ll be using CloudFront.
  4. Go to Route 53 and create a public hosted zone for your domain name. You can use your existing registrar if you don’t want to transfer the domain to Route 53, as long as your registrar will let you change the DNS records.
  5. Go to Certificate Manager and change the region to us-east-1 (N. Virginia). You must use us-east-1 for the certificate used by CloudFront, which is what we’re creating now.
  6. Create a public certificate request for your domain name and any other names you want to use (like www.*).
  7. To validate the request, you will have to create CNAME records. If your domain is already hosted in Route 53, the AWS console can create them for you, otherwise you’ll have to copy-paste. Note that if you change the NS records of your domain to point to Route 53 before the static site is up and running, the site might temporarily become unavailable, so I set the validation CNAME records on my former DNS provider prior to changing the NS records over to AWS.
  8. Wait for the certificate to be validated. This typically takes less than a minute.
  9. Go to CloudFront and create a distribution. Enter your domain name for both the distribution name and description (some list views only show the description). Also enter and check your domain name as the Route 53 managed domain for the distribution. Click next.
  10. Select the Amazon S3 origin type and select your S3 bucket by clicking Browse S3. Click next.
  11. I recommend enabling Web Application Firewall, even though your site will be static. More thoughts on this below. Click next.
  12. Select the certificate you created for your domain. Click next, review and click Create distribution. CloudFront will provide the bucket security policy needed for CloudFront to access it.
  13. Now, open the distribution and click Edit. Add any alternate domain names (again, like www.*) that your site uses. Enter index.html for the default root object. If you do not need global distribution, change the price class. Save changes.
  14. Click the shortcut to route the domains to CloudFront, this will create the necessary records in Route 53.
  15. Make note of the CloudFront distribution ID and the distribution domain name (*.cloudfront.net).
  16. Go to Functions in CloudFront. Create a function to rewrite paths to index.html, as you need this behavior for WordPress – you can simply copy the official sample. Publish the function, and associate it with your distribution.

Your site is now set up, but the bucket is still empty, and if your domain isn’t already hosted by Route 53, the domain is not resolving to your CloudFront distribution. This is fine. Next, we’ll import the files.

Syncing your local site to the S3 bucket

  1. In the AWS console, go to IAM and create a user that you’ll be using to sync the files to S3. It’s a good practice to not use your root user, or an IAM user with broad administrative rights, for this.
  2. Create permissions policies for the user that allow list/get/put/delete actions on your bucket and its contents, and invalidate rights on your CloudFront distributions. I have provided policy samples below that you can edit for your use.
  3. Create an access key for the IAM user, for use with the CLI. Save the Access key and the Secret access key for later, or download the .csv. To follow best practices for security, you should rotate this key regularly.
  4. Install the AWS CLI on your local machine.
  5. Open a terminal in the folder where you deployed the static export of your local WordPress site.
  6. Create a profile based on your IAM user and the access key you created by running aws configure –profile (docs). The profile name is the name of your IAM user. The CLI will prompt you for values. Enter the region where you created the S3 bucket.
  7. Now sync the files to S3. Always start with a dry run to make sure you got everything right: aws s3 sync s3:// –delete –profile –dryrun (docs)
  8. If you encounter errors, troubleshoot. If not, run the command without –dryrun and wait for the site to upload.
  9. Invalidate the CloudFront distribution: aws cloudfront create-invalidation –distribution-id –paths “/*” –profile (docs)
  10. Now, open the distribution domain name in your favorite browser and verify that the site is displaying correctly.

Any time you update the site, you will need to re-run the sync and invalidation commands – so putting these in a script can be helpful. From now on, you’ll update the site by running it in Local, exporting it using Simply Static, and then syncing it to S3.

Invalidating the CloudFront distribution on every update isn’t necessary, it will simply make your changes appear faster.

Updating your former DNS provider’s records

  1. In the AWS console, go to Route 53, open your domain in Hosted zones, and make note of the NS records.
  2. Update the NS records with your DNS provider/domain registrar to be the same as those in Route 53. Typically, your DNS provider or domain registrar will remove all other records at this point, so if you made any customizations, take note of them first so you can re-apply them in Route 53.
  3. If your domain used DNSSEC, you will need to take additional steps to enable signing in Route 53, otherwise the new records will be rejected.
  4. Once the DNS changes propagate, you should be able to access your new static site using your domain name. This can take between a few minutes and several hours, depending on the TTL of the former records.

Everything should be happily working now, so consider the following supplementary reading; there are nuances to how you set this up that can have an impact on the cost and performance of the solution.

Notes on S3 Static Hosting vs. CloudFront

When researching this, many of the guides I found suggested hosting the website directly out of the S3 bucket, not using CloudFront. While this is certainly a possibility, the main issues I had with this are that the bucket must have public access, HTTPS isn’t supported(!), and Web Application Firewall (WAF) isn’t available. However, because you’re using fewer services, it’s going to cost you even less. While HTTPS is arguably not technically necessary for static content, it is practically a necessity these days for a public-facing web site.

Another important note is that traffic between S3 and CloudFront is not charged, so by using CloudFront, you get global distribution from a single S3 bucket sitting in a single region. You can even change the object storage class of the items in your bucket to a lower cost option, if you wish.

Notes on Web Application Firewall

You might wonder why WAF is needed for a purely static site. The short answer is: it’s not! But, it’s a cost-effective way to protect against the so-called Denial Of Wallet Attack, where malicious crawlers are looking around your site for non-existent vulnerabilities, wasting bandwidth. There is a fixed charge for enabling WAF and if your site sees very limited traffic, it might look like a large portion of your overall cost. However, remember that CloudFront does not charge you for requests blocked by WAF, so instead of the unknown variable cost of malicious traffic, you have a known fixed cost for the Web ACLs and rules in your WAF, and a very small cost per request that is controlled by WAF.

Sample IAM policies for a CLI user

This policy will allow your user to run aws s3 sync:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowS3Sync",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:ListBucket",
        "s3:DeleteObject",
        "s3:GetBucketLocation",
        "s3:PutObjectAcl"
      ],
      "Resource": [
        "arn:aws:s3:::",
        "arn:aws:s3:::/*"
      ]
    }
  ]
}

This policy will allow your user to run aws cloudfront create-invalidation:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowCloudfrontInvalidate",
      "Effect": "Allow",
      "Action": "cloudfront:CreateInvalidation",
      "Resource": ""
    }
  ]
}

Categories
Speltest

Speltest: Augusti 2023

Jag fortsätter att använda den här bloggen – möjligtvis i brist på bättre innehåll – för att arkivera mina korta spelrecensioner på engelska som jag skriver på andra plattformar, huvudsakligen Steam. Håll till godo.

Battlezone: Combat Commander

I played a frankly unhealthy amount of the original Battlezone when it came out in ’98 but somehow missed the sequel when it came out only the next year. Now that a refresh has dropped, I’m finally able to enjoy it – however, do note that this is not a reimagining but a “warts and all” refresh that retains a lot of the somewhat dated and crappy mechanics of the original. There is a storyline, but it’s not well-written by today’s standards and much of what happens in it makes no sense in hindsight. There are bugs that can break missions. The AI is terrible on both sides, which leads to a lot of “accidental” difficulty, or sometimes lack thereof. That said, the level of challenge steadily ramps up and some of the later missions are quite hard.

In summary, if you loved Battlezone or have a thing for 90’s FPS+RTS hybrids, definitely give this one a go. I do wish they eventually revive this type of gameplay for a Battlezone III, even if only in spirit.

Steam.

Recettear: An Item Shop’s Tale

Very cute shop management/dungeon crawler about working your way out of crippling debt – a story I believe many of us can empathize with. Actually “beating the game” by paying of Recette’s debt isn’t all that hard, and most people will probably manage it first or second try, since the mechanics are so simple. However, doing so is really only about half the game, as there is plenty of story past that point and – of course – many more dungeons to crawl if you’re into that.

Sadly the dungeons lost their fun for me after a while and the store management isn’t really necessary once you are out of debt and have enough money to buy anything you need, so I’m sure I missed out on some content. Still, not a bad way to spend a couple of hours.

Steam.

The Witcher 3: Wild Hunt

It’s almost impossible to believe that this game is almost ten years old at this point – with the free graphics refresh, a few mods and a modern PC, this looks and plays just as well as most current AAA games, and the fully voice acted and immersive questlines are as great as ever. The DLCs are a must, as the game is arguably not complete without them – especially Blood and Wine, which serves as a mini-sequel and bookends Geralt’s story in a satisfying way.

My one item of criticism is that you really do need to jump through the hoops of downloading and installing mods for this, as many graphical and quality-of-life improvements are waiting for you there, some of which seem obvious in hindsight. That said, definitely grab this game.

Steam.

Black Mesa

Fan remake of the legendary classic Half-Life that takes enough liberties with the original to come out on top and deserve a playthrough, even for those of us who still remember the story in detail. Despite this being a rather short game, parts of it feel unnecessarily drawn out and tedious, a lot of reviewers call out Xen in particular and it’s hard not to agree that it could have been cut down by 50% with practically nothing of value lost. And even with all the polish and quality of life improvements (no crouch jumping!), some elements of late 90’s game design that haven’t really aged well are still there, and so you do need to have a bit of tolerance for such things to enjoy this to the fullest.

Steam.

VA-11 Hall-A: Cyberpunk Bartender Action

Bartending isn’t actually the point of this game; it’s a visual novel that briefly interrupts the story for an extremely simple minigame, which is very hard to fail. A few clients have cryptic requests and some are practically impossible to deduce by logic, so you might as well pull up the wiki – again, the bartending minigame isn’t the point, anyway. I still strongly recommend this game for the excellent writing, great characters and music – it’s not too long, and my greatest complaint is that there isn’t (yet) a part two.

Steam.

Grand Theft Auto V

The fifth main entry in the GTA series is very much more of the same type of gameplay and story that we’re used to, now in a somewhat fresh setting. That said, my main complaint is that there isn’t more of it, as completing the main questline left me feeling I still had much to explore, but no incentive to actually do so. I suppose the idea is to play online but as someone with little patience for multiplayer outside my circle of friends, I would have liked more single player content, even if they were autogenerated missions. 60 hours is still a decent playtime though, especially for a game that goes on sale a lot, so pick this up if you haven’t already.

Steam.

Hades

Excellently written, beautifully animated and extremely satisfying. I was worried that Supergiant had lost their touch after trying Pyre, but this is a very strong return to form and a fresh take on rouge-lites where dying doesn’t reset the story to zero, but actually advances it and often unlocks new possibilities for the next run. Once you beat the game, there’s really a ton of story left to enjoy, with increasing difficulty if you want it. This gets nothing less than an unqualified thumbs up from me.

Steam.

Categories
Mat

Julmusttestet 2022

“Vad för sorts idiot publicerar ett test av julmust EFTER jul?!?” Ja, hej och välkomna till min blogg! Där tidigare års artikel har kommit ut till den väntande allmänheten i god tid inför att detta det allra viktigaste av inköpsbeslut ska fattas, kommer 2022 års test först efter att vi alla påbörjat vår 11 månader långa paus i drickandet av julmust. Det finns ingen ursäkt för detta, men jag ber om ursäkt ändå. Med det sagt…

Topp tre 2022

Bäst i test: Roslagens Brygghus Julmust Eklagrad Bourbon

Andra plats: Roslagens Brygghus Gammaldags Julmust

Roslagen Brygghus imponerade stort på panelen i år, med två av tre pallplaceringar. En omsorgsfull fatlagring som infuserar julmusten med rika, fylliga toner av ek och vanilj kan verkligen höja denna redan från början härliga kulturdryck till skyarna. Här handlar det emellertid inte bara om söta smaker utan också en angenäm kryddighet som gjorde att även den olagrade “gammaldags” musten vann panelens enhälliga gillande.

Tredje plats: Hammars Julmust Whiskyfatslagrad 2016

Hammars Bryggeri har vi druckit tidigare men med ett lysande undantag har de inte imponerat på vår panel. Här är det emellertid 2020 års vinnare som återkommer med briljans – eftersom årgången är densamma misstänker vi att detta är samma must som helt enkelt fått ligga och gotta till sig ett par år till. Utmärkt fyllighet och en tydlig fatkaraktär, samtidigt utan att tumma på den traditionella smaken. Mums!

Hela listan

Här är de övriga julmustar vi provade 2022, rangordnade från bäst till sämst.

Zeunerts Julmust – Fjärdeplats även 2021 och snubblande nära en pallplacering. Då som nu, en referens för hur äkta julmust smakar.

Remmarlöv Gårdsbryggeri Julmust – Söt och fyllig smak, inte dålig alls.

Dufvenkrooks Julmust Halvtorr – Ett märke vi känner igen från god glögg. Helt okej på att göra must också, visar det sig.

Grebbestad Julmust – Klart bättre än genomsnittet. Här finns potential för en riktigt god must om man vågade ta ut svängarna lite.

Åre Soda Co. Julmust – Panelen var delad i sitt omdöme, men ingen fann den odrickbar – en helt okej julmust.

Roslagens Julmust Lakrits – Här förväntade vi oss besvikelse, men den här var inte dålig alls, en höjdare förutsatt att man gillar lakrits.

Hammars Julmust – Inte särskilt spännande, trots att den utgör grundmaterial till en av våra återkommande favoriter. Förvånansvärt.

Nygårda Ekfatslagrad 6 månader – Vi undrar, liksom 2020 då den här testades sist, om den verkligen är ekfatslagrad på riktigt. Tunn i smaken.

Sahlins Brygghus Dalamust – Något trist och smaksvag. Ingen höjdare.

Nyckelbryggerier Gammaldags Julmust – Tvåa i 2020 års test, men här undrar vi om man inte kan ha ändrat receptet till det sämre. Trist och för kraftigt kolsyrad.

Svenskt Mathantverk Enbärsmust – God och med kraftig smak av enbär, som tyvärr tar den utanför spelplanen avseende hur julmust bör smaka.

Tempel Brygghus Julmust – Godare än sist vi provade den, antagligen är receptet uppdaterat, och tur var väl det. Imponerade ändå inte särskilt på panelen.

Tasty America Julmust Cola – Panelens åsikter var något delade men det sammanvägda betyget blev inte högt. Åtminstone smakrik.

Soda Nation/Judiska Muséet Chanukkamust – Bryggs oss veterligen fortfarande av Sahlins och är snarlik Dalamusten, men gillades av någon anledning ännu mindre av årets panel.

Bryggverket Julmusch – Vi vet inte om namnet ska antyda att detta egentligen inte är en julmust, men i sånt fall stämmer det. Panelen fann smaken mest konstig.

Stockholm Brewing Julmust Classic Classic – Inte en felskrivning, den heter så. Ingen höjdare, ansåg panelen, och det blev inte bättre med tillsatt smak.

Ten Hands Soda Julmust – Torr och sträv, kanske ett försök att uppnå en vuxnare karaktär. Inte imponerande resultat.

Gbg Soda Julmust – Har legat högt upp på listan tidigare år men så ej denna gång. Nytt recept eller förfinade smaklökar?

Stockholm Brewing Julmust Apelsin Vanilj/Körsbär Vanilj – En från början ganska trist julmust hjälps inte av att man tillsätter smaker som påminner om billigt godis.

Spendrups Trocamust – Trocadero är kärlek, men detta är helt smaklöst. Varför?

Omnipollo Holiday Sour – En alkfri suröl “inspirerad av julmust”. Nå, bättre att dricka äkta vara då än detta svaga försök, tycker panelen.

Törst Real Julmust – Liksom tidigare år är panalen i princip enig i sin avmak mot denna. Snudd på odrickbar.

Categories
Speltest

Speltest: December 2022

Den återkommande traditionen att skriva små recensioner av alla spel jag spelat de senaste åren är här igen! Intresset för datorspel går i ganska kraftiga vågor för mig och min “backlog” är lång – vissa av spelen jag recenserar här kom ut för nästan ett decennium sedan. Men visst visar det på mediets hållbarhet att så många av dem fortfarande håller måttet idag?

Som vanligt skriver jag också för att kunna publicera på andra sajter, varför texterna är avsiktligt korta och på engelska.

Borderlands: The Pre-sequel

A sequel to Borderlands 2 that could have been an expansion, considering how few changes there are from the previous game. That said, the story campaign and six new playable classes make for a good chunk of playing time and if you liked the other Borderlands installments, you’ll like this one too. It also does a good job of fleshing out the lore, letting us experience parts of the story that are only referenced in earlier/later games. There’s enough here that I will recommend the Pre-sequel to fans of the series, but best to pick it up on sale.

Steam.

Deus Ex: Mankind Divided

A new chapter in the Deus Ex series which improves on some aspects of Human Revolution but is, generally speaking, an expansion which offers fans of the previous game about 50 hours more of the same. I do love the upgraded graphics which still look great eight years later, the environments are exciting to explore and there is little in the way of forced stealth gameplay – all significant improvements. The story does leave you on a cliffhanger (as of Nov 2022, there are rumours of a sequel in early production, so we can hope that the story is eventually continued) which the short DLC prison story does virtually nothing to address. That said, if you haven’t played it yet, I definitely recommend picking it up as it’s usually available at a good price.

Steam.

Pyre

I absolutely loved Supergiant’s first two games and am currently in the process of devouring their fourth, but things seem to have taken an odd turn with Pyre. The primary gameplay loop – essentially fantasy basketball – is unengaging and gets stale quickly, the story and characters aren’t very interesting, and although the art is beautiful, that alone wasn’t enough to keep me invested. I have the feeling the developers correctly predicted some people wouldn’t care much for the actual game part of the game, so there’s an option to turn the difficulty down to what is essentially a pure story mode – but then we’re left with a visual novel type of game where, again, the story didn’t really connect for me. Give it a shot if you must, but if your backlog of games is long enough as it is, better to give this one a miss.

Steam.

Fallout 4

I had spent a fair number of hours playing this game before I gave it up the first time and unhappily consigned it to the bin. It was just not engaging me, and the story wasn’t taking itself very seriously at all, focusing around a kidnapped baby which the main character appears to completely forget about 15 minutes in, leaving us to focus instead on endlessly repeating sidequests. The story only properly picks back up near the end of the game, where we’re left with the typical choice of destroying the big bad or joining them – slightly less of an obvious moral choice than I expected.

I had a better experience the second time I tried it, after installing a few quality-of-life mods (sadly, always a necessity with Bethesda games) and figuring out the very particular way the game expects to be played, utterly broken building system included. The story does pick up eventually, there is a lot of world building going on if you’re interested, and managing your settlements to make them grow and flourish can be very satisfying – your own little post-apocalyptic SimCity.

I eventually found enough to like about Fallout 4 that I spent a considerable time exploring the huge open world and DLCs, and apparently the series took a further downturn with the multiplayer-focused sequel, so I do recommend picking this up if you’re a fan of the series.

Steam.

Overload

As it was promising a return to retro-style action, I was excited to play this game, as I was raised on 90’s shooters. Sadly, this does not build on the foundations of the original to create something new and interesting the way Doom did, but rather, it’s a return to repetitive level design, samey enemies and simple gameplay that doesn’t engage the way it used to, now that there are so many better games to choose from. In addition, the game has an annoying habit of making you search through every nook and cranny for upgrades – or you’re irrevocably handicapped for the rest of the game. This kills the flow as you might find yourself alt-tabbing to a wiki rather than sniffing through the entire map after you’ve already cleared it. Between the unimproved gameplay, lack of any compelling story, the frustrating hunt for secrets and the repetitive design, there isn’t enough to earn a recommendation.

Steam.

Helltaker

A short, cute game that feels like it wants to be a dating sim but is somehow a puzzle instead, with only the faintest visual novel elements. At the fantastic prize of ABSOLUTELY FREE, it’s a perfect little time sink, and I strongly recommend it even if you’re just attracted by the art style. I’m looking forward to what comes next in the series.

Steam.

Vampire Survivors

Games offering this general style of gameplay have been around forever, but that doesn’t mean there’s no space for another one, especially when executed so competently. The mechanics are simple yet satisfying and there’s no online element to annoy you. However, the art style is somewhat unremarkable and you’ll get bored of playing the same maps over and over pretty quickly, but not before unlocking all the characters and trying out some of the incredibly trippy weapon combinations on offer. Even at full price, this game is a bargain and I strongly recommend it.

Steam.

Titanfall 2

Exceptionally well executed mecha-FPS with a story campaign that left me hoping for more, even as the game makes it very clear it really wants you to play it online (and unfortunately, the prequel and sequel are multiplayer-only). There is a decent story, plenty of gameplay additions beyond the standard FPS formula to keep things interesting, great weapon variety and a lot of freedom in terms of how to approach each challenge. Unfortunately, there does not seem to be a true sequel in the works, but I’d strongly recommend picking this up anyway, as it doesn’t end on a cliffhanger and truly is a great game to enjoy, even if it can be played through in a weekend.

Steam.

Mass Effect: Andromeda

Somewhat underappreciated side story in the Mass Effect universe which focuses on the exploration and colonization of the Andromeda galaxy. I feel the developers combined some of my favorite elements from Mass Effect 1 and 2 here, resulting in an even stronger game, but the somewhat loose connection to the story of the first two games might leave some feeling that this doesn’t have the same emotional impact. The game also suffers from a bit of “Fallout syndrome” where endless and somewhat repetitive side questing is necessary to level up your character and unlock story elements that get you to your desired ending, even as those side quests do not appear to be related to the story at all (why Ryder, main hope of survival for the human race, is asked to run trivial fetch quests is beyond my comprehension).

That said, I found more than enough to like here to give MEA my recommendation, and I find it unfortunate that the poor reception this game has gotten most likely dashes any chances of a proper sequel. Hopefully, a future Mass Effect installment will find a way to let us continue the story in Andromeda, even if the focus returns to the Milky Way.

Steam.

Categories
Resande

Japan before and after lockdown

Jag skrev det här inlägget för en webbplats med mestadels internationell publik, så det är på engelska. Postar här mest för framtida referens, men håll till godo om du tycker att det är intressant!

In January 2020, as I was relaxing in Okinawa following a business trip to Tokyo, I had no idea that this visit to Japan would be the last one for nearly three years. I had no idea that a pandemic had already started and that borders across the globe, not just Japan’s, were shortly going to be walled shut. When I learned in late summer 2022 that restrictions were being lifted and that Japan was once again open to tourists, I was overjoyed and booked a flight at my earliest opportunity.

Having just come back, many friends asked to hear about my experiences. In particular, several asked about the remaining pandemic-related restrictions – or lack of same. Japan remains a highly attractive destination but spending the money and time to go to a far away country only to find the visit diminished by the kind of restrictions on normal life we’ve now mostly left behind us makes for an uncomfortable prospect when planning a holiday.

I wanted to share a few paragraphs about my own experience and observations in case someone finds them helpful. To be clear, this is not a treatise, and the purpose is not to argue the (non-)effectiveness of any particular means of limiting the spread of infectious diseases, or to argue for or against its implementation. I’m merely sharing my own learnings for you to do with as you please.

Preparing for my departure to Japan, I was provided with a website where I could provide information relating to customs, migration and vaccination status. In effectiveness that I daresay would put most other border control authorities to shame, I received confirmation within hours that I had qualified for the “fast track” – which requires one to either be vaccinated (including a booster shot) or to submit a fresh PCR test. The digital EU vaccination document was readily accepted as proof of the former.

Upon arrival I showed the border control agents the QR codes provided by the website and was expediently whisked through – the process barely took 10 minutes in total, most of it walking. Haneda airport provides free Wi-Fi so in the event that I had forgotten to save the codes, I could have accessed the website from there. Paper forms were also offered as a fallback.

The airport staff gave me a pamphlet outlining the Japanese government’s instructions for tourists to help prevent the spread of COVID-19: Wearing a face mask when indoors and having a conversation with someone at a short distance, avoiding extremely crowded situations and places, and staying at home when feeling unwell. Perfectly reasonable guidance which seems to align well with our current best understanding of how and where the virus is likely to spread.

To my surprise the instructions in the pamphlet turned out to have very little to do with how people in Japan actually behaved, from locals to tourists. In practice, face mask wearing was almost ubiquitous outdoors and indoors, but generally taken off once seated in any eating or drinking establishment, no matter how densely packed, and often among people having a conversation. In public baths (sento/onsen), they were not used at all. Acrylic dividers between tables or seats were often available, but frequently removed as well. Tokyo’s crowds were as intense as ever, and social distancing (2020’s kanji of the year!) appeared all but forgotten, particularly on public transport.

Masks worn were mostly the inexpensive, disposable non-woven variety that does not fit tightly around the face, as well as more snug-fitting and aesthetically pleasing models. N95 masks or the similar FFP2 filtering masks that were mandatory in some European countries for a while were rare, as were reusable cloth masks – but all were easy to find in stores, as was the case even before the pandemic. I did not see any particular guidance around the type of mask to wear, and mine (a washable multi-layer “AIRism” mask from UNIQLO) was never commented or inquired upon.

Hand disinfection stations were ubiquitous in virtually every building, and some places would check body temperature (using a simple IR camera) on entry, but COVID-19 vaccination or test certificates were neither requested nor required anywhere I visited. It seems as though the hospitality industry in Japan somehow made it through the lockdown mostly intact, as I found hotels, tourist spots and activities operating seemingly as normal, without any obvious limitations. A few places were running with shorter operating hours, partially attributable to the autumn season.

In summary, I was pleased to find Japan very much as I left it. I’m sure there are things of lesser impact that I missed, but nothing to distract from what’s essential. Someone considering a trip should naturally keep abreast with the latest news and guidance, but assuming things remain more or less as they are, there is nothing that would inhibit or limit one’s enjoyment of a holiday to this amazing country. I myself hope to visit again very soon.

Categories
Mat

Julmusttestet 2021

Julmust! Denna kulturdryck och stöttepelare i den svenska kultursjälen, åtminstone kring jul och åtminstone när julöl inte finns att tillgå. Förra året sammanstrålade vi, landets främsta experter på julmust (kanske), för att utse det årets finaste exemplar. Det gick så bra att vi kände oss sugna på att repetera övningen, med ett ännu större utbud och med några oväntade uppstickare. Julmust med kaffe, blåbär eller apelsin – funkar det?

Totalt 18 sorter provades och vi väljer här att presentera de tre godaste lite mer utförligt, därefter återstående i fallande ordning.

Vinnare 2021

Beer Studio/Pop Art Craft Soda Blueberry Julmust

Smaksatt julmust kan slå åt båda hållen, från töntig gimmick till eufori utan dess like. Tyvärr oftast det förstnämnda. En bra jämnvikt mellan den tillförda smaken och originalet är nyckeln till framgång, en julmust som inte smakar julmust blir ju något helt annat, oavsett vad det står på etiketten. Denna must som kommer i praktisk burk vann hela panelens gillande med sin bäriga men inte överdrivet söta smak. Enda nackdelen är priset som ligger runt 40 kr styck.

Näst godast 2021

Gbg Soda Julmust Kardemumma

Panelen var ljummen mot Gbg Sodas vanliga must men denna variant kryddad med en av de juligaste bland kryddor föll oss väl i smaken med ett medelbetyg bara en hårsmån under vinnarens. Kardemumman gör ett kraftfullt intryck när man sätter glaset till munnen men doften av krydda är starkare än smaken och väl i munnen samverkar den väl med den balanserade sötman.

Tredje godast 2021

Grebbestad Julmust

Ett återkommande tvistoämne inom panelen är hur en julmust egentligen ska smaka för att ligga så nära originalet som möjligt – en referens för övriga att bedömas efter. Grebbestad och Zeunerts kämpade hårt om tredjeplatsen i år och det var mikrobryggeriet från Bohuslän som tog hem segern. Inga konstiga tillsatser här, bara ett klassiskt hantverk taget till perfektion som bringar ljuva känslor av nostalgi.

Hela listan

Här är resterande provade julmustar från bäst till sämst, med korta kommentarer från undertecknad.

Zeunerts Julmust – Godast eftersmak i testet. En referens för hur äkta julmust smakar.

Nygårda Lagrad på Bourbonfat – Tydlig karaktär av bourbon och en bra must i botten som bär upp.

Nygårda Lagrad på Romfat – Smakar romrussin vilket gifter sig bra med den goda musten man utgått ifrån.

Nygårda Julmust Original – En god must utan krusiduller. Behöver inte fatlagras för att vara god.

Sahlins Brygghus Dalamust/Chanukkamust – Helt okej men något smaksvag. Dalamust och Chanukkamust är exakt samma produkt.

Gbg Soda Julmust – Innehåller kaffe som sätter en tydlig prägel på smaken. Delade panelen.

Nyckelbryggerier Gammaldags Julmust – Kom på andra plats 2020 men panelen är enig om att den var betydligt bättre då. Nervattnad?

Nygårda Lagrad på Ekfat – Här blev vi besvikna. Saknar helt fatkaraktär vilket vi för övrigt även noterade i fjol. Vad är poängen?

Hammars Julmust Apelsin – Smakar som billigt apelsingodis. En besvikelse, vi vet att Hammars kan bättre än så här.

Dufvenkrooks Julmust Enbär – Kraftig smak av enbär. Gott, men dominerar fullständigt.

Sodalicious Xmust – Flytande pepparkaksdeg, kraftigt sötad. Kanske något för de små.

Apotekarnes Bryggarmust – Must blandad med alkoholfri julöl och smaken blir tyvärr därefter.

Tempel Julmust – Smakar inte julmust och vi hade svårt att identifiera vad det smakar istället, men det var inte gott. Synd, för vi vet att Tempel kan när det gäller öl.

Hammars Julmust Sockerfri – Smaklöst blask, det enda panelen kan urskilja är aspartam.

Categories
Fordon och trafik

Världens sämsta gigjobb

Jag har skrivit lite om elsparkcyklar förut och gör ingen hemlighet av att jag verkligen gillar konceptet, även om detaljerna kan behöva filas på. Logistiken kring laddandet av batterier är en del som jag aldrig riktigt fattat. En del företag verkar köra runt med skruttiga skåpbilar och samla in sparkarna i omgångar – andra har batterier som tycks avsedda att bytas direkt på gatan. Betydligt smartare och bättre för miljön, förstås. Men vem byter ut dem? Jag, visar det sig.

Tier införde nyligen en ny funktion i sin app: byt batteri i en spark och få 15 minuter gratis. Inte alls dumt med tanke på att de flesta turer jag tar med dem är kortare än så, varför det borde gå att byta längs vägen och få resan betald. Men går det faktiskt att göra vinst på det och köra in betydligt fler minuter än jag förbrukar? Vad händer om jag går in för att byta massor av batterier på så många elsparkar jag kommer åt? Vetenskapen kräver svar! På helt andra frågor förvisso, men det hindrar inte mig.

En vän av ordning noterar här att jag precis uppfunnit världens sämsta gigjobb eftersom det inte går att köpa mat, dricka öl eller betala räkningar för bonusminuter från Tier. Med det sagt har jag som tur är inte stora problem med att handla mat för dagen och jag åker tillräckligt ofta elspark för att minuterna ska förbrukas oavsett, så nog går det att prata om en vinst – dessutom en som Skatteverket inte kommer åt! Förrän typ 15 minuter efter att de hittar den här bloggen, det vill säga.

Sagt och gjort. På tre timmar lyckades jag byta inte mindre än 39 batterier vilket gav mig 585 minuter eller nästan 10 timmar tillbaka. Tier tar dock betalt för tiden det tar att köra sparken dit de laddade batterierna finns, så en del – 101 minuter eller knappt två timmar – gick åt till det. Tar man bort detta och räknar om det i kronor (Tier tar 2,50 kr per minut i avgift) blir det ändå en timlön på helt respektabla 394 kr, och jag tjänade 2,7 minuter för varje minut jag spenderade. Inte så illa för världens sämsta gigjobb!

Så hur går det till? Appen markerar skotrar med dåliga batterier med små blixtar på kartan. Lustigt nog ibland även skotrar som har fulla batterier, kanske återstår en del buggar att fixa. Som den miljövän jag är testade jag inte om det gick att få minuter för att byta batterier som redan var fulla. En annan ikon på kartan visar var man kan byta batterier. Tier verkar ha hyrt in sig på ett stort antal 7-Eleven och Pressbyrån, så det finns ganska många val. Väl framme lyfter man ut batteriet, byter det mot ett färdigt från laddaren inne i butiken, sätter det i sparken och så är saken klar.

Processen komplicerades en smula av att kartsymbolerna i appen stundtals var ganska långt ifrån verkligheten och att det kunde ta tid att få sparken att fatta att den hade fått ett nytt batteri. Å andra sidan hände det rätt ofta att det stod 2-3 sparkar i behov av laddning precis utanför ett laddställe. En del fanns även i anslutning till gröna zoner där man får bonusminuter för att parkera, vilket naturligtvis sockrade dealen ytterligare.

Jag upptäckte av bara farten några fler buggar i Tier-appen, till exempel att den tappar konceptet när man har mer än typ två timmar i gratisminuter. Jag antar att ingen av deras testare varit tålmodig nog att försöka byta nästan 40 batterier i följd. Tier, om ni läser detta så hit me up, jag kan tjänstgöra som prisvärd men oftast trevlig konsult också!

Snubbarna med skåpbilar och andra professionella batteribytare har emellertid inte mycket att frukta från anstormningen av uttråkade ingenjörer från Vasastan i jakt på bonusminuter. Efter tre timmars jakt runt norra Stockholms innerstad var jag dyngsur av svett, synnerligen trött på tillvaron och beredd att spendera hela min dagsförtjänst på öl. På så vis ganska lik en riktig arbetare, alltså.

Categories
Aargh, idioter! Fordon och trafik

Ett upprop till hästens försvar

Kamrater, medborgare, hästvänner!

Vi, de undertecknade, önskar med detta brev höja våra röster mot det allt snabbare intåget av bilism i vårt älskade samhälle. Vi är av meningen att denna nya teknologi inte medför några särskilda fördelar jämfört med det transportmedel som i hundratals år tjänat vårt samhälle på bästa sätt: Hästen.

Låt oss först konstatera att en häst aldrig behöver “tankas”. Gräs är inte bara billigt utan finns överallt i vårt avlånga land. Förvisso byggs ett nätverk av s k “tankstationer” ut redan i detta nu, men detta medför ju stora kostnader för infrastruktur som kunde användas till mer trängande syften, till exempel anläggandet av fler ridsportarenor.

Och på tal om teknik, är en annan av hästens många fördelar att den aldrig kan gå sönder. Detta på grund av att hästen är befriad från tekniska moderniteter, som ju ständigt krånglar. Förutom då de “moderna” hästar som är utrustade med finesser såsom sadel eller träns – onödigt trams, då alla riktiga män ändå rider barbacka.

Bilen kan framför allt inte tävla med hästen i den allerstädes viktiga frågan om räckvidd. Minns mongolerna, som invaderade hela kontinenter burna endast på hästrygg. Vi kan nog alla vara överens om att en sådan sak vore omöjlig med bränsledrivna fordon så som tekniken ser ut just idag.

De känslomässiga aspekterna är också viktiga. Hästens behagliga läten, det rytmiska hovstampet, gnäggandet, den säregna doften av dess avföring. Bilar är med sitt jämna brummande känslolösa och sittandes, om nog så bekvämt, i kupén får en knappt alls förnimma någon angenäm doft. Upplevelsen är i allt väsentligt fruktansvärt steril.

Våra opponenter har framfört bilens “objektiva” fördelar och även om vi inte avser repetera dem här vill vi helt oaktat dessa framhäva att vi har en stark känslomässig koppling till hästen och associerar hästägandet med en stor personlig prestige, särskilt om hästen var väldigt dyr i inköp och iögonfallande för allmänheten. Särskild hänsyn bör tas till att många av våra medlemmar är män över 60 år, som inte har så många andra attribut kvar med vilka att söka locka till sig fagra möars uppmärksamhet.

Vi ser på den fortsatta utvecklingen med oro. Hur ska vi ryttare kunna få tag i foder när man bygger tankningsanläggningar på ängarna och ersätter vattenhoar med Seven-Eleven? Att ersätta mjuka, behagliga lerstigar med hård, onaturlig asfalt är tillika dåligt både för ridkomforten och hovarna.

Vi vänder oss mot att strängare djurskyddslagar gör det både dyrt och omständligt för oss att fortsätta behandla våra djur illa, som vi gjort i hundratals år. Dessutom upplever vi en ökad brist på förståelse från allmänheten. Förvisso medger vi att den milda förorening av gatumiljön som hästtransporterna medför utgör en viss olägenhet. Men det kan faktiskt inte vara vårt ansvar att städa upp våra egna hästars skit, det ansvaret måste rimligen ligga på hästens tillverkare, det vill säga, dess föräldrar.

Vi kräver därför att Konungen omgående vidtar åtgärder för att stoppa bilismens framfart och bevara hästens roll som samhällets främsta och huvudsakliga transportmedel.

Med vänliga hälsningar,
Hästupproret 3.0

Categories
Fordon och trafik

Provkörd: Lynk & Co 01

Om man vill associera varje bil med en nationalitet så är det här en utmaning. Är den svensk eller kinesisk? Företaget har sin bas i Göteborg men sin tillverkning i Kina, men det kan sägas om Polestar också, som ändå med sitt nära släktskap till Volvo oftast uppfattas som svenskt. Många komponenter delas mellan alla tre. Å andra sidan säljer Lynk & Co de flesta av sina modeller enbart på den kinesiska marknaden. Det blir nog enklast att inte tänka så mycket, här finns att tröska igenom ändå.

Lynk & Co 01 verkar nästan skräddarsydd för att passa mitt i krysset av vad den genomsnittliga bilköparen önskar sig idag. Det är en kompakt SUV med generösa utrymmen och gott och väl plats för fyra vuxna med packning. Den går kortare (ungefär 7 mil) sträckor helt på eldrift, vilket borgar för ett gott miljösamvete bara man har möjlighet att ladda hemma, men sedan kommer man nästan 50 mil till på bensin. Och den går tillräckligt fort för alla rimliga behov vid vardagskörning.

Fruktansvärt tråkig, alltså? Mja, inte finns det mycket som tilltalar en entusiast, varken dynamiska köregenskaper eller någon särskilt unik karaktär. Lynk & Co 01 är snarare en bil för den som behöver tillgång till bil i vardagen och vill ha något som kryssar i alla kryssrutor till ett rimligt pris – och som kanske uppskattar flexibiliteten i Lynk & Co:s prenumeration utan bindningstid, där allt utom bränsle ingår för 5 500 kr/månad.

Har man möjlighet att ladda hemma blir den senare kostnaden mycket låg. Även i hybridläge får jag i princip stampa på gasen för att bensinmotorn ska gå igång, så länge det finns batteri kvar – inte ens i motorvägsfart behöver elmotorn någon hjälp. Det finns ett “Power”-läge i vilken bensinmotorn går jämt, men jag har svårt att se nyttan med det. Om man inte varvar som en galning är kraftresurserna högst begränsade.

Åter till priset. Nästan sex lax per månad är inte anmärkningsvärt billigt vid första ögonkastet men efter att ha kört 01:an några dagar är min upplevelse att det är fasligt mycket bil för pengarna. Det enda utrustningsalternativet som erbjuds är i princip fullsmetat, med generöst panoramaglastak, mängder av smarta finesser och Android-baserat infotainment liknande det i Polestar/Volvo i funktionalitet – fast med större skärm och utan Google-tjänster. Det gör väldigt liten skillnad i praktiken just nu, men om Googles ekosystem får fäste kan man tänka sig att det blir svårt för de andra att hänga med på sikt.

Förutom den flexibla prenumerationen erbjuder Lynk & Co också möjligheten att hyra ut din bil och få betalt för det. Denna tjänst verkar inte ha kommit igång riktigt så jag lyckades inte testa den skarpt, men tanken är att du – när du inte använder bilen under en period och har den parkerad så att den är tillgänglig för andra – kan hyra ut den genom Lynk & Co och i teorin till och med tjäna in månadskostnaden. Det är förstås helt rätt tänkt i en värld som försöker vara miljömedveten samtidigt som de flesta bilar står parkerade och oanvända större delen av sin livstid. Huruvida det faktiskt kommer att utnyttjas återstår att se.

Lustigt nog kanske det märke som har svårast att freda sig från Lynk & Co 01:s kombination av prisvärdhet och praktiska egenskaper finns inom samma koncern. Jag har oerhört svårt att se varför någon skulle punga ut mer pengar för en Volvo XC40 hybrid när 01:an gör i princip allting bättre, enbart på “bekostnad” av ett mindre välkänt varumärke. Andra kompakta SUVar i premiumklassen har nog också anledning att svettas en smula, särskilt de som fortfarande kämpar med att komma in i matchen vad gäller infotainment.

Categories
Mat

Testat: Fluère Alkoholfritt “Gin”

Flaskan är jävligt snygg, konstaterar jag när jag plockar ner den från hyllan på ICA. Att kunna handla “sprit” med matvarorna är också riktigt trevligt. Om nu bara smaken närmar sig något acceptabelt, tänker jag mig att detta kan bli ett återkommande inslag när jag av någon anledning inte vill dricka alkohol men ändå känner för att svalka mig med en “Gin” och Tonic.

Sagt och gjort. Fluère Non Alcoholic Distilled Spirit (Floral Blend of Botanicals) marknadsför sig inte som ett gin eftersom det, förstås, inte är ett gin, men det är ganska uppenbart från produktens beskrivning att denna ska mixas med tonic och dekoreras med en klyfta citrus. Både flaskan och etiketten ser ut att vara inspirerade av Bombay Sapphire, men utan att likna en billig kopia. Bra.

Öppnar skruvkorken och vädrar försiktigt. Ingenting. Va? Till och med billig gin har en tydlig enbärsarom och enbär står med som en av huvudingredienserna i Fluère, men jag kämpar för att urskilja något över huvud taget. Den enda tydliga doft jag snappar upp är sockerlag. Men jag gör nog fel, det är inte så här den ska användas, i produktbeskrivningen står det tydligt MADE FOR MIXING. Okej.

Drar ihop en “GT” på en sexa Fluère, ett par klyftor lime och en skvätt Fever Tree som jag hade slaskandes i kylen. Inte en tonic som borde ta över alls, tvärtom, jag köper den oftast just för att den inte lägger sig i. Trots detta smakar första och andra klunken just… tonic. Med en hint av lime och kanske någon försiktig kuliss av något örtigt som förgäves försöker tränga sig igenom.

Enda möjligheten att kalla detta jämförbart med en GT eller någon riktig drink över huvud taget är om man redan dragit så många järn att smaklökarna sagt adjö. Bidraget till smakupplevelsen kan jämföras med ett slarvigt diskat glas.

Jag har absolut inget emot nykterhet, var och en har en självklar rätt att välja vad och när de vill äta och dricka. Jag har något emot företag som säljer sockerlag i glasflaska och klär på det en fin etikett i syfte att profitera på dem som inte vet bättre.

På nätet ser jag Fluère till salu för 200-400 kronor. Med tanke på att en flaska av den äkta varan – inklusive svensk alkoholskatt – går för ungefär samma pris finns det inget som helst skäl att rekommendera det här blasket. På min lokala ICA hade jag turen att hitta den märkt med “kort datum”, varför den slumpades bort för tio kronor flaskan.

Det priset känns, allt sammantaget, helt rimligt. Att man ska behöva hålla koll på bäst före-datum för en flaska homeopatidricka med socker, desto mindre så.