Jamon Holmgren

Choosing a Game Engine

July 14, 2024

There are more or less six game engines worth evaluating: GameMaker, Unity, Unreal, Godot, Armory, and CryEngine.

I really only have experience with GameMaker, Unity, and Godot. And I only really have extensive experience with GameMaker, although I'm building a game with Godot 4 right now.

But you came to my website, so I'm going to give you my opinion. (And I have been coding for 30 years, of which the first ten years were mostly building games!)

These are in order of how much I recommend them based on my experience. They are not necessarily in order of how good they are for your game. I also don't cover consoles, as I don't know much about those.

Godot

With the release of Godot 4, Godot is now well on its way to competing with the big boys. It started out as a 2D game engine but has added some really great 3D support.

It's similar in some ways to Unity but open source and just works the way I think. I'm very impressed so far with my game!

It's also pretty beginner-friendly, and I found that git version control works great on it.

Editor: works on Mac/PC/Linux and can deploy to desktop, mobile, VR, and web.

Downsides: still being developed, very few assets in their library, much smaller (but very passionate) community. You also can't make super high-fidelity 3D games like Unreal.

Cost: totally free. You can donate (I intend to, once I get to revenue with my game.)

GameMaker

GameMaker only does 2D. If you need 3D, move along. It costs money to buy, you use their GML language, and works well with 2D sprites and whatnot.

I've built many games in GameMaker over the last 20 years. Famously, Thor from Pirate Software is using GameMaker for his game, Heartbound. It's a good system and I know it very, very well. It's very beginner-friendly.

Editor: works on Mac/PC, Linux with some effort, and can deploy to desktop, mobile, and web. No VR.

Downsides: only 2D, GML is quirky, the editor is quirky, and they don't seem to really listen to the community IMO. Also, git doesn't work very well with it if you have more than one person contributing.

Cost: $100 one-time for a lifetime license. Pretty good deal!

Unity

The most beginner-friendly that also supports 3D. It has the biggest community. It has a massive catalog of assets, many free. There are more tutorials than any other. It uses C# which is a fine language.

Editor: works on Mac/PC/Linux and can deploy to desktop, mobile, VR, and web.

Downsides: you can't make super high fidelity 3D games like Unreal. I found it very difficult to use version control with others.

Cost: It's free to get started, but then they have a very confusing (to me) pricing scheme that nobody seems to like all that much.

Unreal

I haven't used Unreal ever. It seems like the most capable on this list, with triple-A titles being regularly made with it. You can build nearly anything and their tech seems unmatched (except maybe by CryEngine). Their editor has a pretty good "Blueprint" system for wiring up things without code.

Editor: works on Mac/PC/Linux and can deploy to desktop, mobile, and VR. Can deploy to web with some effort.

Downsides: uses C++ which is hard to learn and a massive language.

Cost: free until $1M in revenue, then either 5% royalty beyond that (or a per-seat license).

CryEngine

I don't know much about this other than it's well-regarded in the serious game industry and the games made with it look pretty darn good.

Editor: only works on PC. Can deploy to desktop, and I think it can go to mobile and VR.

Downsides: smaller community, not sure what else

Cost: free up to $5k annual revenue, then 5% for anything after that

Armory

I only learned about it doing research for this article. It looks cool; it plugs into Blender, which is a very popular 3D and animations design software.

I don't have much other info; go check them out if this sounds interesting to you!

ADHD and me

July 3, 2024

I’ve suspected for many years that I have ADHD of some sort.

Note: if you think you have ADHD and are reading this article, it might seem way too long — I understand. I did my best to write it in a compelling way, and I think it might be helpful for you to understand what a pathway toward treatment looks like!

Note 2: nothing in here is medical advice; seek a professional.

When I was a kid, I’d get really sucked into what I was doing and live in my own world. I would read voraciously, but I would skip past “boring” paragraphs and essentially skim-read my way to the end. When I discovered computers in 6th grade I would spend hours every day coding, and only my mom forcing me to go outside would break my concentration. Despite the invested hours, I made probably 200 games and only finished 2 or 3 in my whole teenage years. I’d always want to move on to the next one.

