F# Weekly #33, 2025 – Rider 2025.2 & .NET 10 Preview 7

Welcome to F# Weekly,

A roundup of F# content from this past week:

News

Nice list of changes in Rider for #fsharp: github.com/JetBrains/re…

Urs Enzler (@ursenzler.bsky.social) 2025-08-14T14:27:46.752Z

Videos

Great #dotnet #fsharp lang review youtu.be/CmML57XX2eg?… 🦔✨💕

jkone27 (@jkone27.bsky.social) 2025-08-12T20:55:07.274Z

Blogs

Highlighted projects

We (GitHub Next) put out a new project today – GitHub Agentic Workflows!This is natural language programming for Continuous AI on GitHub.eg "build the code, run the tests, read the coverage report, write tests", running daily, delivering test improvements in PRsgithubnext.com/projects/age…

Don Syme (@dsyme.bsky.social) 2025-08-15T23:55:33.051Z

New Releases

ReSharper and Rider 2025.2 release party is incoming! 😃 📅 August 20, Wed, 3pm UTC🗣️ Our .NET Advocates and Friends🎁 Lots of new features!🤔 Bring all your questions!#dotnet #devtools #ai #csharp #fsharp #ama

JetBrains Rider (@jetbrains-rider.bsky.social) 2025-08-14T14:35:17.1741716Z

That’s all for now. Have a great week.

If you want to help keep F# Weekly going, click here to jazz me with Coffee!

Buy Me A Coffee

F# Weekly #32, 2025 – Call for Speakers: .NET Conf 2025 & JetBrains .NET Days

Welcome to F# Weekly,

A roundup of F# content from this past week:

News

Got a brilliant .NET project? A gnarly bug you squashed?.NET Conf 2025 Call for Content is OPEN! Share your stories and help celebrate the launch of .NET 10. Deadline: August 31st.Submit: hubs.li/Q03BrLNN0#dotnetconf #dotnethubs.li/Q03BrMgm0 via @csharpfritz.com

.NET Foundation (@dotnetfoundation.org) 2025-08-08T22:59:27.907Z

Videos

Let it be #fsharp really cool old vid but still quite interesting 💕 youtu.be/24yLOYMPKEM?…

jkone27 (@jkone27.bsky.social) 2025-08-04T18:46:28.461Z

Blogs

In case you missed it, JetBrains .NET Days Online is back on October 8-9 2025! And there's not long left for the call for papers! ⏰If you've got something you want to share with the dotnet community, we'd love to hear from you. You have until Friday to send us a proposal! 🚀jb.gg/dotnetdays20…

JetBrains Rider (@jetbrains-rider.bsky.social) 2025-08-06T14:54:48.090Z

Highlighted projects

New Releases

Believe it or not: one of the few (only?) hardware projects driven by #fsharp (yes – and #typescript) is a – guess – a FUN project! Yes 😉 #pxlclock will bring beautiful colors into your rooms, and joy of programming your own ideas. Search pxlclock – buy one of only 💯 🙏🙏🙏🙏

SchlenkR (@schlenkr.bsky.social) 2025-08-09T16:07:00.455Z

That’s all for now. Have a great week.

If you want to help keep F# Weekly going, click here to jazz me with Coffee!

Buy Me A Coffee

F# Weekly #31, 2025 – Aspire 9.4

Welcome to F# Weekly,

A roundup of F# content from this past week:

News

Videos

Blogs

🔬 #fsharp #mlir #llvm #wasm #embeddedsystems #webassembly #wasmspeakez.tech/blog/the-con…

SpeakEZ.tech (@speakeztech.bsky.social) 2025-07-29T14:21:08.508Z

Highlighted projects

New Releases

We're introducing free Community editions of all our Accelerate tooling. Visual Studio Extension, Dev Tools, App Packaging, Visual Designer. Every Avalonia user will get access to our best tooling at no cost! github.com/AvaloniaUI/…

Avalonia UI (@avaloniaui.net) 2025-08-02T04:43:52.665074Z

That’s all for now. Have a great week.

