Become a Patron!

My Amazon wishlist can be found here.

Life Line

Xdebug Update: July 2023

In this monthly update I explain what happened with Xdebug development in this past two months. These are normally published on the first Tuesday on or after the 5th of each month.

Patreon and GitHub supporters will get it earlier, around the first of each month.

You can become a patron or support me through GitHub Sponsors. I am currently 37% towards my $2,500 per month goal, which is set to allow continued maintenance of Xdebug.

If you are leading a team or company, then it is also possible to support Xdebug through a subscription.

In the last month, I spend around 15 hours on Xdebug, with 25 hours funded. This is much less than I wanted, but instead I have been busy implementing features for PHP.

Towards Xdebug 3.3

I have been keeping up with changes in PHP 8.3's development, and had to adjust some tests as PHP has changed a few things, making my expected results incorrect.

I also fixed a number of crash bugs, resulting in the release of Xdebug 3.2.2 early in the month.

Now PHP 8.3 has its first beta release, it is soon time to make an alpha release of Xdebug so that it can be installed through PECL, instead of by having to checkout the Git repository by hand.

Over the next few months I will continue to work on the features and issues on the 3.3 roadmap, without any guarantees these tickets will be implemented.

If you have comments, suggestions, or if your company wants to help fund features, please reach out, or leave comments on the document.

Xdebug Videos

I have published no new videos in the last few months.

Let me know what you'd like to see!

You can find all previous videos on my YouTube channel.

Business Supporter Scheme and Funding

In the last few months, no new business supporters signed up.

Some of the supporters that I reached out to, have supplied their logos, making the front page less bland.

If you, or your company, would also like to support Xdebug, head over to the support page!

Besides business support, I also maintain a Patreon page, a profile on GitHub sponsors, as well as an OpenCollective organisation.

Xdebug Cloud

Xdebug Cloud is the Proxy As A Service platform to allow for debugging in more scenarios, where it is hard, or impossible, to have Xdebug make a connection to the IDE. It is continuing to operate as Beta release.

Packages start at £49/month, and I have recently introduced a package for larger companies. This has a larger initial set of tokens, and discounted extra tokens.

If you want to be kept up to date with Xdebug Cloud, please sign up to the mailinglist, which I will use to send out an update not more than once a month.

Shortlink

This article has a short URL available: https://drck.me/xdebug-23jul-hzu

Comments

No comments yet

Concealed Code

Last week, the author of the PHP Debug Adapter for Visual Studio Code asked me to look at an issue. A user noticed that configured breakpoints in the editor would be greyed out for any request besides the first one for each process when using PHP's built-in web server.

Xdebug "resolves" breakpoints when it sees code compiled by PHP and then notifies IDEs that the configured breakpoints are valid. Sometimes it also means it moves them to a line with executable code on it, as in some cases, PHP is "confused" about where lines of code live.

I spent some time delving into this, and initially I could not reproduce this. On my side (Linux, PHP 8.1/8.2) with php -S the behaviour was always correct, with the breakpoints resolved for each request through the dev server.

When I had another good look at the phpinfo() output from the user, I noticed:

Zend Engine v4.2.8, Copyright (c) Zend Technologies
        with Xdebug v3.2.2, Copyright (c) 2002-2023, by Derick Rethans
        with Zend OPcache v8.2.8, Copyright (c), by Zend Technologies

The above shows that Xdebug is loaded first and OPcache second, which the documentation says you shouldn't do:

Zend Opcache

Can be loaded together with Xdebug, but it is not 100% compatible.

Load Xdebug after Opcache in php.ini for better compatibility. When running php -v or when looking at phpinfo() output, Xdebug should be listed below Opcache.

After I switched the loading order of the two Zend extensions, loaded on the command line after ignoring (through -n) the normal php.ini file from:

XDEBUG_MODE=debug XDEBUG_TRIGGER=yes \
        php -n -d zend_extension=opcache -d zend_extension=xdebug \
        -S localhost:9112 -t /tmp

To:

XDEBUG_MODE=debug XDEBUG_TRIGGER=yes \
        php -n -d zend_extension=xdebug -d zend_extension=opcache \
        -S localhost:9112 -t /tmp

I could reproduce this issue.

The explanation for this is that both Xdebug and OPcache override PHP's compile file handler.

Xdebug uses this to analyse newly loaded files for lines of code that can have breakpoints to resolve them. Before doing its magic, it calls the already present handler, nominally, the built-in PHP one that converts a PHP script into byte code that the PHP engine can run.

OPcache uses the handler to see whether it sees a file being converted (parsed) for a second time. If it is in its cache, it doesn't call PHP's original compile handler again but instead returns the byte code from its cache.

If OPcache is loaded first and then Xdebug, the following sequence occurs:

  • OPcache replaces the compile file handler with opcache_compile_file, and remembers the previous one, php_compile_file.

  • Xdebug replaces the compile file handler with xdebug_compile_file, and remembers the previous one, now opcache_compile_file.

In this situation, when PHP runs the compile file handler, it first calls xdebug_compile_file, which then calls opcache_compile_file and all is well.

The process reverses if OPcache is loaded last:

  • Xdebug replaces the compile file handler with xdebug_compile_file, and remembers the previous one, php_compile_file.

  • OPcache replaces the compile file handler with opcache_compile_file, and remembers the previous one, now xdebug_compile_file.