I also grew up a PK (pastor’s kid), and just couldn’t really concentrate during hour-long sermons. I’d imagine playing basketball, coding, flying helicopters, whatever else caught my attention. I’d also fidget slightly but constantly — I was never a hyper kid, in fact a fairly calm kid (and person in general), but I do fidget a lot.

I did great in school — graduated near the top of my class, Honor Graduate, 3.9 GPA, high SAT scores. But homework was really tough for me. The only saving grace was that I had a long bus ride, so I’d frantically finish homework on the bus every morning. But I aced nearly every test and got numerous awards.

When it came time to apply for scholarships and colleges, I procrastinated and completely missed any chances; somehow I still got one $1500 scholarship which was enough to pay for the one semester of community college that I eventually completed.

ADHD is often labeled a “superpower”, and in some ways I did feel like it was, but it still has had a lot of negative impacts on my life. I have forgotten very important appointments, unintentionally ignored my wife when she’s talking (so many times), been stuck to my phone when I should have been talking with the people around me, and there are other aspects that have led to negative consequences: social media addiction, difficulty regulating diet leading to weight gain, and an annoying habit of arguing with people on the internet for hours at a time that I have within the last few years been able to work through and correct.

At work, it shows up in losing attention during meetings that I find less engaging, getting distracted by notifications, difficulty when people are speaking too slowly (I’ll “finish their sentences” for them, which can be rude sometimes), and forget all about action items once I close Zoom.

In addition, studies have shown that people with ADHD live shorter lives and make suboptimal long-term decisions. So, ADHD isn’t really a superpower.

Over the years I’ve built tons of structures to help me avoid the negative consequences of my inability to regulate my attention (which is really more accurate than “attention deficit” — you still have attention, it’s just very hard to direct/regulate). I use calendar reminders, timers, I enforce a very streamlined Slack culture at work, and I avoid playing games that hack dopamine like MMORPGs and whatnot. I write notes in Apple Notes, take lots of photos to remember things that happen, and have a running note of my highest priority tasks.

I’ve also used it to my advantage — I’ve tweeted nearly 100k times and built up a sizable following over there, partially because of how quickly I respond to people. I will think of a tweet and send it out in a couple seconds, even when I’m supposed to be doing something else.

I drank a lot of coffee and soda over the years; caffeine really helps me focus, but getting too much of it does eventually prompt some general anxiety.

Diagnosis

So; that’s the preamble, and brings me to this year.

My wife Chyra has been going down her own journey with ADHD, and suggested that I get evaluated. She also had me buy the audiobook “How to ADHD” and listen to it. (Sidenote: for stay-at-home parents, she also highly recommends the book “How to Keep House While Drowning”.)

I also discovered Dr. K on YouTube (Healthy Gamer ) and watched several videos where he talked about ADHD and Adderall/other prescriptions. Highly recommend checking it out.

I eventually scheduled an appointment with a local ADHD treatment center, which specializes in diagnosis and treatment of ADHD of all forms. There were a few steps to get through:

  1. Scheduling an appointment through their app — they use Spruce, which mostly uses a chat interface (brilliant idea — worked well with how I operate), and their staff was super responsive.
  2. Filling out multiple forms, which were repetitive and a poor UX (tweet) — mostly questions like “How often do you have trouble wrapping up the final details of a project, once the challenging parts have been done?”
  3. They messaged me on the app several times to finish the forms, and then eventually texted me outside the app — I really appreciated the persistence, but I suppose they deal with people like me all the time.
  4. The appointment itself was a 90-minute video call through the Spruce app. The specialist asked me a lot of questions about my childhood (what you read above).
  5. At the end of it, she diagnosed me with ADHD (inattentive).

According to the specialist, there are three main types of ADHD — inattentive (which used to be called ADD), hyperactive, and combined (both). My memory isn’t great on this point, but I believe she said I scored a 42 on a scale where 25 was considered ADHD. So I’m well into this category. It runs in families and is, I think, a form of neurodivergence, somewhat like autism. And like autism, it can vary widely in symptoms and severity between individuals.