If you want to help keep F# Weekly going, click here to jazz me with Coffee!

Buy Me A Coffee

F# Weekly #30, 2025 – Quipu & Perla

Welcome to F# Weekly,

A roundup of F# content from this past week:

News

The perla docs website is now up! The "Real World" Fable sample has been updated to the latest perla preview, links in the following tweets!#dotnet #fsharp

Angel Munoz (@tunaxor.me) 2025-07-25T17:32:10.318Z

Videos

Blogs

Shout out to all #fsharp / #dotnet / #typescript devs 🙂 Soon we'll release the first 100 units of our #pxlclock, and you can help us AND be a part of it. How? By programming a PXL-App 🙂 Visit github.com/CuminAndPota… and start coding right away 👍 🙏 CC @sergeytihon.com

SchlenkR (@schlenkr.bsky.social) 2025-07-20T09:17:51.219Z

Highlighted projects

New Releases

Sample of using GitHub Actions to cross-compile F# project using Native AOT. #fsharpgithub.com/Krzysztof-Ci…

Krzysztof Cieslak (@kcieslak.io) 2025-07-21T11:36:29.393Z

That’s all for now. Have a great week.

If you want to help keep F# Weekly going, click here to jazz me with Coffee!

Buy Me A Coffee

F# Weekly #29, 2025 – .NET 10 Preview 6

Welcome to F# Weekly,

A roundup of F# content from this past week:

News

.NET 10 Preview 6 is now available!ift.tt/2cnZT8v #dotnet #csharp #dotnet10 #aspnetcore #dotnetmaui #blazor #fsharp #vb

Alvin Ashcraft (@alvinashcraft.com) 2025-07-16T16:02:13.258Z

Videos

@cmuratori.bsky.social‬ gives a compelling analysis of OOP. I wrote production code from the late 80s, using C, which was perfect timing, since OOP has only ever been a thought experiment to me. I like ADTs and DUs, and my new C is #fsharp, which does ADTs better than C.youtu.be/wo84LFzx5nI

dr g (@mccaskill.bsky.social) 2025-07-17T19:53:26.104Z

Highlighted projects

New Releases

Experience Quality Coding for AI- Special Edition and Your Next Generation AI could Copyken-okabe.github.io/en/book/A Next-Generation Tutorial on Functional Programming for the AI Age#fsharp #ai #functional-programming

Ken Okabe (@kentechgeek.bsky.social) 2025-07-15T14:28:43.668Z

That’s all for now. Have a great week.

If you want to help keep F# Weekly going, click here to jazz me with Coffee!

Buy Me A Coffee

F# Weekly #28, 2025 – Beyond Zero-Allocation

Welcome to F# Weekly,

A roundup of F# content from this past week:

News

Videos

Blogs

🤔 "Why are you so focused on low-level memory operations in a functional language?" Here's the thing: We're not abandoning high-level abstractions. We're making them work everywhere 🎯 The path is more direct than you might think 👇speakez.tech/blog/beyond-…#FunctionalProgramming #FSharp

SpeakEZ.ai (@speakezai.bsky.social) 2025-07-11T19:58:09.044Z

Highlighted projects

New Releases

Have a recap of Isaac's showcase of rapid data analysis with F#. Although quite a dated video, it still holds true to F#'s power in being able to prototype quickly to get the result you're after… but most importantly, in a fun way! @fsharp.bsky.online #fsharp

Compositional IT (@compositional-it.com) 2025-07-09T09:45:20.646Z

That’s all for now. Have a great week.

If you want to help keep F# Weekly going, click here to jazz me with Coffee!

Buy Me A Coffee

F# Weekly #27, 2025 – Breaking changes: Yay or Nay?

Welcome to F# Weekly,

A roundup of F# content from this past week:

News

What are your thoughts on slight breaking changes in an upcoming release? #fsharp #fsharpplus github.com/fsprojects/F…

Oskar Gewalli (@wallymathieu.bsky.social) 2025-07-02T06:19:53.552Z

Videos

Blogs

