Here’s a travel blog from the high school world championship in programming, the International Olympiad in Informatics. This year’s team consists of Anastasiia Saranchina, Erik Adebahr, Sofie Fu, and Vladyslav Levchenko. The team leaders are Joshua Andersson and Harry Zhang.
If you want to read the blog in Swedish, you can find it here. It will most likely contain more spelling mistakes, as the English one you’re reading has been ChatGPT-translated.
August 26–27: Travel Day (Joshua’s Perspective)
Planning the trip to Bolivia was neither easy nor cheap. It’s extra annoying then that I can’t take the cheapest route through Brazil. Ironically, that’s because I have Brazilian citizenship. The issue is that I don’t have a valid passport, and it’s very difficult to renew it since my parents made a mistake in my birth certificate. If I try to enter with my Swedish passport, I risk losing my Brazilian citizenship, which doesn’t feel worth it. Because of this, I took a different route than the rest of the team.
Luckily, my route was smoother than the team’s. It was a simple Sweden → Switzerland → USA → Bolivia. Less lucky was when I, less than 24 hours before the flight, heard about the guy who allegedly wasn’t allowed to enter the US because he had a “dangerous” image of J.D. Vance, the U.S. Vice President, on his phone (the full story is a bit more complex, you can read about it here). Why is this a problem? I have over 11,000 images on my phone, at least 40% of which are memes, and at least a few mock Trump or ironically support Saudi Arabia or Assad, the former president of Syria. In other words, if they went through my images, I would have been “cooked,” as the youth say.
A small selection of images from my phone:
Thankfully, the trip was quite smooth in practice. The first flight departed at 6 AM, and since I slept less than 2 hours the night before, I managed to sleep for about 80% of all flights. In the U.S., immigration was easy; no special inspection took place. Still, it was exhausting—it took 3 hours to get to the gate after landing: about 1 hour in line for passport control, 1 hour in line to check in (because they don’t accept digital boarding passes [????]), and 1 hour for TSA + walking through the airport.
This is being written from a café at Viru Viru Airport in Bolivia. In about 8 hours, the Swedes will arrive at the airport, and in 12 hours, we’ll take the final flight to Sucre, where the IOI is being held. Maybe a bit self-centered to write this much just about myself, but I blame it on us needing to get the blog started :). Hopefully, the rest of the trip is so uneventful that there’s nothing to write about until tomorrow.
August 26–27: Travel Day (Harry + Team’s Perspective)
After a week of training camp in Vallentuna with the Icelandic national team, our “easy” journey to Bolivia began. Ahead of us were five flights (Stockholm → Málaga → Casablanca → São Paulo → Santa Cruz → Sucre) and over 40 hours of travel time (including layovers).
The team said goodbye to Joshua at Arlanda and boarded the first flight to Málaga. The flight was relatively short and went by quickly—I barely had time to close my eyes before we landed.
On the next flight, from Málaga to Casablanca, the whole team slept through almost the entire flight. I, on the other hand, stayed awake and alert, especially when a flight attendant came by to hand out food. The meal consisted of a tasty muffin, a chicken sandwich, and mango yogurt. I quickly ate everything before falling asleep myself. When I woke up, we had already landed and were getting off the plane. Sofie and Erik mentioned they were a bit hungry and thought it was a shame no food had been served… You could say they weren’t happier when I pointed out that food had been served—and that I thought it was really good.
To avoid making the same mistake again, I was ready on the next flight to wake up the whole gang when food was served. The flight lasted 9–10 hours and two meals were served. For the first meal, you could choose between fish and chicken. I chose fish and was very happy to see that it was salmon! The salmon was extremely tasty and went perfectly with the boiled vegetables on the side. In addition to the protein, there was a muffin and some bread. Everyone seemed satisfied with the food—except Vlad, who didn’t get a vegetarian dish. He had to choose the salmon, but both he and I were happy after we swapped my muffin and bread for his large portion of salmon. For the second meal, we got the same food as on the previous flight, but I was too tired to eat again.
Between meals, I managed to watch a full Avengers movie (Avengers: Endgame), and Vlad finished one of the Harry Potter movies. The rest of the time we did like the others—slept like logs.
Once we landed in São Paulo, we were supposed to stay overnight at a hotel near the airport. To get there, we needed to find the shuttle bus. We found the parking area where the bus was supposed to pick us up, but the actual bus never showed. We asked people nearby for help, but unfortunately, most of them didn’t speak any English.
After many confused questions and gestures, we realized it was getting too late to wait for the bus. In the end, we decided to take a taxi. I ordered one for the five of us, and it only cost 54 Bolivian bolivianos—less than 100 SEK. We got a paper slip that could be exchanged for a taxi ride (very cool system) and headed to the taxi area.
{:/} We thought either a large taxi would show up or two smaller ones, but it turned out the slip was only valid for one car. They didn’t have larger cars and couldn’t split the slip between two drivers. One of the drivers then suggested we squeeze four people into the back seat. {::nomarkdown} {:/} The hotel was good—and they had breakfast! Early in the morning, we headed back to the airport. Already after the day’s first flight, we saw roll-up banners for IOI 2025 at the passport control in Santa Cruz. After submitting a few documents, we finally got to meet Joshua again. {::nomarkdown}After lunch, we went to the gate to wait for our final flight to Sucre. I bought an interesting drink that I shared with the rest of the group.
Fredrik’s flight from the US was unfortunately delayed, giving him only 15 minutes to change planes – including passport and security control. Unfortunately, he missed the connection and had to book a later flight.
Eventually, we arrived in Sucre and were greeted by lots of Bolivian flags. We got on the bus and quickly noticed that there was a lot of military presence around. Apparently, IOI had arranged a police escort for the entire bus ride into the city.
After less than an hour, we arrived at the participants’ accommodation, where we were greeted with applause and cheers: “SWEDEEEN!!!”. We received our IOI merch, left the participants with our guide, and went straight to the leaders’ hotel.
Before the trip, the team had been a bit worried about mosquitoes that could spread diseases and the high altitude in Sucre. But so far, everything has gone well. No one has felt any altitude sickness, so overall, the trip has been a real success!
Some extra pictures we took during the trip:
August 28: practice session
Before the day had even started, there were already problems. I woke up in the middle of the night because I was freezing. My solution was to use all the room’s towels as extra blankets. We had been warned that the rooms didn’t have heaters and that we might want to buy blankets, so I felt a bit stupid for skipping that. Unfortunately, I felt even dumber when I woke up in the morning and realized I had only used a third of all the blankets in the bed 🙃.
After a pretty decent breakfast, we headed to the first GA (general assembly) meeting of the year. On the way there, zebras were directing traffic. At the meeting, it was noted that 10 countries were missing for various reasons (mostly related to flight issues). Then the rule wording was changed to clarify how output-only tasks work. This is a bit concerning, as it might indicate that there will be an output-only problem. Historically, these have often involved guessing, where weird greedy algorithms or other strange methods like simulated annealing or beam search got high scores. Heuristic competitions can certainly be fun, but in my opinion, they don’t belong in a prestigious, non-guessy competition like IOI.
It’s of course possible that the scientific committee has a really good output-only problem, but I’ll remain skeptical until I see it. So we’ll arrange a crash course in simulated annealing and beam search for the participants just in case.
Other than that, we had no wifi, so it became a bit of a sport to try to guess the password to people’s wifi hotspots.
Then we continued to the practice session. We found a secret strategy to get more table space, as it was very lacking. In true Swedish tradition, we submitted a clarification request that was completely unhinged. However, it was valid and led the technical committee to change the machine configuration. Note also that we’ve prepared a bunch of “lock tf in” cats as mascots. These clearly worked, since the same images were used at EGOI and yielded a gold, a silver, and a bronze medal.
A little while later, the opening ceremony began. When the countries were called up, we supported the Icelanders by shouting “come on Iceland!!” as loud as we could, which is obviously a reference to DJ Muscleboy’s global hit “louder,” where he says “come on Iceland!!”. Several countries commented on this later :). Then a bunch of performances began, all of which were very nice. I can, however, humbly suggest an improvement: add Subway Surfers to the screens so the youth don’t fall asleep. Then there were a lot of speeches and more performances. At the end, they played a song made for this year’s IOI in Spanish. People cheered by turning on their phone flashlights and waving them, while we waved our “lock in” cats.
That’s it for the day. Tomorrow is excursion day!
August 2-4: “Homecoming” (Joshua’s perspective). Warning: lots of text, few pictures
If my “homecoming” had gone according to plan, it would have been a bit tedious but not much to write about. Unfortunately, there is a lot to write about. If I had been less tired, I would have written a shorter blog. Unfortunately, I am very tired.
For some backstory, I am so greedy that I wanted to participate as a leader in both IOI (the International Olympiad in Informatics) in Bolivia and IOAI (the AI Olympiad) in China. The problematic part is that IOAI starts before IOI ends. Because of this, I think I am the only one in the entire IOI (besides Fredrik) who even attempted to participate in both. My original travel plan was to go to the airport right after the last meeting. I didn’t want to miss that meeting because we voted on important things there. Then the route was as follows: Sucre (Bolivia) -> Cochabamba (Bolivia) -> Viru Viru (Bolivia) -> Lima (Peru) -> Madrid (Spain) -> Beijing (China). The route might seem tedious, but in my opinion, it wasn’t that bad, since a large portion was spent on the Lima -> Madrid and Madrid -> Beijing flights. Unfortunately, the entire trip couldn’t be booked as one, so the parts before and after Viru Viru were separate bookings.
Problem no. -1: no SIM card
Even before the trip began, there was a problem. Every leader received a SIM card with unlimited data and calls at the start of IOI. Unfortunately, Harry’s SIM card didn’t work. We made several attempts to get the hosts to fix it, but unfortunately, it was never resolved. Being a true optimist, I gave my SIM card to Harry, who will bring the kids back to Sweden. If the trip had gone as planned, it wouldn’t have been a problem, but the lack of a SIM card made all future problems (spoiler) a bit worse.
Problem no. 0: late bus
It started badly when I was supposed to be picked up for the airport. The bus was scheduled to leave at 16:35. At 16:50, there was still no bus in sight, and I had no wifi at all. Luckily, a guide arrived shortly after and informed me that the bus would arrive around 17:15. It arrived at 17:20. This wasn’t really a big problem since the flight, which was domestic, departed at 19:20. However, it was extremely stressful to stand there debating whether I should just take a taxi instead or hope that the bus would even show up. Note that it would have been very difficult to order a taxi since I don’t speak Spanish and had no wifi for translation. For some reason, people in Bolivia are very bad at understanding communication through body gestures and isolated Spanish words, so it would have been tough. For example, I wanted more milk in my coffee, so I said “leche” with the wrong pronunciation, pointed at my coffee, and made a pouring motion. After 30 seconds of attempts, the owner thought I wanted to buy a new coffee. Oh well, this was stressful but not that bad.
Problem no. 1: the atomic bomb
During the week, several leaders wrote that their flights had been canceled. They could take a 13-hour bus instead, which I really didn’t want to do. So I was careful to check that none of my flights were canceled. Unfortunately, the absence of delay notifications doesn’t mean the absence of delays. An hour after my flight was supposed to depart, we got the update that it would leave in another hour. No problem, I had several hours to spare, I thought. Then came the bomb: they would not operate the flight Cochabamba -> Viru Viru. This was extremely problematic because, at that point, I was on the short, cheap booking. So Boliviana de Aviación was only responsible for one missed flight, and it was entirely my fault if I missed the first flight on the other booking. At that moment, I was not happy. I was a bit annoyed that someone in our group had a bit of a mental breakdown over this, even though she would make her flight, while I was completely screwed; they wanted to rebook me on a flight arriving at 07:00, but my flight to Lima departed at 05:20. Since they were completely separate bookings, they didn’t care. I managed to send a few messages to the host and Fredrik before boarding the flight to Cochabamba. I was not happy. Unfortunately, I didn’t think to take pictures for the blog. Good thing I’m a programmer and not an influencer.
Problem no. 2: Solution?
During the flight to Cochabamba, I tried to evaluate all possible solutions. The conclusion was to inform Arvid, the other leader who is now in China, so he could gather information, Fredrik because he has taken at least 400+ flights in his life, and Harry because he has a bank card tied to Kodsport. Big thanks to all of you for your help!
Fredrik was very efficient: he found a route Viru Viru -> Chile -> Madrid, arriving 2 hours before the China flight departed. It was also relatively cheap: only $728 USD. The host had suggested a flight with a tighter margin that cost $2500 USD. I was taken to a hotel by the airline and given a room and food. Spoiler: I was too stressed to either eat or sleep.
Unfortunately, the magic flight isn’t a solution: you can’t just book the flight and show up in Madrid. If you miss the first part of your trip, the remaining parts are typically canceled. So just change the trip? I booked it through Gotogate. Their response was “contact the airline to make changes.” The airline said, “contact your travel agency.” Great. Time to call Latam, the airline the entire ticket was under. The biggest mistake was calling their American office. Everyone there spoke with such a thick accent that nothing got resolved, and you could tell they didn’t want to help—just hang up as soon as possible. After several people said nothing could be done, I was told to call their Peru office. Juan from Peru informed me that the trip couldn’t be changed because I had checked in for the second flight, operated by Iberia, a different airline (shoutout to Juan, had him on the phone at least 6 times—he was very helpful). So I called Iberia and initiated the unchecking process (check-out? 🙂). Unfortunately, this could take up to 2 hours, and there was no way for me to know when it was done other than calling them.
I got this information at 01:37. My flight departed at 05:20, and once it left, it was game over. I spent the next two hours calling Latam nonstop, and every time I found out I still wasn’t checked out, I called again. I got pretty fast at navigating their “virtual phone assistant”—it only took 2 minutes to reach a human each time. Finally, I was checked out and called Latam again. I got a great offer: I could get the booking I wanted for $528 USD. Great! Unfortunately, I didn’t have enough liquidity for that… (expense). Hung up, called Fredrik to borrow a credit card, and when I called back, the deal was gone—now it cost $2000 USD. Tried to call their bluff, but it wasn’t a bluff; the last seat was gone. Thought it was a bit too expensive, so I gave up. When I checked flights home, it didn’t seem so bad after all—looked like around 14,000 SEK. At that point, I was willing to pay the difference (Kodsport would cover it anyway). When I called back, that deal was gone too, and I gave up. Really annoying to miss such a good deal by 10 minutes. I didn’t feel too mad at myself because, given my circumstances, it would’ve been hard to act better—I’d been awake for around 20 hours, tired from high altitude, and unfamiliar with the whole process.
Unfortunately, all these phone calls weren’t free… 14 SEK/minute adds up very quickly, totaling ~3000 SEK. In total, I made 28 calls to various customer services. Even if none of those calls yielded anything in hindsight, I don’t regret it: flying home to Sweden would’ve cost around 14,000 SEK. If things had gone a little faster, it would’ve saved around 7000 SEK. I probably should’ve evaluated other calling alternatives, but I was too stressed at the time (tried WhatsApp a bit, but it didn’t work).
Solution no. 0: Latam Airlines my beloved ❤️
At 6 AM, I boarded a plane to Viru Viru. A friend wrote, “genuinely seems like the day can’t get any worse for u.” Unfortunately, I knew very well that wasn’t true. When I arrived, I had to fight not to fall asleep—it’s very easy to pickpocket someone who’s sleeping. The next flight I could book departed in about 22 hours, and the airport hotel opened in 2 hours. Luckily, the misery ended: Fredrik said I should talk to people at the airport. I explained my situation, and they put me on the flight I wanted—completely free! Huge shoutout to the kind airport worker in Viru Viru; she was very sympathetic to the situation. I got a strong recommendation to check in online for Air China because the transfer was short, and they couldn’t do it for me.
Problem no. 3: Air China Online Check-in
When I tried to check in, I kept getting:
“Soryy,sorry, your name entered is wrong.”
My name on the passport is:
JOSHUA THOMAS
BERGMAN ANDERSSON
None of the variations I tried worked. I decided to be systematic. I came up with the following reasonable ways my name could exist in their system:
- No spaces
- Only the first letter capitalized in each name
- One last name moved to the first name. So “JOSHUA THOMAS BERGMAN” “ANDERSSON”.
- They add “MR.” or “MR” to the first name (found after searching)
Which led to fun combinations like:
MRJOSHUATHOMASBERGMAN
ANDERSSON
Unfortunately, none of these 24 combinations worked. After each attempt, I had to complete an “I’m not a robot” test, some of which were genuinely hard.
At the next airport, I tried calling their customer service, who said they couldn’t help me. I tried chatting with and calling Gotogate, the booking agency. The response was basically, “their website sucks, it’s impossible.” By this point, I had to board my flight. I wasn’t too worried—Fredrik said, “They won’t wait for you, but 2 hours is a lot in MAD.” Even if China didn’t work out, I was happy to be back in Europe. My status update was: “The airline was generous, heading to China. Worst case, I miss the connection in Madrid, and then it’s easy to get home” on Discord.
What I was most afraid of was that my Air China flight had been canceled because I missed the first flight in my original booking. The view between Viru Viru -> Chile was very nice.
Solution no. 1: Latam Airlines my beloved ❤️^2
When I landed in Madrid, I heard my name over the loudspeaker. I thought, “It’s Joever, the China flight is canceled.” Instead, a Latam representative came with a list of flights and said, “It’s impossible to make the flight, choose which one you want to be rebooked on.” I almost argued with her based on what Fredrik had said, but I didn’t feel like tempting fate again, so I took the first flight. I also got a lunch voucher! Really gotta praise Latam again here—they noticed the situation proactively and had a solution ready when I landed.
Turns out she was completely right: the flight was in another terminal. I tried to get there as fast as possible and arrived 40 minutes before departure, but check-in was closed.
When I finally sat down and used my lunch voucher, I wanted to double-check that my new ticket was correct and tried checking in one more time. This time, I tried removing my middle name—i.e., “Joshua” “Bergman Andersson”—and it worked! A bit of a shame I didn’t think of it earlier, as it would’ve saved me 12 hours (if that was even the issue with my previous ticket…). Now I’m sitting here waiting for the flight, really hoping the only noteworthy thing left is the fact that I’ll have a 12-hour time difference when I arrive.
Lessons Learned
- Latam is goated 🐐. They rebooked 3 flights even though it wasn’t their responsibility at all.
- Never give up. At least as long as you’ve paid a significant amount for the flight. If you’re using Ryanair, you’re probably better off letting it go.
- Try talking to a human in person at an airport. They seem to have so much more power to do things than customer service reps.
- 7 hours is not enough margin for separate bookings, especially if you’re using a sketchy local airline.
Bonus: ChatGPT’s version of the end
When translating the blog, ChatGPT, made up its own version of reality towards the end.
Problem no. 3: Air China online check-in
When I tried to check in, I always got “Sorry, sorry, your name entered is wrong”.
My name on the passport is spelled differently from the flight booking. I am called “JOSHUA TOELT” on the ticket, but in the passport it says “JOSHUA TOELTE”.
Air China claims that the booking was correct and I cannot check in. I try 50 times and get desperate. It is
now 8 AM. 3 hours to the flight and no check-in. I start asking for help on social media. Luckily, it gets fixed
the next day when a Chinese IOAI leader comes to pick me up and checks in for me in person with her laptop, since I don’t have a Chinese phone number.
Problem no. 4: final flights and arrival
I finally get to Beijing at 7 PM. The hotel for IOAI is 50 km away. The coach takes over 1.5 hours due to heavy traffic.
Since I had no SIM and no wifi, I basically had no contact with anyone. Luckily, a leader helped me get to the hotel.
I arrive totally exhausted but happy to have made it.