Treatment

ADHD is often attributed to a lack of dopamine/norepinephrine in your brain.

There are essentially two main medication types for treating ADHD of all 3 types: stimulant and non-stimulant. Stimulants include Adderall, Ritalin, and Vyvanse, among some lesser-known ones. Non-stimulants include Guanfacine, Clonidine, and a few others. You can also do behavior therapy which can be effective as well, and a combination is often most effective.

Stimulants work, as I understand it, by boosting dopamine and norepinephrine in your brain, which boost your energy, helps you pay better attention, and keeps you alert.

I was prescribed Guanfacine (1mg) and Vyvanse (currently on 40mg, which is a common dose — can go up to 70mg). I have hypertension (and take medication for that — also runs in my family), and Guanfacine was originally developed to help treat hypertension, but was later found to have an effect on ADHD. So this seemed like a good bet for me — low side effects, well understood, treats the two main issues I have. I did have to stay on my other hypertension medication as Guanfacine by itself isn’t enough to fully control it.

Vyvanse is like Adderall and Ritalin in that it’s an amphetamine. This made me really nervous; I pretty much never take drugs outside of caffeine and my hypertension medication, and there’s a history of drug abuse in my family. I asked several doctors and other medical professionals about it and did a lot of research on YouTube. From what I understand, it’s not particularly addictive, especially if you have ADHD and take a prescribed normal dose. However, like any drug of this category, it can be abused and you can develop addiction/dependence, and thus it is tightly controlled.

In particular, I was worried about long-term effects. This is what my specialist sent me:

Hi Jamon! Great questions. Studies have actually seen that individuals treated for ADHD through their lifespan actually fair better then if not treated. One main reason being is that your executive function is better, you are more aware and make better decisions, your mood tends to be less labile, and you sleep better. There is always a risk with stimulants and cardiovascular health, but it is a risk to benefit thing. In terms of growth, I watch younger children closely, as it can suppress growth. Especially as appetite is challenged with a stimulant in place. I have not had long term issues with stomach problems. As for dependence....well you function better cognitively on it and your mind and body tend to appreciate that. So, one could consider it dependence. But on the other hand, without it individuals may seek out food, substances, etc to fill the void and give the brain what it needs. Tolerance can come during titration, and you may need a tweak here and there, but many adults stay on the same amounts once we find the sweet spot for some time.

There’s also short-term release and extended release. Adderall and Ritalin have short-term release versions as well as extended release, but Vyvanse is only extended release. The difference really has to do with how you intend to use it. Extended release can be 8-14 hours depending on the drug, while short-term is somewhere around 3-6 hours. From what I understand, short-term works best if you want to target specific times of the day but not have the effects all day, while extended-release is sort of an every day all day thing that wears off just before bed.

Since I’m on Vyvanse, I am on an extended release. I have to take it right after waking up; otherwise it’ll last too long. Vyvanse is harder to get in some areas; there just isn’t as much supply and demand is high. But so far I’ve been able to mostly stay ahead of it.

I am not currently doing any behavior therapy, but might look into it at some point. Tell me if you think it’s helpful and any advice you have there.

Effects

Guanfacine initially just made me tired in the afternoons/evenings. It helped lower my blood pressure a bit. It’s been hard to really notice major changes, although I do feel pretty calm in the mornings, which is its intended effect. It can take many weeks to fully work. Since it’s helping me control my hypertension, I’ve just felt like it’s worth taking even if I can’t easily feel the effects.

Vyvanse at 10-20mg didn’t have a noticeable effect, but at 30mg and 40mg I notice. I’m calmer, more focused, can direct my attention on things. I feel more peaceful and happy in general. I’ve lost weight, improved my productivity, and am more likely to pay attention in meetings and not get distracted by notifications. I do tend to hyperfocus for long periods of time — I recommend in the morning starting on what you want to be working on all morning. Like, get rid of the candy crush / chess / YouTube habit in the morning, because you’ll be on it all morning if you’re not careful. Take the pill and start working on something productive and it’ll carry you through.