When PHP runs the compile file handler, it calls opcache_compile first. OPcache checks whether it has seen the file already and, if not, calls the previous handler (xdebug_compile_file), but if it has seen the file already (the second request through a php -S server), it does not call the previous compile file handler.

Typically, that is what you want, as compiling files is expensive. However, because it does not call the previous compile file handler, that means that xdebug_compile_file does not get run, which means Xdebug doesn't know anything about which lines of code can have breakpoints on them. It can not resolve them henceforth.

I can not work around this in Xdebug.

Luckily, there are workarounds:

  • Make sure to load Xdebug after OPcache — which is what the documentation says you should do.

  • Disable OPcache by setting opcache.enable=0.

  • Don't load OPcache by commenting out the zend_extension=opcached line in ext-opcache.ini (or similar filename).

Loading Xdebug after OPcache is what you should strive for.

I usually name the xdebug.ini file 99-xdebug.ini and the INI file for OPcache 10-opcache.ini, to enforce the loading order by respecting the sorting order of INI files as stored on the file system.

Alternatively, if you only have one INI file, make sure that Xdebug is listed after OPcache in this file, such as in:

zend_extension=opcache
zend_extension=xdebug

From Xdebug 3.3, Xdebug will include a warning in the Diagnostic Log section of xdebug_info() output to warn users that you should load Xdebug after OPcache.

As with all warnings in the HTML version of Xdebug's Diagnostic Log, there is also a link to documentation which explains what the problem is and what possible solutions are.

I have also made a video about the Xdebug 3 Diagnostic Log, which you can find on YouTube.

Shortlink

This article has a short URL available: https://drck.me/concealed-code-hzm

Comments

No comments yet

Shetland

My wife and I went on holiday to Shetland at the beginning of June. Our decision to visit these isles was sparked after seeing the TV series with the same name. Although it's a crime series, the scenery was stunning. We did not anticipate encountering any murders.

Somewhere last year, I had mentioned visiting Scotland to my parents. Mum was especially keen to go with a small group touring company like Rabbie's, which my wife and I had used on our whisky distillery tours from Edinburgh many years ago. After looking into it, we decided that while they were touring some of the Inner Hebrides, we would visit Shetland to share the days travelling from London to Edinburgh and spend some days in Edinburgh together. It was earlier in the year than we would have gone, but we felt that that was fine.

London to Edinburgh — Jun 1st

The first event of the trip was to get to Edinburgh with my parents in tow. King's Cross was its usual chaos, and it was likely busier than expected because there were rail strikes on the day before and would be the day after. We were early, and found an uncomfortable seat to wait until our departure. As I had booked the tickets, all stored on my phone, I would have to let the whole group through the barriers individually. In the end, we found a gate with its barrier missing, making that a lot easier.

The train left nicely on time, and we got breakfast and lunch, and beverages as we desired due to us travelling in first. As long as you book that early enough, it is not that expensive, especially when you also have a Two-Together Railcard, which costs £30 for a year for 33% off. My wife and I have used this Railcard for several years, and we also bought one for my parents as even on a single long journey, you make money back. The train ticket came to £152 per person for a four-and-a-half-hour trip there and back again in first class.

When we left London, it was warm but grey. As the train was moving north, the weather became lighter and lighter. The East Coast Main Line gets pretty beyond York, and I knew we should look out for a prominent hill figure near Thirsk, the Kilburn White Horse. It is pretty amusing that it has "Kilburn" in the name, as that is also the area of London where I live, although it is nowhere near. I had visited the North York Moors national park before for a hike and actually got close up to it.

As such, for a while, I was peaking out of the western window of the train to see whether I could point it out, but I would never have found it there. Luckily, my mum spotted it on the other side of the train, where I had not expected it.

The train was pleasant and uneventful, and the approach to Durham and the stretch through Newcastle are particularly impressive. After zooming into Scotland near Berwick, we made it to Edinburgh on time.

For our first night, we booked the Travelodge on Rose Street. It was a basic room, but it had a good bed and was reasonably roomy. Both for the bed, as well as the bathroom.

Edinburgh's Royal Mile

For dinner, we had booked with Kora, a restaurant by renowned chef Tom Kitchin as a little treat. Around a week before, we received an email stating that it would be closed for the night we would be there. Instead, they offered us a table at their Skran and Scallie gastropub, not too far away in Stockbridge. On top of that, they offered to pay for all our food. This was not expected but certainly very welcome.

Typically, restaurant reviewers don't do reviews for compensation, but I'm willing to make an exception ;-). The food and the service were excellent. I enjoyed some scallops as a starter, and their fish pie as a main, finishing with a chocolate tort. My other companion's food also looked amazing. As the food was free, we did punt for a more expensive bottle of wine and made sure to leave a tip according to what the full price of the meal would likely have been.

After dinner, we walked back towards the hotel. My parents went right to sleep, whereas my wife and I ended up at Fierce Beer for a cheeky half or two.

Edinburgh to Aberdeen/On the Ferry — Jun 2nd

After a good night's rest, albeit being woken up a little earlier than I had hoped by the binmen, we met up with my parents and had a quick lunch at Pret on the way to the bus station, from where they were leaving for their Iona, Mull, and Isle of Skye Tour.

Edinburgh's St. Andrew Square

After they had left, we wandered back to get some supplies for our train ride to Aberdeen. We were initially booked with LNER, but our train was cancelled due to strikes. We had anticipated this in advance and had booked a secondary ticket with ScotRail, who would not be on strike. LNER would have fed us again, but as ScotRail wouldn't, we headed to M&S to buy some sandwiches and muesli bars for when we would be walking in Shetland.

