Friday Night Dinner: Locatelli's
We went to Locatelli's, a fairly new restaurant, situated in the redeveloped Sainsbury's wing of the National Gallery. This meant that we actually had to go into the gallery to go to the restaurant, including a security and bag check.
It was a nice warm and sunny evening and when we got there, we walked up to the first floor and were sat down in quite a nice area. During the evening, the lighting varied a bit as somebody was seemingly playing with the dimmer switch inside the restaurant. This was slightly irritating. We really wanted them to pick a light level, and then stick with it.
Because neither of us were massively hungry, we opted to have one of the snacks on the menu, rather than a full starter. My wife went for the Parma ham and Parmesan cheese starter, which came with delightful big chunks of cheese and a slightly salty ham. I had crackers with sesame seeds, and a full flavoured, and delicious whipped goat cream.
For our mains, I selected a Stone Bass fillet, which came with samphire, some mushrooms, and some salad. The fish skin was nicely grilled and crisp, with the fish flaky. My wife had a roast chicken, which came with polenta and some vegetables in a tomato sauce with some crisp sage leaves on top. To drink with our food, we shared a lovely and fresh bottle of wine made with Caterratto grapes.
We really enjoyed it, and the restaurant had a good atmosphere. The service was speedy and friendly from the moment we arrived to the point we left. We didn't stay for dessert though, as we weren’t very hungry, but the dessert options sounded lovely… one for another visit, perhaps.
Overall, dining in part of a gallery, located on the first floor adjacent to a gift shop is slightly strange. But the meal was tasty, the service and ambience lovely, and it was fairly good value for a central London location.
It would be a good place to go on a date, or if you just fancied a meal after some sightseeing, or gallery touring.
Friday Night Dinner: Casa do Frango
This restaurant is situated in the new-ish development Sir Simon Milton Square, close to Victoria Station. We've visited this area previously when we dined at the Rail House Victoria, and at Camino Victoria, which are both close by however on a warm summer evening we decided to go for some Portuguese cuisine.
Casa del Frango, specialise in Portuguese grill dishes. We started with a pair of Salgadinhos, crispy filled empanada pastry with kale, mushroom, and caramelised onions. These were hot and fresh and vanished quite quickly.
For my main course, my husband chose the lamb chops, which were also nicely grilled and still moist. I picked the beef skewers, which were also well cooked. Neither of these dishes came with sides, so we ordered some house rice to go with our mains to make a full meal. Without the rice, we'd likely still have been hungry.
Even after that, we still liked some dessert, and had one each. I had a Bolo de Bolocha, a Portuguese biscuit cake with vanilla ice cream and salted caramel, which was possibly a bit too sweet and creamy overall. And my husband had a classic Pastel de Nata, a custard tart. This came served with cinnamon ice cream on the side.
Casa do Franco in Victoria is pretty good, but the service was slower than ideal, and in particular we had to wait a while to order. The food was nice, but the restaurant felt expensive and a little “big box”, lacking something in ambience. So although we like Portuguese food, I’m not sure if we’d return here. However, as there are many other restaurants in this development, we’ll no doubt be back in the area to try another soon.
Shortlink
This article has a short URL available: https://drck.me/casa-do-frango-jkv
Xdebug Update: August 2025
In this monthly update I explain what happened with Xdebug development.
GitHub and Pro/Business supporters will get it earlier, around the first of each month.
In the last month, I spend around 27 hours on Xdebug, with 29 hours funded.
Xdebug 3.4
I spend a fair amount of time trying to triage bug #2359 where Xdebug is interfering with Lazy Objects, which were introduced in PHP 8.4. However, there is no small reproducible case, and I have not managed to reproduce this myself at all.
However, I did manage to get to the bottom of bug #2328. This ended up being reference counting in PHP and resources (such as open file pointers) not being quite compatible. Instead of holding on to these resources when I keep the stack traces when an Exception occurs, I now instead ignore these.
These resource types are being phased out in PHP, as they are the source of many other issues as well. But, file and stream resources have not been ported yet.
I also fixed a bug where sometimes internal PHP objects (such as DateTimeInterval
) would cause a crash when debugging.
I will make a release in early September to get these fixes out.
PHP 8.5
Most of the time this month I spent on making Xdebug PHP 8.5 ready.
Last month I wrote about a patch for PHP that I created to introduce intermediate steps between pipe stages. With this, I discovered a parser issue with PHP's implementation of pipes, and especially when closures were used. Due to the precedence order, something went awry.
This has now been addressed in PHP, and my patch to introduce intermediate steps has also been merged after adjusting it slightly. I have also merged the Xdebug side of this feature into to the master branch.
The rest of the PHP 8.5 work was mostly due to Opcache now always being enabled. This caused some churn in my test cases and CI workflows, where I would load opcache.so
conditionally. With PHP 8.5 this library no longer exists as Opcache is now built-in.
Native Path Mapping
I continued investigating how to implement "skip" for native path mapping, and am planning to get this implemented in early September. It is a fair amount of work, as I need to adjust my data structures and parser rules.
Xdebug Videos
I have created no new videos in the last months.
All Xdebug videos can be watched on my channel.
If you have any suggestions, feel free to reach out to me on Mastodon or via email.
Business Supporter Scheme and Funding
On GitHub sponsors, I am currently 42% 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, no new business supporters signed up.
Besides business support, I also maintain a Patreon page, a profile on GitHub sponsors, as well as an OpenCollective organisation.
If you want to contribute to specific projects, you can find those on the Projects page.
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 mailing list, 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-25aug-jks
Comments
@blog Thanks Derick. (I see Omarchy now installs xdebug along with PHP)
Friday Night Dinner: The Jones Family Kitchen
This restaurant is located in Eccleston Yards, a recently renovated pedestrian-only historic courtyard, not far from Victoria Station. The Jones Family Kitchen is, what might be described as a “steak focused restaurant” but they also have a few other options for those avoiding red meat. As well as a cosy dining area inside, there is a large outside terrace, where on this warm and sunny evening a lot of people were enjoying their meals and drinks.
To start, we enjoyed some cheese polenta balls, which were served with a spicy mayonnaise. These were soft and crispy in all the right ways, and the mayo serving was very generous… so generous that we were able to enjoy it with the chips we had with our main course.
For our mains, we both chose the same cut of meat, a 10 oz sirloin steak, medium rare. I opted for no condiments, but my wife added some béarnaise sauce. On the side, we shared a portion of triple cooked chips, and green beans. The steaks were perfectly cooked, well rested, and slightly charred on the outside, with the fat mostly rendered. The beans were nice and soft, and the chips crispy on the outside. Some of those chips got dipped in the spicy mayonnaise mentioned earlier. We also enjoyed a bottle of Rioja, which accompanied our steaks nicely.
Afterwards, we fancied a little dessert. I had a scoop of apple sorbet, and my wife picked a rhubarb ice cream that tasted remarkably like peach ice cream—still tasty though.
It's a bit on the pricier side if you go for steak, but the food was of excellent quality, and the service attentive. There are several other interesting looking restaurants around the same courtyard, so we might be back for those too.
Shortlink
This article has a short URL available: https://drck.me/jones-kitchen-jkl
Mapping Munchies
My wife and I run a blog where we review the restaurants we go to when we go out for dinner on Friday evenings.
And on this website you can look at all the reviews, but it is a bit difficult to see as to where the restaurants are.
So I decided that I wanted to add a map to our website.
We have already recorded the addresses for this, but not quite yet the coordinates.
So in order to show a map we needed to convert the addresses to coordinates, and there are several ways of doing so.
You can roll something yourself with a Nominatim, which is part of the OpenStreetMap project. But I decided to try a different service, called OpenCageData, which provides a geocoding service. I didn't want to maintain a geocoder myself.
After signing up and creating API keys, I used their PHP library (handily recommended during the on boarding process) to convert all my addresses to latitude/longitude pairs. This required a bit of fiddling, as it was fairly picky about what it would accept. Although we mostly go to places in London, it really didn't like geocoding places with "The Netherlands" as address, and instead insisted on my using "Netherlands". I updated the source material to cope with this.
With the finicky bits out of the way, I changed my blog's software to add a coordinate pair whenever it sees a new entry and address. But to start, I had to go through all of the reviews of restaurants that we already had, and pass their addresses through the geocoder:
<?php $geocoder = new \OpenCage\Geocoder\Geocoder($OpenCageKey); $location = "{$entry['title']}, {$entry['location']}"; $geocoded = $geocoder->geocode( $location ); if ( count( $geocoded['results'] ) > 1 ) { foreach ( $geocoded['results'] as $result ) { if ( $result['components']['_category'] === 'commerce' ) { $finalResult = $result; } } }
Of course, for that to work, you need to have the $OpenCageKey
set to your API key.
The geocoder then gives me a coordinate pair in latitude and longitude. Often there are multiple results. Although each result has a confidence level attached to it, the result for just the postcode is higher than the actual accurate point of interest for the restaurant, even though I also pass in its name as part of the $location
.
Because of this, is have to loop over the results and pick the right one (with lower confidence level), if an actual commerce
place, indicating a restaurant, was found.
I store these pairs in the database, and then I can use them for generating a map with all the restaurants that we have reviewed.
After I had created these coordinate pairs, upon a page load, my blog software creates a big GeoJSON file with all the features. I embed this into my rendered web page to prevent extra round-trips to the server. I wouldn't suggest to do this if the data updates frequently, or if you have a lot of locations to display.
An example of the generated code looks like, after formatting it for easy viewing:
var geojsonFeatures = [ { "type":"Feature", "properties": { "name": "Spicy Grill", "rating": "4", "popupContent": "<h3><a href=\"\/spicy-grill-jkb\">Spicy Grill<\/a> <small style=\"font-weight: normal\">(Rating: 4)<\/small><\/h3>" "<p>122 Golders Green Road, London NW11 8HB<\/p>" "<small>Starters: \u00a33.00-\u00a37.50<br\/>Mains: \u00a39.50-\u00a313.50<\/small>" }, "geometry": { "type": "Point", "coordinates": [-0.2007587,51.5739245] } }, … ];
I then use a JavaScript library called Leaflet, a library that I've used many times for many of my other side projects to render these restaurants on the map. The code for this is fairly simple too.
The id="map"
div is where Leaflet renders the map, which you create in JavaScript with:
<div id="map" style="height: 500px; align: center;"></div>
I then configure the OpenStreetMap map layer URL, attribution, and some configuration options for Leaflet:
<script type="text/javascript"> var map = new L.Map('map', {zoomControl: false}); var osmUrl = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', osmAttribution = 'Map data © 2025 <a href="https://openstreetmap.org">OpenStreetMap</a> contributors', osm = new L.TileLayer(osmUrl, {maxZoom: 18, attribution: osmAttribution});
I also created a specific icon instead of relying on the standard marker for points:
var forks = L.icon({ iconUrl: '/images/meal.svg', iconSize: [ 24, 24 ], });
And include the GeoJson blog from earlier:
var geojsonFeatures = …
And bind the GeoJSON data layer to the map, with the data (geojsonFeatures
), a conversion layer (pointToLayer
) to add the markers, set the title with the feature's properties.name
, add a pop-up for each feature (onEachFeature
), and then add the layer to the map with addTo(map)
:
L.geoJSON( geojsonFeatures, { pointToLayer: function(feature, latlng) { return L.marker(latlng, { icon: forks, riseOnHover: true, title: feature.properties.name }); }, onEachFeature: function(feature, layer) { layer.bindPopup(feature.properties.popupContent) } }).addTo(map);
I then center the map to a strategic location in London, and add the osm
layer to the map
with addLayer
:
map.setView(new L.LatLng(51.513, -0.177), 13).addLayer(osm); </script>
Finally I add the map to the div element map
by instantiating L.Map
, and prevent zoom controls from showing:
var map = new L.Map('map', {zoomControl: false});
To see the full code, you can do "view source" on the page that shows our mapped restaurants.
When you click on an icon, you get a pop up with the title and a link to the review, with some useful information such as our rating, the address, and a cost indication:

This actually didn't take me a lot of time to do, but mostly because I'm always relatively familiar with Leaflet.
I enjoyed working on this project to add a map to the website.
And when I now look at it, I can see all the lovely places, and sometimes less lovely places where we had our Friday night dinners. If you zoom out far enough, you can also see the far away places we enjoyed our meals at. Let us know if you make it to one of them!
Shortlink
This article has a short URL available: https://drck.me/fndmap-jki
Likes
Comments
@blog It seems it's better to read this article on Geocoding with @opencage and putting our @fridaynightdinners reviews, on my normal website, instead of on Mastodon. I need to fix my script to escape the HTML chars in the code examples!
Friday Night Dinner: Spicy Grill
We don't usually venture out to this part of North London, but on this warm Friday evening we found ourselves at Spicy Grill, a Korean BBQ restaurant in Golders Green. There is a large Jewish presence in this area, which meant that about half the restaurants were closed, due to it being a Friday evening.
The restaurant itself is an open space with a scattering of smaller tables along the walls, and a larger table for groups in the middle. Each table has its own grill.
The menu is extensive, with salads, appetizers, tempura, different meats for barbecuing, and even seafood. You can grill it yourself, or the kitchen can do it for you.
We settled for some pumpkin croquettes and seaweed rolls to start. The croquettes had a crumbly coating, and were slightly spiced. The seaweed rolls were crunchy on the outside and filled with glass noodles. There were served with a sweet and sour dip, that worked well with it.
For our mains, we ordered Bulgogi marinated beef and pork belly. We opted to have the grill on, and cook these ourselves. The pieces of meat were sliced thinly which meant for a quick cooking time. With this, we had some steamed rice and a selection of sauces. We thought that this would not be enough for the two of us, so we also picked a fried tofu salad. This wasn't really needed though, but still enjoyable to have some freshness. The tofu was prepared to actually have some flavour. With our mains, we also enjoyed a bottle of Cass, a Korean lager.
It was a good spot, although a little far away. We were the only two non-Korean-looking people in the restaurant, which probably says something about its authenticity. If you're in the area, then Spicy Grill will provide a solid meal at a reasonable price. When walking to catch the bus home, we noticed another Korean barbecue restaurant, which may get a visit on another day.
Shortlink
This article has a short URL available: https://drck.me/spicy-grill-jkb
Friday Night Dinner: Cottons
It's summer, which means trying out some food from a tropical place makes perfect sense. Cottons is situated next to Vauxhall Bridge alongside the Thames. There is a big outdoor space, where in the sunshine, cocktails, and music would be a ball, but this is a British summer, so it was a bit nippy, and a risk of rain! Instead, we sat inside the spacious establishment. While looking over the menu, we figured out it was happy hour, which meant two-for-one cocktails. That meant two of the same for the price of one, not two different cocktails for the price of one. And that is how we ended up with two cocktails each: An Exotica Sour, and a Rum Punch. Both delicious, and vaguely deadly.
We started of with a starter each. My wife choose the salted cod fritters, and I had the jerk chicken spring rolls. The spring rolls were served with some salad and a sweet chilli sauce. They almost had an Asian flavour to it. The salted cod fritters were served with a spicy tomato sauce.
Mains wise, my wife picked the curried mutton, served with rice'n'peas. The flavour had a good depth to it, and although it was a little spicy, it wasn't overpowering. The meat was soft and tender. As my main, I selected the pork ribs and fried chicken combo. The ribs came in a fairly spicy sauce, which worked well. The red and green chillies that were sprinkled over them, did not add much heat. The fried jerk chicken was a little too salty to my liking, but the sauce that was coating the ribs fixed that soon. Some fried plantains and rice'n'peas completed the meal. The sweetness of the plantains helped with balancing the heat.
We were quite full after this, and decided against pudding while finishing the last of our (second) cocktail.
The restaurant has a good atmosphere, the service was speedy and attentive, and the food delicious and affordable. It's a great spot near the river, and if the sun comes out there will be a Caribbean atmosphere too.
Shortlink
This article has a short URL available: https://drck.me/cottons-jk1
Friday Night Dinner: The Chalk
We have been to this location before, which is just off the Kings’ Road in Chelsea, when it was still called the Butcher's Tap and Grill. But Tom Kerridge, the proprietor decided to go in a slightly different direction. He renamed the pub "The Chalk", with an updated concept. Where the original concept was mostly pub fare with (big) cuts of meat to grill, it is now a more traditional gastropub with more refined dishes, and less of a focus on steaks and similar cuts of meat. Overall, we thought it has shifted a little more upmarket (not surprising given the location), and that perhaps Tom is trying to emulate of the success of The Coach in Marlow, with its one Michelin star.
The restaurant wasn't quite full when we, arrived and were seated in a cosy booth in the downstairs area. We were fairly peckish, so opted for some starters to get going. My wife had the 'nduja and smoked mozzarella sausage roll, which had a good kick to it. I picked the cheese and onion scone, which came with a very generous serving of mustard and herb butter. With our starters we enjoyed a half of the Rebellion IPA — sadly they had run out of their other two cask beers, although that does offer an excuse to pop back another time.
As my main, I chose the rolled shoulder of lamb, with was served with charred onion wedges, ratatouille, and a crispy parcel. The flavours all worked well together. My wife enjoyed the butter roasted ray wing, which came with pickled cockles, diced cucumber, and an anchovy and garlic dressing. As the wines are fairly pricy, instead of a bottle to share, we just had a glass of wine each to match our dishes.
We could have left it there, but felt the need to have some pudding as well. For that, we shared a Chelsea bun sitting in a bath of spiced custard with dried raisins or currants in, in.
It's still a good spot, but we were not in total agreement whether it had improved since it was the Butcher's Tap and Grill. We might give it a go in another year or so.
Shortlink
This article has a short URL available: https://drck.me/the-chalk-jjr
Friday Night Dinner: Market Halls
Market Halls is situated not far from Oxford Circus, on the former location of BHS. It occupies the first floor of the building, and boasts a selection of small, street food pop-up type kitchens, although some of them look fairly permanent. They operate a few sites around London, but the one on Oxford Street is the only one that takes bookings for two (or more) people.
The idea is that you pick a table, and then figure out what you want to eat from all the available vendors. You can order drinks at the bar, or through a QR code at the table. The beer choices were lacking, but there was a reasonable selection of wine and cocktails.
After sitting down, we had a look at the menus, and made a plan, which we then didn't quite follow once we started ordering. As it's not really a restaurant, that also was not important.
We started with a set of MOMO dumplings, from "Himalayan dumplings". They were juicy and filled with chicken. A slightly spicy dressing completed the dish. This pop-up also had a special on, which formed our second starter: crunchy pieces of puffed rice filled with potato, and served with tomatoes, cucumbers, and raw onion. The cucumber and tomato provided a cooling counterpoint to the spice in the rest of the dish.
As my main I enjoyed the Chilli Jam Pork Belly from Krapow!, which was served on rice. The pork was a little crunchy, well seasoned with birdseye chilli, and sprinkled with some salad leaves. My wife ordered the lamb from Salt Shed, another temporary addition to their menu. The slices of perfectly cooked lamb had some sea salt sprinkled over them, and were served with very spicy chillis, pickled radishes, and a slightly garlicky dip.
There are plenty of more pop-up restaurants to try out including a dessert place. If you feel like a good and low-key meal after a hard afternoon (or day!) of shopping, the options at Market Halls will easily satisfy your appetite.
Shortlink
This article has a short URL available: https://drck.me/market-halls-jjh
Xdebug Update: July 2025
In this monthly update I explain what happened with Xdebug development.
GitHub and Pro/Business supporters will get it earlier, around the first of each month.
In the last month, I spend around 14 hours on Xdebug, with 23 hours funded. I went on a holiday!
Xdebug 3.4
In the first half of the month, I finished fixing the complicated issue with fibers and path coverage that I wrote about last month. This resulted in the release of Xdebug 3.4.5. This release also addresses an issue where Xdebug called the code backing a property, resulting in the hooked property's value to change.
PHP 8.5
In the remained of the month, I looked at how best to support PHP 8.5's new pipes. These allow you to chain method calls together. Due to this, there is no intermediate value that you can look at in the debugger.
I have created a patch for PHP which introduces intermediate steps which Xdebug can use with a patch to then visualise the values being send to the next pipe stage.
Right now, this only works for non-closure-wrapped pipeline stages, and more work is necessary to make this work all nicely. There is some time before PHP 8.5 comes out though.
Native Path Mapping
I have started to implement that lines, files, and directories can be mapped as "skip" — i.e., consider there to be just no code at this location, and hence don't initiate a breakpoint then. I ran into trouble here, as the data-structures that I keep to remember mappings can not handle this. It was only possible to skip single lines with this, but not files (or directories) — which is what I was testing it with. Stay tuned!
Xdebug Videos
I have created no new videos in the last months, but I did add some to the Xdebug documentation as related content for function tracing, to demo flamegraphs.
All Xdebug videos can be watched on my channel.
If you have any suggestions, feel free to reach out to me on Mastodon or via email.
Business Supporter Scheme and Funding
On GitHub sponsors, I am currently 42% 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, no new business supporters signed up.
Besides business support, I also maintain a Patreon page, a profile on GitHub sponsors, as well as an OpenCollective organisation.
If you want to contribute to specific projects, you can find those on the Projects page.
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 mailing list, 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-25jul-jjg
Shortlink
This article has a short URL available: https://drck.me/locatelli-jl5