If you need GPIO support on a mini-PC you can just use a cheap FT232H breakout [1] with either PyFTDI [2], which supports pretty much all the protocols you need (UART/GPIO/SPI/I2C), or alternatively use CircuitPython with Blinka [3] which gives you access to the CircuitPython drivers etc.
> FreeBSD has committed the original sin of UNIX by deliberately dropping support for all non-Intel architectures, intending to focus on optimising FreeBSD for the Intel ISA and platforms.
FreeBSD supports amd64 and aarch64 as Tier 1 platforms and a number of others (RiscV, PowerPC, Arm7) as Tier 2
FreeBSD started demoting non-Intel platforms around 2008-2010, with FreeBSD 11 released in 2016 only supporting x86. The first non-Intel architecture support was reinstated in April 2021, with the official release of FreeBSD 13, which is over a decade of the time having been irrevocably lost.
Plainly, FreeBSD has missed the boat – the first AWS Graviton CPU was released in 2018, and it ran Linux. Everything now runs Linux, but it could have been FreeBSD.
It looks like it is a Direct Conversion (Zero IF) rather than a Direct Sampling Receiver [0] - ie. it uses does a quadrature LO to down convert to baseband I/Q (in this case a Taylor QSD as a mixer). The RP2040 ADC bandwidth is only 250KHz.
As a long term FreeBSD user (since 2.0) and advocate, my view is that FreeBSD should focus on its niche as a rock-solid server operating system. For most developers buying a MacBook and SSH-ing into a server is probably the right answer (or running a VM if you really need something local). The level of effort to match the MacBook user experience feels like a lost cause (Linux has been trying to do this for decades with significantly more resources) and it would feel more useful to use this funding to focus on the server side.
I'm so much on the cliff on this, whilst they should focus it's becoming more painful by the year to run stuff on FreeBSD since there is so may Linux:isms in most opensource projects today that it's almost as hard to compile on FreeBSD as it was to compile on Windows 20 years ago.
Only a month or two back I gave up on compiling Samba myself (mostly worked w/o issues in the past just with ./configure && make), relying on package/ports instead.
Modern dotnet versions are finally available (but the compilation instructions looked headache inducing), node.js filesystem watching seems broken/nonexistant (using webpack -w i had to enable some polling mode).
I love FreeBSD but Linux has EEE'd the OSS ecosystem. (Embrace, Extend, Extinguish)
> or running a VM if you really need something local
I agree, we often overlook the fact that virtualization made enormous progress in the last decades on consumer hardware.
So if I want to run FreeBSD on my laptop I might have to boot Linux first (I know...). Simply because few OS can afford the luxury of broad hardware support nowadays.
FreeBSD is still a very competitive OS but it might start lagging is some aspects behind the most innovative Linux distributions such as NixOS.
My wish would be some work on configuration management and automation since it might be a low hanging fruit for such an integrated OS developed by a single entity.
The ability to daily drive an operating system on the machine sitting on your desk helps get contributions that also help it be a better server operating system.
That's really useful (I was trying to work out how to do this without using a custom image) but I would just note that there actually is a FreeBSD 13.1 image available under Images -> Partner Images -> FreeBSD (from the FreeBSD Foundation).
Oracle Cloud have a very generous free-tier for the arm64 boxes and I'm running 2 x arm64 instances (2 CPU / 12GB RAM each) - been really reliable so far though I'm not doing that much on them.
Thank you for pointing that out! I could've sworn it wasn't there when I checked. It seems it was added recently, but only for arm64 [1]. I will add a note to the post about this.
The Colossus tape reader could read at c.5000 cps (with the tape running at 27mph [1]) - which is 2.5 x faster (and 20 years before). Worth seeing the replica Colossus at Bletchley if you get a chance.
Well I just don't understand. I mean you're literally undermining your own point.
The west was incredibly patient with Russia when they annexed Crimea and started a civil war in Ukraine(10 000 dead before this invasion), even as they blew up civilian passenger planes and committed terrorist poison attacks on foreign soil, poisoned their own politicians, built up their police state.
Putin explicitly said he was not going to invade Ukraine.
Why on earth would anyone believe a word out of this mouth after this invasion?
How is negotiating in good faith with such a regime rational?
Intelligent discussion? That was supposed to come BEFORE the invasion, the only thing that matters now is to kick Russians out of Ukraine.
The genie of war is out of the bottle. The Russian people have blood oh their hands.
I am sorry you are going through all of this. It's gut wrenching for me to look at it or even read about it. This is a proxy war between US/Nato and Russia and I will be honestly happy if Russia falls and breaks.
I believe that's true. My feeling is that Putin will not stop if he doesn't get an exit from this war, even though he probaby regrets his decision by now. He miscalculated badly, it was too late for a "special operation", Ukrainians were already armed by US and NATO and more arms are pouring in the country every day. Russian forces are now openly shooting appartment buildings, churches, hospitals and things will get even uglier as he gets more desperate. The Ukrainians are better equipped and have much more resolve so I don't see an end to this conflict. Do you think that Ukrainians will be able to find a compromise before it's too late?
PS. i'm not saying that we should give in to a terrorist that holds the world hostage with his nukes, what i'm saying is that I see the end of civilisation and no way that we can avoid it.
Steven Brust has one of his characters claim that the aggressors are the ones who defend against an attack, since they are the ones stopping an action.
Of course, that only makes sense if you're a sociopath, as his character was.
Simple python version which does a bit more validation (checks response matches query) and also supports CNAMEs and different record types (37 lines - using dnslib library) - though there is still a lot of logic missing (handling failed NSs, IPv6 only NSs, cycles etc)
from dnslib import DNSRecord,DNSError,QTYPE
ROOT_NS='198.41.0.4'
def find_cname(a,qtype,cname):
for r in a.rr:
if QTYPE[r.rtype] == qtype and r.rname == cname:
return str(r.rdata)
elif QTYPE[r.rtype] == 'CNAME' and r.rname == cname:
return find_cname(a,qtype,str(r.rdata))
return resolve(str(r.rdata),qtype,ROOT_NS)
def resolve(name,qtype='A',ns=ROOT_NS):
print(f"dig -r @{ns} {name} {qtype}")
q = DNSRecord.question(name,qtype)
a = DNSRecord.parse(q.send(ns))
if q.header.id != a.header.id:
raise DNSError('Response transaction id does not match query transaction id')
for r in a.rr:
if QTYPE[r.rtype] == qtype and r.rname == name:
return str(r.rdata)
elif QTYPE[r.rtype] == 'CNAME' and r.rname == name:
return find_cname(a,qtype,str(r.rdata))
for r in a.ar:
if QTYPE[r.rtype] == 'A':
return resolve(name,qtype,str(r.rdata))
for r in a.auth:
if QTYPE[r.rtype] == 'NS':
return resolve(name,qtype,resolve(str(r.rdata),'A',ROOT_NS))
raise ValueError("Cant resolve domain")
if __name__ == '__main__':
import sys
def get_arg(i,d):
try: return sys.argv[i]
except IndexError: return d
print(resolve(get_arg(1,"google.com"), get_arg(2,"A"), get_arg(3,ROOT_NS)))
[1] https://www.adafruit.com/product/2264 [2] https://pypi.org/project/pyftdi/ [3] https://learn.adafruit.com/circuitpython-on-any-computer-wit...