Getting into M&S was reasonably straightforward, but it took us a while to leave it as it was a gigantic maze. We eventually managed, and after picking up our luggage, we headed to Waverley to wait for our train. We didn't know our platform yet, so we stayed in the waiting room with its lovely ceiling and a cup of tea/coffee.

Once the platform was announced right at the last moment, we walked to the train and sat in the carriage. It was more comfortable than LNER, but it was also more squeaky.

It was a lovely sunny day, and the train going north offered some great views. Not long after leaving, we crossed the iconic Forth Bridge, and the views were charming along the coast north of Dundee, going through Arbroath and Stonehaven.

We arrived in Aberdeen on time, and the weather was still lovely. The station had no toilets, but we found them in the adjacent shopping centre. While waiting for her to be ready, I saw on my map that this shopping centre also had a Brewdog. Considering they are from near Aberdeen and that we had to wait at least two hours to board the ferry, we decided it would be much nicer to remain there than in the terminal's waiting room. So we had some cheeky halves and picked up some beers to enjoy on the ferry, as we didn't think it would have a reasonable beer selection.

When the time to find the ferry finally came, we walked over to the building along a busy road. It could have been a nicer walk as the area seemed very car-focused. We did board reasonably early and found our cabin for the night. A relatively small but well-appointed one with a shower, tea and coffee-making equipment, and a bunk bed to sleep in. I got to use the top one!

As we were early and the weather was nice, we set up on the deck in the sun for some relaxing and reading. Once the ferry left and became colder, we moved inside to investigate what was on the boat. Although it has a (tiny) cinema, there was nothing on, that we fancied, so we headed to the Magnus Lounge for a drink and some comfy seats. Access to the lounge came with our more expensive Premium/Executive cabin. If you're going on holiday, I recommend booking one of these. They also come with two drinks vouchers and a continental breakfast in the morning.

Once a table came free in the dining section of the lounge, we sat down for dinner. The menu is extensive, and many ingredients are sourced from "local" producers — local being anything between Aberdeen and Lerwick. We opted for fish and chips, which seemed most reasonable on a boat! They were pretty good, with nice crispy batter. The food is the same as outside the lounge, but there is table service, and the Magnus Lounge has a much more relaxed atmosphere.

After dinner, we headed upstairs to the deck again to walk around to get to our 10,000 steps. As it was pretty cold, we left pretty soon for the lounge for a beer. We ended up reading until the internet finally cut out, as we were too far from land for mobile phone signals to reach. At that time, we used one of our vouchers for a nightcap — an excellent Highland Park 12-year-old — to finish the day.

We climbed into bed just before midnight when the ferry was mooring at Kirkwall on the Orkney Islands.

Lerwick — Jun 3rd

We set our alarm for six o'clock to have time to wake up, shower, and get ready for breakfast. Although our alarms woke us up after a relatively resting sleep on the ferry. We were really awake when, at six thirty, the ferry's announcement system announced that breakfast was now open.

After we finished our preparations, we headed down to the Magnus lounge again for our basic but tasty continental breakfast. The only hold-up was for coffee, as the coffee (and tea!) machine took around 2 minutes per drink — an age if you want to get caffeinated to wake up.

You can enjoy breakfast until half seven, but we did not need that long, and after packing, we left the ferry in search of our rental car. We rented our cat through Bolts Car Hire — ostensibly the mayor, if not only, car rental company on Shetland. You literally see their cars everywhere. We went for their smallest model, a Skoda Citigo. We're not transporting cows and sheep, after all. At around £300 for 6 days, it was pretty good value too, not that we had any other choice!

It had been a while since I drove, and it took me some time to figure out which pedal did what again, and which way the steering wheel steered. After a few minutes, it luckily came back to me, and we navigated out of the crowded ferry-terminal parking lot — it was crowded because of parked cars, not because so many vehicles were being driven. She was navigating as I was driving, and after a five-minute drive, we ended up at our B&B, Woosung. Our room wasn't quite ready yet. It was just after eight o'clock, so we dropped off our luggage and headed into Lerwick to explore.

Lerwick's Commercial Street

We walked up the hill and into Lerwick's Commercial Street. At so early in the morning, it was eerily empty. Once we got to the harbour, I loaded up the first walk of the holiday, the Lerwick Explorer.

Before our trip, I had searched for some good walks of various lengths across the islands. We were certainly not only going to walk, but it is the best way to get to the most scenic places. The walk highlands website as well as Orkney and Shetland Pathfinder Walking Guide from Ordnance Survey. Many routes overlapped.

The route around Lerwick started at the port and followed Commercial Street up towards the east. Just after Bain's Beach, we looked at a dog playing on the beach and took photos of the house just to the east. We later found out that this building acted as Jimmy Perez's house from the Shetland series.

The wind picked up around the eastern point, as the walk was pretty exposed. It wasn't freezing, but the weather was mostly grey. We spotted an odd duck in the cemetery, prompting us to investigate it thoroughly. We encountered Dutch sailors' graves as well.

From the cemetery, we climbed up along the coast with great views and through a golf course on this outcrop called The Knab, before heading down to the waterline at a place called "The Sletts", which has a natural slope of rocks into the bay.