Regarding weight loss — I am much less hungry. From what I understand, my urge to snack or overeat was my body looking for dopamine and energy and sending signals, thinking that eating was the pathway toward that. It was constantly undermining my efforts to lose weight to a healthy level. I’m down about 6-7 lbs in 2 weeks and it seems likely I’ll continue that trend for a while. However, I’ve heard the effects on weight loss will fade a bit over time; we’ll see how that goes.

I have had some sleep disruption. In the past, I’ve slept great almost always. But now, if I’m not careful, I’ll just be working on things until 2am, and then wake up fully awake at 8am. So I’ve tried to be more intentional about my sleep to compensate. I have had full 8 hour sleep nights, though; I will continue to monitor that. Sleep is important!

I also have noticed a higher heart rate on Vyvanse. And even when it’s not that high, say 75 bpm, it seems to be more “noticeable” … like I feel each heartbeat loudly, especially at night. I’m keeping a close eye on it with my Apple Watch and also blood pressure monitor (monitor).

With that said, I’ve only been on Vyvanse (at full dose) for a couple weeks and Guanfacine for a bit over a month. I’ll update this article as time goes on.

Overall

I started writing this article at 10:30am and am wrapping it up at 1pm, having focused on it nearly the whole time. Far fewer distracted moments and it’s not sitting in my drafts half-finished like so many others.

I’m very happy I was finally diagnosed and treated. I still have a long way to go, but it’s been well worth it so far.

Feedback

If I’ve gotten anything medically wrong in this blog article, please let me know. You can email me at [email protected] or Tweet at me at twitter.com/jamonholmgren. I’ll correct it as soon as I can.

I also would like to hear from you if this helped you in any way! Hit me up on email or twitter.

I’m building a game

July 3, 2024

I’ve always loved gamemaking. When I was a kid, I made around 200 games in QBasic and GameMaker. Almost none survived to this day — this was before GitHub, and I didn’t keep good backups.

Since then, I have started…and stopped…trying to build games many times over the last 20 years. I just can’t seem to sustain it to the end without losing interest.

But recently some things have changed and I have more motivation and direction than ever before.

  • I was finally diagnosed with ADHD and have some treatment in place and it’s helped me tremendously with motivation and focus
  • I discovered (through my brother Denton) the Godot Engine, a free and open source game engine, which is exactly what I want in a gamemaking software
  • I have more free time, with my kids getting older (youngest is 11) and Infinite Red being more stable, and our director level leaders have stepped up a lot in the last year to relieve the owners' workloads

The game I’m making is a helicopter combat simulation game. I don’t have a name for it yet. But I’m making good progress.

This is really my first foray into 3D gamemaking and to my surprise, I’m very impressed at how easy it has been to build in. I thought having the extra axis would make it much harder. I think 2D games have a smaller barrier in the initial build but then continue to be a slog; 3D games are harder at first but get progressively easier to build amazing experiences.

I’ll blog more about this game as I make more progress. I’ve created an Apache helicopter that can fly and there are some really cool effects that I’ve baked into the game to make it more immersive. Excited to see how far I can take it.

If you follow me on Twitch, I may live stream some of the development. Of course mention in chat if you read this blog article — I don’t really have analytics other than some basic stuff, so I’m not sure how many are actually reading this!

Oh, and one more thing -- I've stealth-launched a YouTube channel for my game development journey. I'll be posting devlogs and other content there. Go subscribe!

On Modularization and Integration

May 11, 2024

I’ve been thinking a lot about modularization and integration lately. I think it’s a really important topic that doesn’t get enough attention.

There's a natural modular/integrated cycle that happens with anything, but it's very apparent in software:

- optimal path not known, modularize

During this time, experimentation, exploration, creativity, and iteration is key. This makes for a messy, chaotic, uncertain, and stressful time, but it allows many people to explore different pathways and gather experience and data and try out various pathways.

