Welcome back to the third and final Derry Debrief, a mini-series on my recent trip to Derry, Northern Ireland, and the golf I played in the area. For our final entry, we’re heading about as far north and west as you can to play golf in Northern Ireland: Portsalon Golf Club
As a matter of principle, I do very little research before I head out on a golf trip. Whether it is Bandon Dunes or a local muni, I like to be surprised by the golf I get to experience. All I knew about Portsalon was that it was allegedly the most scenic of any of the courses I’d play on the trip. But having experienced two incredible days of golf so far, I found that hard to believe.
The opening stretch at Portsalon is some of my favorite golf holes I’ve ever played. Like Nos. 1 and 18 at the Old Course, the first and final fairways at Portsalon join up to create a massive field of golf. The fairway contours are immense and rolling as they work their way up a hill that hides the first green, only affording you a peek at the flag in between two peaks of fairway. With the right light, it’s a magical scene and creates an opener filled with quirk and randomness, two things I love in a golf course. Moving off the first green, you turn left and crest a ridge onto the second tee. It is here where you see why people would tell you
. The second hole plays over and alongside Ballymastocker Beach and includes a tee shot that asks you to bite off as much as you can chew. Like many shots at Ballyliffin, this shot gives you a mountain backdrop and all the intimidation you can handle.
After two holes at Portsalon, I was hooked. Many American seaside routings tend to save the best views for the end of the round. There is something about the Scottish and Irish way of routing courses, a strategy that often starts with the most stunning vistas and seaside holes that really gets the juices flowing. Portsalon did exactly that and didn’t slow down. Its opening seven holes include many diagonal drives over dunes and fairway contours, greens that repel, and a long par 3 in No. 5 that more than keeps your attention. From there, the course heads inland and tackles some tumultuous land before arriving in a meadow-like arena on No. 10.
The final six holes, which reside on the high side of the Portsalon property but as far away from the water as you can be, may be the surprise of the trip. This stretch goes up and over the most severe sections of the land multiple times, including two drives on Nos. 14 and 16 that provide the opportunity to get a drive bounding downhill if the wind blows the right way. This stretch plays in the same direction towards town, bringing the modest clubhouse and the vacation homes that surround it closer and closer. The final hole crosses through the open field of golf once again, bringing you home after a memorable day.
Portsalon struck me in a way I wasn’t prepared for. It was the course that was mentioned the least on the internet in my brief searches, and yet I couldn’t help but feel that if it were an hour closer to Dublin it would be included in every Northern Irish golf trip. Getting out to the course is a bit of a journey, but it’s the extra effort that makes the experience that much more enjoyable. Hell, that was the theme of the entire trip.
Our Derry adventure came to a close in town at Walled City Brewery, a restaurant with a very appropriate name given my brief learnings of the town and its history. With a Michelin-starred chef in the kitchen and a deep bench of terrific brews, it was the perfect place to end a first experience in the region. Derry may not be the most convenient place to travel to, but for those looking for a trip that includes both tremendous golf and deep cultural experiences, it is worth visiting.
This piece originally appeared in the Fried Egg Golf newsletter.
and receive golf news and insight every Monday, Wednesday, and Friday.
Golf was a big part of my upbringing as I grew up with a PGA Professional as a dad. I went to the course with him in the morning, helped out in the pro shop, caddied, and ultimately played golf in college before helping out in the early days of Fried Egg. While I’ve been involved in many different aspects of our organization over the years, today you’ll largely find me at our events and helping our membership as our Community Manager. And while I love this position, my dream job will always be starting shortstop for the Chicago Cubs.
galleryWrap.querySelectorAll('[data-hidden-thumb="true"]').forEach(thumb => {
// Set the first thumbnail as active if there are any thumbnails and none are already active
const activeThumb = galleryWrap.querySelector('.gt_gallery_thumbs_wrap.is-active');
const firstImgSrc = thumbWrappers[0].querySelector('.gt_gallery_thumbs_visual').getAttribute('src');
const firstAltText = thumbWrappers[0].querySelector('.gt_gallery_thumbs_visual')?.getAttribute('alt') || '';
const captionEl = galleryWrap.querySelector('.gt_gallery_caption');
const activeImgSrc = activeThumb.querySelector('.gt_gallery_thumbs_visual').getAttribute('src');
const thumbImg = thumbWrap.querySelector('.gt_gallery_thumbs_visual');
mainVisualWrap.setAttribute('aria-controls', 'lightboxPopup');
mainVisualWrap.setAttribute('data-gallery-group', galleryId);
mainVisualWrap.setAttribute('aria-label', imgAlt ? `View ${imgAlt} in fullscreen gallery` : 'Open image gallery');
const activeIndex = Array.from(thumbWrappers).findIndex(thumb => thumb.classList.contains('is-active'));
openLightbox(galleryId, activeIndex >= 0 ? activeIndex : 0);
const activeIndex = Array.from(thumbWrappers).findIndex(thumb => thumb.classList.contains('is-active'));
openLightbox(galleryId, activeIndex >= 0 ? activeIndex : 0);
thumbWrappers.forEach(thumb => thumb.classList.remove('is-active'));
const thumbImg = thumbWrap.querySelector('.gt_gallery_thumbs_visual');
// Get the alt text from the thumbnail image and use as caption
const captionEl = galleryWrap.querySelector('.gt_gallery_caption');
// After a short delay, update the image and fade it back in
thumbWrap.addEventListener('click', handleThumbnailActivation);
const innerButton = thumbWrap.querySelector('[role="button"]');
if (!lightboxGalleries[galleryGroup] || lightboxGalleries[galleryGroup].length === 0) {
console.warn(`Gallery group "${galleryGroup}" not found or empty`);
const closeButton = lightboxPopup.querySelector('[data-lightbox="close"]');
if (lightboxOverlay) gsap.set(lightboxOverlay, { opacity: 0 });
if (lightboxContain) gsap.set(lightboxContain, { opacity: 0 });
slide.className = "popup_lightbox_swiper_slide swiper-slide";
// We'll use a temporary image to get the natural dimensions
img.alt = image.alt || `Gallery ${galleryGroup} image ${index + 1}`;
img.className = "popup_lightbox_swiper_visual u-cover-absolute";
const currentCounter = document.querySelector(".popup_lightbox_nav_current");
updateAltText(e.realIndex); // Update alt text for the current slide
const currentCounter = document.querySelector(".popup_lightbox_nav_current");
const closeButtons = document.querySelectorAll('[data-lightbox="close"]');
// Make sure close buttons have proper accessibility attributes
const formattedTotal = totalSlides < 10 ? "0" + totalSlides : totalSlides.toString();
const totalCounter = document.querySelector(".popup_lightbox_nav_total");
const altTextEl = document.getElementById("n4-gallery-lightbox-alt");
// Main function to run the component replacement and initialize galleries
// Short delay to ensure all components are processed before initializing galleries
// Return the main function in case it needs to be called again
// Set up the execution logic - run either immediately or after gallery fetches complete
window.onGalleryFetchesComplete = window.runPowerfulRichAfterGalleries;
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere. uis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere. uis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.
Engage in our content with thousands of other Fried Egg Golf Members
Engage in our content with thousands of other Fried Egg Golf Members
Sign up to our newsletter for fresh takes Mondays, Wednesdays and Fridays*
Sign up to our newsletter for fresh takes Mondays, Wednesdays and Fridays
We rate golf courses using a three-"Egg" scale. To receive even one Egg, a course must be very good; to receive three, it must be world-class. Most courses will not get any Eggs at all — and this is not meant as an insult! Click here to learn more about our rating system and our criteria of Land, Design, and Presentation.