After a little while along the road, we explored Clickimin Broch, situated on the shore of Clickimin Loch. Brochs are Iron Age stone buildings with a specific shape, found mainly on Scotland's Atlantic Coast. No longer occupied by people, but rather its walls house dozens of starling nests. The starlings were very busy delivering worms to their screaming young.

Bressay Ferry
1 / 8
Welcome to Shetland
2 / 8
Lerwick Harbour
3 / 8
Jimmy's Hus
4 / 8
Dutch sailors in the cemetery on the Knab
5 / 8
Wild Flowers
6 / 8
The Sletts
7 / 8
Clickimin Broch
8 / 8

Once done with the visit of the broch, we walked back to the B&B to pick up our car to head to Scalloway to look at the castle and the museum. Once we crossed the hills, the sun also came out, instantly making it feel more like a holiday. We parked at a small parking place near a stony beach and walked to the castle and museum to only find them both closed, and the castle in scaffolding.

Instead, we wandered through Scalloway along its shoreline and discovered their Norwegian connection. During the second world war, it was a location from which the Shetland Bus operated to support the Norwegian resistance. There are a few plaques and places scattered around town, including the Prince Olav Slipway which was opened by the then-Norwegian crown prince.

Prince Olav Slipway
1 / 3
Harbour
2 / 3
Main Street
3 / 3

After an ice cream on the beach, we drove back to Lerwick to drop off the car and investigate Fort Charlotte, situated on Lerwick's harbour front. By then, we were tired and decided it was time for a well-deserved pint.

Finding an actual pub was not easy. We first had a peak into The Lounge Bar, but it was full and uninviting. We did not want to have a drink at the same place that we had booked dinner at and ended up at The Dowry. They luckily could squeeze us in near the bar. Many people after us were turned away because they were full. Both for dinner and drinks (although there were a few window bar stools available). We concluded that because there are so few places for so many people, we should book into a restaurant for every night we were there, and not just our day of arrival and the following Monday. We decided to just have fish and chips at the harbour on Sunday.

After our drinks, we smooched down a few doors to No 88, where we had booked. This was also full, with no more available seating. You really have to book in Lerwick. Our dinner was nice there, and we enjoyed a nice bottle of wine. At that point, we also decided to book for every other night we would be in Shetland.

After dinner, we walked back to our B&B to finally check in and chatted with the lovely host. After retiring, I quickly looked at the photos I took today and wrote down some notes. These notes were crucial for me to write this all up!

Sumburgh Head — Jun 4th

We started the day at a reasonable time. And after having breakfast, we drove to the mainland's southern point Sumburgh Head. We parked at Jarlshof, the location of several ancient settlements. Still, instead of exploring that right away, we looked for the coastal path towards the lighthouse. This was going to be one of our walks on Shetland.

← Coastal Walk

The walk starts just behind a wall and is near the entrance to Jarlshof, which I continuously kept calling Jarlsberg, the name of the Norwegian "cheese". In any case, there was an excellent big sign saying "coastal walk". However, that was superfluous as the lighthouse was in the distance up on the outcrop, and the path was clearly going to follow the coast.

The walk up to the lighthouse is along a gradually rising path, which was easy to walk on. The views to the right were great. We encountered some sheep with little lambs. Most of them ran away when we approached, but a family clearly just posed for the camera. There were a few stiles and walls to climb, and with one nearer to the lighthouse, I spotted a few puffins just off to the right. I had seen them previously in Iceland, but never this close. After a few minutes of looking at and photographing them, we continued to the lighthouse. The last stretch was pretty steep, but we made it.

At the top, we walked around the peninsula, looking down at the cliffs, where there were many birds, including puffins sitting, flying, and fishing. After observing a bunch of Norwegians trying to take photos of birds in flight, we decided it was time for some tea and a snack.

Looking back at Jarlshof
1 / 12
Posing Sheep
2 / 12
Oyster Catchers
3 / 12
Puffins [1]
4 / 12
Puffins [2]
5 / 12
Puffin
6 / 12
Guillemot Colony
7 / 12
Coastal View
8 / 12
Fulmars
9 / 12
Puffin
10 / 12
Jagged Cliffs
11 / 12
Lighthouse
12 / 12

The café at the lighthouse was open, but as they were short staffed could only do us drinks and some takeaway croissants, which we ate sitting outside on a bench looking out over the cliffs (and parking lot).

After having regained our strength, we had a look at the foghorn and the museums. The site has four distinct things to visit: the lighthouse and foghorn, a hut showing how the world war II radar station looked like, a room with stories about all the lighthouse keepers, and a museum about the local marine life, including explanations of the warm water due to the gulf stream, and the recent decline in bird populations.

Clifftop Lighthouse

Once we were done with the museums, we continued our walk back to Jarlshof, first by going down a little bit before going up again to go over the local hill, which had some views over the headland with the lighthouse. On the other side of the hill, we had a good view of Shetland's main airport.

Wheelhouse at Jarlshof

Back where we started our walk, we explored the Jarlshof site. They provided a free audio tour with the ticket, which guided us through the many stages of settlement on the site. From the Iron Age broch and wheelhouses through Viking settlers, and finishing as a Scottish Laird's home. The site is very complex and well worth spending some time exploring.

Red Pool of Virkie

Once we were done, it was still relatively early, and we intended to explore the south mainland as much as possible. Online I found out about the Red Pool of Virkie, a specific pool of water near the coast that turns very red every summer due to the decomposition of sea algae. It was a little drive away along a single-track road, and we parked our car on the side of the road. There wasn't a lot of space, but we were not in anybody's way.