This is the "modular" era, where having lots of swappable components is super useful because ... well, not every part of the value chain is fully explored.

Think early days of JS. It seemed like every week, someone was coming out with a new framework, library, pattern. We complained about it at the time, in fact. It was messy and chaotic.

And libraries that did one thing really well (for example: React) were rewarded, while full stack frameworks that tried to do everything (think Meteor, Ember) didn't work quite right.

You can even see this in other parts of the stack. Rollup, Webpack were focused on a plugin (modularized) architecture, because you needed flexibility.

And of course TypeScript was new, and we needed to figure out how people would want to use it. tsconfig options were very important.

Over time, though, common patterns start emerging. And that's when you change to the other part of the cycle:

- optimal path known, integrate

Next.js, Remix, T3, Create React App, RSC/React Compiler, Ignite, etc ... we know at least somewhat optimal/accepted paths by now, and it's time to make them all work well together. Rome/Biome, Bun, Deno, etc start integrating the common patterns in a really well-optimized way.

And we now know the optimal way to use TypeScript as well. tsconfig could be standardized. This is reflected in Adam's tweet above.

During this time, people still experiment, but it's within the bounds of the frameworks and patterns that have been well-established.

As consumer tech changes, however, new needs arise where the existing patterns aren't quite suited for. Initially, we work around them, but start feeling constrained by the assumptions and standards built in to our tools.

This leads us back to:

- optimal path not known, modularize

We now have new areas of the stack that we need to experiment with. Configurable, modular / swappable components become more attractive, even if it means they don't integrate quite as well as the standard stack -- because they attempt to solve the problems associated with the new technology.

And so on we go.

It's best to recognize where we are in this cycle, and to be okay with the messiness and chaos of the modular era, and to be okay with the constraints and standards of the integrated era.

I didn't come up with this theory. Many of you will recognize it in various forms; where I learned about it was Ben Thompson / Clayton Christensen.

On Tech Opinions

February 27, 2024

I continuously see strong opinions by Twitter devs, said with authority and slamming the door shut on various technologies. I think it’s hard for newer developers in particular to see through this and understand who to follow and what opinions to trust.

Here’s how to cut through the noise.

Nothing substitutes for shipping real world software to users.

NOTHING.

Not even YouTube videos. (Shameless plug: go follow my channel at quests.jamon.dev.)

They’re useful for exploring, for learning, for developing nuance and depth in a subject. But they’re not useful for developing an actual useful opinion about a technology.

Here’s how I would recommend you develop an actual useful opinion about a technology.

(Hint: while you’re in the middle of this process, it’s okay to say “I’m still researching and learning about <technology>. My current framing is <opinion>, but I need to know more before I can say that more definitively.)

Don’t assume your intuition is 100% accurate. It’s okay to go “ew” at first glance, but don’t mistake that for anything real. Go into it knowing that you may have things to learn and that this journey will either support your initial reaction or you’ll learn something — both positive results.

Our intuition is noisy and unreliable. When I first saw JSX my intuition was “ew”. Mixing HTML and JS? Can’t run it in the console? Needing to rename my JavaScript files “.jsx”?

Many of you had the same reaction. And we were wrong about JSX, because our intuition wasn’t reliable there. JSX is actually a very useful technology and has been used to build all kinds of complex software now.

Learn the context around the technology. Realize there’s almost always a reason something is done the way it is. Learn the history, what tradeoffs were considered, what bugged the creators of the technology about existing solutions.

Learn how it actually works, at least at a high level. I can’t tell you how many times I’ve heard people issue very strong opinions about LLMs, for example, without understanding the slightest thing about neural nets and transformers and self-attention.

It’s hard to take them seriously.

Go ship something real with it, to actual users. Try to actually use it in a way that the creators of the technology would agree is the right way to use it.

And learn the tradeoffs. Because it’s always tradeoffs. What’s good, what’s bad, what is promising but underdeveloped?