Highlighted projects

New Releases

Having some #fsharp fun building Alloy's shadow API! 🎭 These look like System/Core calls but they're statically resolved to our dependency-free implementations. Same familiar F# idioms, zero BCL dependencies. It's like BCL cosplay for native compilation! 🚀 #dotnet

SpeakEZ.ai (@speakezai.bsky.social) 2025-07-03T20:44:11.991Z

That’s all for now. Have a great week.

If you want to help keep F# Weekly going, click here to jazz me with Coffee!

Buy Me A Coffee

F# Weekly #26, 2025 – Sprout: BDD Testing for F#

Welcome to F# Weekly,

A roundup of F# content from this past week:

News

Videos

Blogs

🧬 Gene samples nearly melted because someone mixed °F and °C. 🫠 With #AI proliferating, every system is now safety-critical. F# units of measure catch these potential errors at compile time with ZERO runtime cost. New #fsharp #mlir #llvm #systemsprogramming #aisafety blog: speakez.ai/blog/danger-…

SpeakEZ.ai (@speakezai.bsky.social) 2025-06-24T15:56:10.696Z

Highlighted projects

New Releases

#fsharp rocks! Here's a new entry into an already crowded arena of F# testing frameworks.This one is called Sprout and it is a DSL for writing BDD-style tests in F#.It is inspired by Jasmine and uses computation expressions with few, composable, abstractions.github.com/dlidstrom/Sp…

(@dlidstrom.bsky.social) 2025-06-23T10:09:56.077Z

That’s all for now. Have a great week.

If you want to help keep F# Weekly going, click here to jazz me with Coffee!

Buy Me A Coffee

Pi-hole DNS on UGOS PRO 1.6.0.2917

If you are reading this, you have most likely already updated to UGOS PRO 1.6.0.2917 and your Pi-hole Docker container failed with the error

failfull start project ‘pi-hole’ err: Container pihole StartingError response from daemon: driver failed programming external connectivity on endpoint pihole (…): Error starting userland proxy: listen tcp4 0.0.0.0:53: bind: address already in use

if you connect to your NAS over SSH and execute

ssh [email protected]
sudo lsof -i :53

you will see that this update comes with this built-in DNS server dnsmasq that already occupies port :53

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 
dnsmasq 1573 dnsmasq 4u IPv4 1961 0t0 UDP localhost:domain 
dnsmasq 1573 dnsmasq 5u IPv4 1962 0t0 TCP localhost:domain (LISTEN)

This DNS server is probably needed for a new feature that promises container apps access over UGREENlink: Added UGREENlink support for remote access to some container apps (firmware and client update required).

So what to do? Let’s find out how dnsmasq is configured.

ps aux | grep dnsmasq
dnsmasq   347028  0.0  0.0  41368  3008 ?        S    20:52   0:00 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /usr/ugreen/etc/dnsmasq/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --conf-file=/usr/ugreen/etc/dnsmasq/dnsmasq.conf --local-service --trust-anchor=.,20326,8,2,e06d44b80b8f1d39a95c0b0d7c65d08458e880409bbc683457104237c7f8ec8d

it shows that –conf-file is located at /usr/ugreen/etc/dnsmasq/dnsmasq.conf, let’s take a look what is inside

sudo nano /usr/ugreen/etc/dnsmasq/dnsmasq.conf

here is default content of this files

# 启用本地 DNS 缓存
cache-size=1000

#DNS记录生存时间(平衡实时性与性能)
local-ttl=600        # 默认缓存10分钟(上游未指定 TTL 时)
#max-cache-ttl=3600  # 强制所有记录最多缓存 1 小时

# 监听本地接口,不监听虚拟网络接口,避免冲突
listen-address=127.0.0.1,::1
bind-interfaces

# 使用指定上游 DNS
resolv-file=/usr/ugreen/etc/dnsmasq/dnsmasq-resolv.conf

# 安全性(可选)
#domain-needed(严格完全限定域名,不能是裸主机名)
#bogus-priv(上游 DNS 返回了私有 IP 地址,dnsmasq 会拒绝返回结果给客户端)