The walk to the pool was through fields with sheep and their dung, with plenty of stiles. By having to go over so many, our technique for using them improved. After about 20 minutes, we got to the pool. Although I had expected it to not be very red yet as it was earlier in the year, we were happily surprised by being very clearly so. There was also an unexpected rock arch nearby.

We walked back to the car and then drove to St. Ninian's Isle along another single-track road. To get to the island, you walk over the beach, but there is sea on both sides! This kind of formation is a tombolo, and there are few of these. We only walked around part of the island but trekked up to the ruined chapel on the hill. The hike up was taxing due to the sandy nature of the path. There were some excellent views, although it was raining a little.

The Beach
1 / 2
Broken Rocks
2 / 2

Once we were done, we were ready for dinner and drove back to Lerwick to drop off the car. We walked to the fish and chips place on the harbour side we spotted earlier. To our surprise, it was closed. As a matter of fact, nearly all restaurants were closed or fully booked. We ended up at the Golden Couch, a restaurant serving almost every Asian cuisine that you can think of. It was nothing spectacular, but still pretty decent. And the only option.

Back at the B&B after dinner, I spent out the ferry reservations for our drive to Unst on Wednesday. Although Shetland has an extensive ferry network, figuring out how it works could be more apparent. The schedules aren't set up logically and mostly show departures but not necessarily the destination — this is particularly problematic on the Mainland/Yell/Fetlar ferries. And it is absolutely recommended that you book, as they are not very often and you don't want to be stuck! Back more about this later.

Noss Boat Tour — Jun 5th

After breakfast, we wandered into town. Several months ago, I had booked to go on a birdwatching tour, but the morning sailing was already booked out. Therefore, our tour wasn't leaving until noon.

We had dressed already warmly, as it tends to get cold on windy open deck boats, so we set off to buy some gloves. She bought a nice set of bright-coloured Shetland knitted ones, but I wanted a little more technical. The few chain sports shops had nothing beyond boxing gloves, but they had directed me to a fishing supplies shop. They had grippy gloves for finishing, and I tried on a few pairs. Initially, I tried fingerless gloves, but I wanted fully covered ones. Only after leaving the shop did I notice that the ones I had bought were full-fingered, except for the thumb and index finger. This was great; I could wear the gloves and still handle my camera well.

We still had some time to spare, and as we were going to be on the boat for well over two hours, we decided to have a cup of tea and some cake. We found the C'est La Vie café at one end of Commercial Street, and after some time, we managed to draw some attention to get seated. There was really only one table left for us. We ordered coffee and tea, and the last two slices of cake. While enjoying it, many people, some from cruise ships, were also interested in tea and cake, but had to be turned away as it was full. Beyond not having enough restaurants for dinner, Lerwick could also do with more cafes for snacks and cake!

Cheeky Seal

We wandered towards the harbour to wait for our boat to board, and while doing so, there was a cheeky seal, just looking over the edge of the quay. I bet it was after some of the fish the boat people had for later in our tour.

Our boat, the Seabird, was small, with only twelve spaces for guests. Although it has a little cabin, we all opted to sit outside as that's where the fun would happen.

After leaving the harbour, the guide pointed out Jimmy's house before heading towards the lighthouse on Bressay. We took photos and entered a cave where a few Shags were nesting. There was also a rock arch that we went through before setting course for the main colonies at Noss.

Guillemots, both variants
1 / 10
Gannets on a Ledge
2 / 10
Gannet Spreading its Wings
3 / 10
The Two Types of Guillemots
4 / 10
Noss Cliffs
5 / 10
Gannets in Love
6 / 10
Gannet Colony
7 / 10
Guillemots on the Edge
8 / 10
Gannet in Flight
9 / 10
Great Skua in Flight
10 / 10

There were so many, many birds. It was mostly gannets, but we also saw guillemots and their bridled variant, which can be separated by a particular white line near their eyes. There were also a few fulmars, kittiwakes, puffins and skuas. The majestic gannets were my favourite.

The boat crew had brought fish snacks to show us how the gannets dive to catch their dinner underwater, and they most certainly showed us how they did that. There were a few squabbles in case they couldn't swallow the whole fish underwater, and a grey skua also tried to steal some of them, but not very successfully.

Skua Making a Splash
1 / 5
Gannet Taking Off
2 / 5
Skua Wanting to Steal the Fish
3 / 5
Gannet in Flight
4 / 5
Seal Seeing Us Off
5 / 5

After the fish were gone, the boat departed for a little bay where the Noss nature reserve wardens have their house.

Great Skua in Flight

On the way there, we were followed by a Great Skua right next to the boat. It stayed there for quite some time, as the boat crew threw some snacks into the air for it to catch.

The Wardens' House

Once we got to the bay, we saw the ferry that is operated by the nature reserve, which you can use if you want to visit Noss without having to take a boat tour. The ferry is just a dinghy which you need to call by waving at the wardens. When we went there, it wasn't operational, as they have Mondays and Thursdays off.

The Face

In this little bay, the boat crew served us tea and biscuits, an excellent way to warm up. After about fifteen minutes of chit-chat, we headed back to Lerwick by going the other way around the island, where a face in the rock wished us welcome.