Build in feedback loops. The only real way to get good at something is through tight feedback loops and iteration. Having someone you can bounce ideas off of and provide feedback as you go is invaluable. It’s especially helpful if those people have diverse technical perspectives.

For example, when I was writing my article about Flutter, I asked Luke Pighetti and Theo to review it. Both gave me very valuable feedback and also became friends in the process, people I can trust to give good insight.

Once you’ve done this, you have a really good foundation to talk about the tradeoffs of that particular technology. It’ll also give you a lot of useful perspective for other technologies in the future.

BUT…

…technologies mature, they change, and they evolve.

So, realize that your opinion, if you’re not staying up to date after your initial research, can fall out of date.

I’ll give you an example.

I tried react-native-elements back in the day. It was kind of kludgy and had very few useful features. So I kind of dismissed it as not a particularly good option for a React Native UI kit, and I would tell clients that.

Then one day a potential client told me he’d like to use it. I said I hadn’t used it in a while and would need to see what the latest and greatest version was like.

It turns out that version 3 had been released with a lot of really great improvements and it was actually … good!

Some of you really want more examples, so I’ll give you an opinion which is based on me going through this process (above) over many years: Redux.

We used Redux exclusively in the beginning for several years. We switched to MST about 5 years ago, but still use Redux on projects and have continuously for 8 years. We’ve also used RTK on multiple projects.

Here’s my opinion about Redux:

  • One of the best core teams of any JS tech — incredibly smart, engaging, driven
  • Excellent documentation
  • Github Copilot is REALLY GOOD at Redux
  • Tons of articles, videos, tutorials
  • Redux makes the tradeoff of some verbosity for consistency and predictability and explicitness
  • It’s particularly designed for larger teams where having consistency is more important than expressiveness
  • It helps ensure that everyone on the team follows the same patterns and principles
  • RTK is a nicer, more modern pattern that addresses a lot of the concerns people had with original Redux

However:

  • The verbosity is a cost in and of itself — boilerplate can make it harder to spot inconsistencies and bugs, and your code base swells
  • It’s slower to work in. We’re more productive, even on large code bases, with MST
  • Working with immutable data everywhere is an awkward developer experience and results in a lot of extra allocations (immer makes this better, but doesn’t fully solve it) (ironically, the guy who created immer also created MST — Michel Weststrate)
  • Actions being dispatched data handled by matchers is a less intuitive pattern than simply calling a method on an object (like MST’s actions)
  • While it’s totally possible to write performant code in Redux, you have to be very intentional about how you structure your data models and selectors — MST makes this dead simple in comparison.

So, my opinion (and the majority of my team) is that MobX-State-Tree is nicer to work in for most projects than Redux.

Sidenote: if you want to watch a 15 minute intro to MobX-State-Tree, I made one here:

These are real world observations that led to these opinions. These are things that I think I can safely be pretty opinionated about. But even then, I am open to being wrong about it and open to things changing over time. And other developers may prefer the tradeoffs of Redux over MST.

There are way too many technologies out there to research them all. So, what if you don’t have time to do all of this? Can you still have an opinion about a technology?

How I approach this is by … well, just saying that I don’t have a lot of experience with it.

For example, if someone were to ask me about XState, I would say something like this:

“David and his team are brilliant engineers. I would tend to lean toward trusting their opinions on patterns and software. With that said, my previous forays into XState haven’t been successful. I think it was because I didn’t take the time to really learn the best ways to approach state machines and also was probably trying to use it in ways it wasn’t intended to be used. I also think it was a little too steep of a learning curve and that hurt adoption. I also think the problems it solves don’t tend to be ones that are immediately top of mind for programmers. With that said, it looks like they’ve made some really great improvements in recent versions to simplify it, and I’d be willing to try it again sometime.”

This gives the facts and some opinions without slamming the door shut on it.

Ultimately, everything in tech keeps evolving. Your best bet is to invest in your own knowledge and experience. And ship code!

Backing up Google Photos to Amazon Glacier

January 3, 2024

I have a LOT of photos in Google Photos.