# 日志输出(调试用,可关闭)
#log-queries
# 仅记录错误
log-facility=/var/log/dnsmasq.log

According to this configuration, this DNS server listens only to local traffic and does not reply to requests from LAN IPs

listen-address=127.0.0.1,::1

t resolves DNS using the nameserver (8.8.8.8) specified in the resolv-file

resolv-file=/usr/ugreen/etc/dnsmasq/dnsmasq-resolv.conf

Workaround 1

Just stop dnsmasq if you do not plan to use UGREENlink remote access to container apps. This solutions is not recommended, especially if you use Virtual Machines functionality (see explanation from UGREEN Technical Support).

sudo systemctl stop dnsmasq
sudo systemctl disable dnsmasq

Workaround 2

Configure dnsmasq to use pi-hole for DNS resolution.

1. Expose Pi-hole on another port (for example :5553)

ports:
   - "5553:53/tcp"
   - "5553:53/udp"

2. Allow request from LAN IPs

listen-address=127.0.0.1,::1,192.168.68.53

3. Forward DNS requests to Pi-hole

#resolv-file=/usr/ugreen/etc/dnsmasq/dnsmasq-resolv.conf
no-resolv
server=192.168.68.53#5553

4. Replace 192.168.68.53 by you NAS IP address

5. Final configuration

# 启用本地 DNS 缓存
cache-size=1000

#DNS记录生存时间(平衡实时性与性能)
local-ttl=600        # 默认缓存10分钟(上游未指定 TTL 时)
#max-cache-ttl=3600  # 强制所有记录最多缓存 1 小时

# 监听本地接口,不监听虚拟网络接口,避免冲突
listen-address=127.0.0.1,::1,192.168.68.53
bind-interfaces

# 使用指定上游 DNS
#resolv-file=/usr/ugreen/etc/dnsmasq/dnsmasq-resolv.conf
no-resolv
server=192.168.68.53#5553

# 安全性(可选)
#domain-needed(严格完全限定域名,不能是裸主机名)
#bogus-priv(上游 DNS 返回了私有 IP 地址,dnsmasq 会拒绝返回结果给客户端)

# 日志输出(调试用,可关闭)
#log-queries
# 仅记录错误
log-facility=/var/log/dnsmasq.log

6. Test that DNS resolution works (from another machine)

dig 192.168.68.53 google.com

With this approach, you will lose benefits to pi-hole’s network overview feature. You will see that all traffic comes from the first DNS server (dnsmasq), and your devices will not be distinguishable.

Workaround 3

Use Macvlan network driver and ask docker to assign new IP for Pi-hole container (thanks to JCS and Krishna from Discord)

networks:
  macvlan_net:
    driver: macvlan
    driver_opts:
      parent: eth0 # Or your physical network interface
    ipam:
      config:
        - subnet: 192.168.1.0/24 # Replace with your desired subnet
          gateway: 192.168.1.1 # Replace with your gateway

services:
  pihole:
    image: pihole/pihole:latest
    networks:
      - macvlan_net
    ...

Technical Support

Update 2025-07-02: Here is what I got as a reply to my support ticker.

UGOS PRO system port 53 is occupied by the following service:
1. dnsmasq within the virtual machine environment
2. Host system's dnsmasq

If you want to disable dnsmasq, consider executing the following operations in the background:

1. Clean up virtual machine network configuration:

virsh net-destroy vnet-host
virsh net-destroy vnet-nat0
virsh net-destroy vnet-nat1
virsh net-destroy vnet-nat2


2. Then disable the Virtual Machine service in App Center, execute it on demand, and if you are not using a Virtual Machine, you don't need to execute it.

3. Stop the host machine's dnsmasq service.

systemctl stop dnsmasq


It needs to be made clear that:

1. Is deploying a Pi-hole container for DNS service filtering ads? If so, it will conflict with the NAS's own DNS service.

2. If you need to stop the dnsmasq service in the background, please be aware that it may affect virtual machine functionality.