When we returned to Lerwick, we picked up our car to drive to Scalloway to try the museum again. We arrived over an hour before closure and thought that would be plenty of time. We were pretty wrong, as there was a lot of material about Scalloway as a town, but even more about the history and operations of the Shetland bus, with lots of Norwegian flags and descriptions in Norwegian. Which was still reasonably easy to read for me. We did have to rush, as an hour wasn't quite enough. An hour and a half would have been better.

We returned to the B&B to change from our warm boat-going clothes to some more presentable fashion for dinner. We had a little time and managed to grab a little table at The Dowry, which we had also booked for dinner for later. We enjoyed some local beers, and after chatting with the staff, they could seat us at our table a little earlier than we had initially planned. Again, they had to turn away many people, as they were the only place open besides the Golden Coach.

Dinner was pretty lovely. I had a Duck Confit, and she had a burger. We enjoyed two more beers in a bottle with dinner as well. After dinner, we decided to go for a little walk. With the boat tour, and the museum, we had yet to walk more, and we did want to get to our 10 000 steps. We walked along the Knab with some sun before returning to the B&B. I quickly looked at the 100s of photos I took while enjoying one of the beers we had bought in Aberdeen.

Esha Ness Cliff Walk — Jun 6th

I enjoyed breakfast, with a haggis slice, alone at the B&B. Although the location was great and the host very welcoming, there was a pervasive smell of cigarette smoke. Although I have no sense of smell, it put her right off having breakfast. While enjoying my haggis, our host explained that it was her last year, as new fire regulations meant she had to make too many changes to the building.

After breakfast, we drove to Northmavine and the lighthouse at Esha Ness. The first section out of Lerwick North was an easy drive, with lots of building works on the hills surrounding us, where many new energy-generating wind turbines were built. There is plenty of wind on Shetland, so that made perfect sense to me.

Esha Ness Lighthouse

After a while, the road became narrower, and after being stuck behind a hearse for a bit, we saw a car being on fire near a cafe. We turned off the main road just before Hillswick, which turned into a single track to the lighthouse, where we parked.

Near the lighthouse, it was fairly busy with people looking at the well-known majestic cliffs. Although the Ordnance Survey book on circular walks had a short 3.5km walk, the Walk Highlands website had a longer 14km one, which we walked instead. The walking along the cliffs was pretty spectacular, and there were quite a few sheep. We went past a dried-up waterfall, an inlet under the rocks through to the sea, and a fair amount of stony beaches and ponds. The landscape was very distinct from the south mainland and Sumburgh Head.

Cliffs
1 / 7
Eroded Inlet
2 / 7
Rolling Hills
3 / 7
Left and Right
4 / 7
The Lighthouse on the Cliffs
5 / 7
Oyster Catcher
6 / 7
Craggy Sheep
7 / 7

After going up and down and chasing away some sheep, the second section of the walk was along quiet roads. However, just when we got there, we startled two dogs who were quite insisting on barking at us.

Views from Land

Although this section was along the road and inland, the views were still good, as this was on slightly higher land. There was a nice stack in the sea in the distance as well.

The inland section ends at the Tangwick Haa museum, which is open and free. They also serve coffee, tea, and biscuits and only ask for donations to cover the costs. We did enjoy the tea in their lovely garden, where a lamb was bleating a lot — we later saw it when it was trying to get back into the enclosure where its mum was.

Before continuing our walk, we perused the museum, which focussed on life in Northmavine with historical photos, stories, and a setup of a traditional living space. It was an excellent resting place during our walk, and because of the tea and coffee, we did not stop at the Braevik cafe, which I had originally planned. As a matter of fact, I specifically spend time to make sure that for each of our walks, there would be a nearby cafe or shop open to have lunch in or at.

The Museum and a Beach

The third section of the walk is along the coast again. But unlike the high cliffs, the landscape here was more rolling hills with lovely beaches. Although the water was probably freezing, it didn't deter seals from sticking their heads out. The other main feature in this section was Dore Holm, just off the coast — a rocky formation resembling a drinking horse.

Dore Holm

Leaving the rocky horse behind, the walk continued along the top of the cliffs, where there was also a big wooden cross on a little hill. From there on, it was pretty undulating. At some point, we came upon an abandoned house with a statue of a Viking. The last section of the walk went uphill and back to the lighthouse. A coastguard helicopter flew over reasonably low in a big circle when we were nearly there. I don't think they were looking for us!

The plan back in Lerwick was to go to the Lerwick Brewery, but we were now too late to make it. Instead, we planned to visit them on our last day on the island, just before getting the ferry back.

For dinner, we booked a table at the Maryfield House Hotel, on the other side of the Bressay sound. This meant that we had to take the ferry. After exchanging our walking outfits for more going-out clothes, we wandered down to the ferry terminal in the harbour. We were really early, so we would have to wait about 40 minutes as per the schedule. But after about fifteen minutes, the ferry showed up, and we could board.

Maryfield House Hotel, Bressay

After a 10-minute ride, walking up the hill to the hotel took us a few minutes. Although we were early here too, they could seat us in the small but nicely appointed dining area. The food was excellent — the best we had in Shetland — and had a pleasant atmosphere. We did not want dessert, and as they had no after-drinks menu, our waitress suggested we just look at what the bar had to offer. However, we could not see any whiskies whatsoever except for a few Irish ones. As we were in Scotland, I asked whether they had any whiskies in the bar. We were disappointed when the answer was negative until she pointed out that they have a whole whisky room! After chatting with the proprietor, who explained that during the Covid period they refurbished the whole place, including their new whisky room.