My wife and I started taking a few digital photos (mixed with regular film photos) when we started dating in 2002ish. But we really didn't start taking a lot of photos in earnest until 2005, when our son Cedric was born.

Jamon standing on a ridge in 2002
One of the earliest digital photos of me, standing on a ridge in Lava Canyon in southwest Washington state in 2002.

Since that time, we've taken thousands and thousands of photos and videos, amounting to just under a terabyte of data. Initially they were all uploaded to Google Picasa Web, but then that was migrated to Google Photos.

After deliberating about this for quite some time, I finally decided to back up our entire archive. I chose Amazon Glacier because it's very cheap long-term storage.

Downloading the archive

I started by buying a 2 TB Crucial external drive that I could connect to my Mac's Thunderbolt/USB-C port. Having an external drive served two purposes: one, I don't blow up my Mac's hard drive when I download all these photos and videos, and two, now I have another backup -- this one locally.

I then went to Google Takeout. (Make sure you're in the right Google account if you're signed into multiple!). In the "Select data to include" section, I chose the "deselect all" button first, then scrolled down to Google Photos and checked the box next to it. Then I scrolled ALL the way to the bottom and clicked "Next step".

In the "Choose file type, frequency & destination" section, I chose the "Send download link to email" option. It would be amazing if they had a way to choose an Amazon S3 bucket (or better yet, Glacier itself), but they only support Drive, Dropbox, OneDrive, and Box as of this date. I chose the "Export once" option, .zip, and for file size I chose 10 GB. (I experimented with 50 GB but that was tough to download and upload effectively.)

After that, I waited a few days for Google Takeout to send me a link.

Once I had a link, it brought me to a page where I could download the ZIP exports one by one ... about 85 of them. I clicked to download about two or three at a time, putting them on the new external drive I bought, and let them download. It made me log in nearly every time which was annoying. Also, you only have about a week to download them, and with how many I needed to download, I cut it kinda close.

While you are downloading, you can prepare for uploading with the following instructions.

Uploading to AWS Glacier

I already have an Amazon AWS account, but if you don't, sign up for one. I won't walk you through that. If you're not able to sign up then this is probably too technical for you.

Here are the steps I took to create the credentials and Glacier bucket:

  1. Log into the AWS Console as a "root user"
  2. Go to the IAM security credentials section (you can choose a region in the top right, but I just left it as "Global" for this section)
  3. Create an access key and secret there and copy it somewhere.
  4. Install AWS's CLI (these instructions are for macOS): brew install awscli
  5. Log in using the access key and secret: aws configure
  6. Change directories into wherever you downloaded your backups. For me, it was in an external volume: cd "/Volumes/Crucial X8/Backups/JamonAndChyra-GooglePhotos"
  7. Create a Glacier bucket in the region of your choice: aws s3 mb s3://bucketnamehere --region us-west-2
  8. When your zip files are done downloading, you can upload them either all at once like this: aws s3 cp . s3://bucketnamehere/ --recursive --exclude "*" --include "takeout-*.zip" --storage-class DEEP_ARCHIVE ...or one at a time like this: aws s3 cp . s3://bucketnamehere/ --recursive --exclude "*" --include "takeout-*-001.zip" --storage-class DEEP_ARCHIVE ...or in blocks of 10 like this: aws s3 cp . s3://bucketnamehere/ --recursive --exclude "*" --include "takeout-*-00?.zip" --storage-class DEEP_ARCHIVE aws s3 cp . s3://bucketnamehere/ --recursive --exclude "*" --include "takeout-*-01?.zip" --storage-class DEEP_ARCHIVE aws s3 cp . s3://bucketnamehere/ --recursive --exclude "*" --include "takeout-*-02?.zip" --storage-class DEEP_ARCHIVE

This part is the most painstaking.

Restoring the backup

I haven't yet had to restore from a backup yet. Theoretically, you could download using a command something like this to download it to your local folder: aws s3 cp s3://bucketnamehere/your-backup-file.zip . --storage-class DEEP_ARCHIVE

Good luck!