Fivla, the Ferry

While we were enjoying our drams, we ended up chatting to one of the Germans, who were also having a whisky, about the wildlife and birds that they had seen, and we had seen. We suggested trying out Sumburgh Head to spot puffins, which they had yet to see.

When they left for the ferry, we followed them shortly after finishing our tipple, thinking it would leave at 20:00. But after walking to the ferry head, it turned out that we had to wait half an hour before it would actually go. Instead of staying in the windy weather, we sped back up the hill to the hotel to enjoy another dram. And we returned to the ferry terminal well on time to see the Germans boarding at the same time as we did.

When we returned to our B&B, we enjoyed another lovely beer, a La Trappe/BrewDog collaboration we also bought in Aberdeen. We had an early night; we had to get up early the next day.

Hermaness Nature Reserve — Jun 7th

We woke up and had breakfast early, as we had a long drive in front of us. All the way to Shetland's, and hence the UK's most northerly island: Unst.

The drive went smoothly, and we made it to the Yell ferry early enough to get an earlier ferry. We booked one, but their policy is that they'll take you if they have space for you and your vehicle.

What I suspect many people do on Yell is drive straight to the ferry to go to Unst. If we ever return, we can explore Yell too, as I felt sorry for the island. Although we got an earlier ferry to Yell, there was no space on the next ferry to Unst, so we had to wait for our booked ferry that was leaving about 30 minutes later.

Broadwalks on Moor Land

Once on Unst, we still had to drive a fair amount to the nature reserve's car park, following roads that became narrower and narrower. At the reserve, there was a little cabin with information boards and also a toilet, which we used.

The weather was grey and a little drizzly for about 15 minutes. Because of this, we marched along the new boardwalks all the way to the top of the hill. When crossing this moorland, you can't hear the sea or have any indication of what is to come. Once we arrived, we were greeted with a fantastic view of the cliffs, with the lighthouse to our far right.

View from the Cliffs

Instead of going right, we followed the cliffs south towards the gannet colony at Saito, where 10s of thousands of gannets nest. I noticed I was still wearing my regular trainers instead of my fancy new walking ones. Luckily this didn't cause any trouble, and the ground was firm and dry enough.

We spend a fair amount of time walking the kilometre to the colonies, watching the birds and explaining the wonders of our Heroclips and London Wetland Centre binoculars that we brought to a small group of people. They were amazed at how much more they could see with these. Besides the large amounts of gannets, we spotted some puffins too. And plenty of sheep with lambs ignored the "weak cliff, stay out" signs.

Saito Bird Colonies
1 / 6
Gannets Nesting
2 / 6
Gannet in Flight
3 / 6
Puffin on the Rocks
4 / 6
Birds in Flight
5 / 6
Sheep with Lamb
6 / 6

Once we were done looking at and photographing the birds, we walked back up the minor incline to the top over the soft and springy ground while watching some skuas hunting on the moor.

From the top, where the broad walk finishes, we continued down the hill along the coast towards the most northern isle in the United Kingdom and the lighthouse perched on Muckle Flugga. The path was uneven and steep in sections, although the ground was a little springy but dry. Still fine for my regular city trainers.

Did We Come From There?!

At the bottom, we looked back upwards, as our original plan was to go back up the way we came after our trip to the lighthouse. Neither of us was looking forwards to this challenge.

The walk along the cliffs to the lighthouse was lovely, and there were a few more bird colonies. When we got to the vantage point, we spent some time looking at Out Stack, the most northerly island in the United Kingdom, and the lighthouse on Muckle Flugga. And, of course, more photos were taken.

Bird Colonies on the Rocks
1 / 2
Muckle Flugga Lighthouse, and Out Stack
2 / 2

When I originally planned the route, the information stated that the path over Hermaness Hill was closed. Still, it looked like it was open again. And we could see several information boards and walking posts that went straight over the hill. I looked at the map on my watch, including contour lines. From this, the way over the hill would be the easier option, so we decided to take this route.

Skua in Flight

This was an excellent choice, even though getting up the hill was a little rough. The path was good, straight, and no annoying zigzags. Once we reached the top, the way back down was mainly over boardwalks again or otherwise well-trodden paths. We also saw several skuas.

Viking Ship (Replica)

We had booked our ferry to leave Yell at 16:45, but it was only 14:30, so we had some time to explore a little more on the island. First, we headed to the Shetland Reel gin distillery on the site of the old army base at Saxa Vord. This is also where a new spaceport is being built for launching small rockets into orbit. There was nothing to see of that yet, so instead, we rang the bell at the distillery so she could have a little tasting. I was driving, so I was just left standing there like a lemon. We did buy some gin to take home and to enjoy in the evening.

On the drive to the ferry terminal, we visited a replica Viking longhouse and ship. The ship was supposed to sail from Sweden to North America but only made it as far as Shetland. We stopped at the Unst Bus Shelter, also called Bobby's Bus Shelter. It was created by local boy Bobby McCauley when he was at school on the island. Bobby, who lived nearby, growing tired of the often long, cold and wet waits in the morning, took matters into his own hands and wrote a letter to the local newspaper requesting a new shelter for him to wait in. Since then, it has been furnished with many useful and useless things.

Bobby's Bus Shelter

We arrived at the ferry terminal early, and luckily because our car was so tiny, they could make space for us, but not the 5 slightly bigger cars ahead of us. This also meant we had an earlier ferry to return to the mainland, arriving in Lerwick around 18:00.

For our last dinner in Shetland, we had booked a table at Da Steak Hoose, Lerwick's premier (and only) steak house. I enjoyed their haggis bonbons and steak, while she enjoyed the steak and potato scone, with as main the scallops. When we arrived, there was a large group doing speeches, some kind of leaving do. Once they left, it quieted down, and the atmosphere was more relaxed. Like so many other restaurants, they're mainly family owned and run, and are therefore closed on Sunday and Monday.

Instead of heading back to our B&B, we headed to Tesco to find some tonic to go with a small bottle of gin we had picked up at the distillery. The sun came out nicely on our way back, illuminating the Knab. We took some photos before retiring and enjoying our gin and tonics. Then bed.

South Mainland, and Travel to Aberdeen — Jun 8th

We got up a bit later; we were so busy the previous day. After breakfast chat with some Germans giving them puffing-watching tips, we started packing. Inadvertently I had paid the B&B £100 too much, which she returned in cash, mocking me a little. We put out luggage in the car and headed back to Sumburgh Head — mainly to buy our traditional souvenir magnet. We drove all the way instead of walking along the coast and found the parking place full. Mostly because some people didn't stay in between the lines. We parked in a safe space and then walked up the hill to the lighthouse. On the cliffs were two puffins looking cute, which I pointed out to a tour guide with many Americans in tow.

Crofthouse Museum

After our whirlwind stop at the lighthouse, and with a new fridge magnet, we bought a ticket to the Croft House Museum which was not far away. We were the only two there for most of the time, and the host told many stories about how people lived in crofts and how the Crofter's Act broke the grasp of the Lairds. Visiting is well worth the visit.

Fulmar

After our tour, we walked to its water mill and continued along the coast to a waterfall, which turned out dry. While photographing birds, we got a herd of curious cows that followed us for a while too. It was unlikely that the fence would have stopped them in case they would have been more curious. I had also already packed my walking trainers and did our little walk with my regular trainers. Again, this was fine as the ground was dry and not rocky.

As this was our last day, we drove back into Lerwick and filled the car with fuel to be able to return it at the ferry terminal. We continued going to the Shetland Museum for lunch and perhaps looking around. To my great fright, there I noticed that my phone was missing. There was still no sign of them after a frantic search in the car and underneath the seat. We drove back to the petrol station, where I looked around really well while my wife went into the shop to see whether it was handed in. In London, my phone would have been gone, which would have been a disaster, but luckily somebody had seen it falling out of the car when I closed the door.

We went back to the museum to have coffee and a tasty cake. Their lunch looked good too. We then decided not to visit the museum as it was too late. Instead, we chose to wait our remaining time at Lerwick Brewery after dropping off the car. My research had shown that the brewery was right across from the terminal. Unfortunately, I got that wrong, and it was 2 miles uphill. Having turned in our car keys already, we also could drive up to at least get a take-out.

Therefore, we had to wait at the ferry terminal and got on board just after five. We had a few more walking rounds on the deck to get out steps in, and I took some photos. Our cabin was slightly different, with two single beds and no bunk bed.

Good Bye Shetland

We watched Lerwick and Shetland glide away when the ferry left, and shortly after that, we had fish and chips in the Magnus lounge, just like our trip to the islands. After a beer from Lerwick and Orkney, we finished our day with a wee dram.

Afternoon in Edinburgh — Jun 9th

We woke up early on the ferry at 06:00 because the boat announced that breakfast was now being served. We enjoyed our complimentary continental breakfast and left the ferry for the train station around 07:30.

Aberdeen's station has few facilities. Still, as it's adjacent to a shopping centre, we found the Black Sheep cafe there, where we camped out with tea and coffee until our train was announced just before 10:00.

There was no strike this time, and we travelled on our booked LNER service back to Aberdeen. The upside of LNER in first class is that they serve you breakfast and refreshments.

In Edinburgh, we went to our hotel, Angels Share, to check-in. Unbeknownst to us, my parents had been waiting at Waverley to greet us. We missed them, so they met us for a light lunch at the hotel. We intended to do some touristy things, but we were on the late side for this and decided to avoid travelling and tire us out more.

Edinburgh Castle

Instead, we took my dad to the Black Cat to finally enjoy some whiskies together. We had several nice ones and finished with a lovely beer before picking up my mum and heading for dinner. I thought the restaurant was a twenty-minute walk away, but it turned out to be near. Grazing by Mark Greenway was a little posher than we had expected and was actually situated inside the Waldorf Astoria. The meal was excellent and relatively reasonably priced. We did feel underdressed, though.

After finishing my 10 000 steps while walking through Edinburgh during twilight, we finished with a few drinks in the hotel, first in the bar and then in the lobby once a band started playing too loud in the bar area.

Travel Home to London — Jun 10th

We started with a lazy morning with a great breakfast at the hotel before heading towards Waverley and our train home. We arrived on time and waited a little in the sun on the platform. The trip back into London was uneventful, and the train beer much welcome.

To conclude our holiday, we finished with a pizza at our local pizza joint, a favourite of us: The Red Pepper.

The holiday finished more than a month ago, and it has taken me this long to write up the story and process all the photos — there is only a small selection in this story­. At some point soon, I also intend to turn the best photos, with descriptions, into a physical photo album.

Shortlink

This article has a short URL available: https://drck.me/shetland-hz2

Comments

No comments yet