Oh right, the debate...
I think I'm gonna step away from my feed for a bit. I just don't have the mental bandwidth to deal with it atm.
screwlisp likes this.
It's actually annoying in ghci because the warning gets repeated every time you define something.
--pedantic
flag though (which turns warnings into errors).Jeremy List likes this.
🤔🤔🤔🤔
About a year ago, my wife took a road trip to Seattle. I signed up for WA state's "GoodToGo" app to pay for toll usage. I get a monthly statement now about our $0 balance as we don't frequent WA.
I just logged in. And Google alerted me that the password I used had recently been found in a data breach.
🤔🤔🤔🤔
It's a unique, 32-character random password stored in #1Password. I don't use it anywhere else...
Anyone want to tell the state of WA their toll payment system has been breached?
Jonathan Lamothe likes this.
reshared this
User-agent: *<br>Disallow: /<br>
threads.net/robots.txt
Jonathan Lamothe likes this.
reshared this
ive said it before and I'll say it again
we call it AdBlocking because that's what most people use it for
but it's really just a way to control what elements do and do not display on all websites or some
screen reader users often need to block some elements that are NOT ads to make a site functional (although often ads as well)
Banning ad blockers is not just a privacy concern or a quality of life concern or an Internet safety from malicious ads concern.
It's an accessibility concern
Jonathan Lamothe likes this.
reshared this
Finally, USB-C is the standard everything uses.
my 10-year-old Kindle: But you still have a bunch of USB micro-B cables.
my bike light: And hang onto any USB mini-B cables.
the printer that still uses USB-B:
Hey guys!
Jonathan Lamothe likes this.
reshared this
I have recently bought a bunch of different USBC to usb b (regular, mini and micro) with varying success.
I still have my cables, I I'm hoping to find the adapters that work flawlessly so I can put that one box in long term storage. I will never actually throw them out, I have learned that lesson. Never throw out unused cables. its a trap.
Entitled weirdo behaviour
Jonathan Lamothe likes this.
Jonathan Lamothe reshared this.
You've got plenty of ways to mute, block, and filter your timeline to curate it for yourself. Trying to change the behaviour of other people to suit your tastes or inject your personal beefs is overstepping
Jonathan Lamothe likes this.
Jonathan Lamothe reshared this.
~ Let's make RAM at home, thread #2 ~
In this part:
* Power [source] struggles,
* B-H curve plotting [attempts],
* How [not] to make a magnetic core for memory
* Working "made at home, no rare components needed" DIY magnetic core memory element
🧵
Jonathan Lamothe likes this.
Jonathan Lamothe reshared this.
Recap of the previous episode:
* We are trying to make a DIY computer random access memory. It doesn't have to be awesome, but it has to work and it has to be somewhat "made at home".
* It is quite possible to use DIY valves and capacitors to store bits, but it is expensive and potentially dangerous.
* So we're exploring obsolete memory technologies to see if there is anything cool we've lost/forgotten!
* One such type of memory, magnetic core memory, used to be the dominant type of RAM in computers until 70s.
* The idea is simple: the data is stored as magnetic field in the magnetic materials (such as ferrites). A magnetic ring can be magnetized in two directions at will, and a "sense" wire can read the direction of the magnetization.
* We made a simple circuit for driving 1 bit of commercially manufactured core memory.
* We tried to make our own cores from different materials but failed.
Phew... But that was in the previous thread, and this time we had better luck!
You probably will agree that it is quite hard to improve on the materials when the experimental setup does not allow to test for the properties of said materials 😀
The properties of the DIY cores we want to evaluate are "retentivity" and "coercivity" of a magnetic material. We want material to be "retentive" (B) - storing magnetism after external field is gone, yet we want the material to be "coercive" (H) - changing its magnetic field after being affected by an external magnetic field.
The test setup for this is called "B-H curve plotter" or "B-H core prober". To plot a B-H curve (and learn the properties of our material), we generally need to:
1) Apply known alternating current to the first winding around the core,
2) Measure voltage on the second winding around the core,
3) Integrate the voltage over time and plot it as X-Y chart
And you know what, we're about to hit a major roadblock right with the step one!
In the last thread I have mentioned that commercially available cores of the late 70s require currents of around 0.5A to switch their magnetization. That does not sound like a lot (1.5V AA battery can sustain this current for 2-3 hours).
But DIY cores are bigger, and they require bigger currents. Ideally, something like 2-3 Amps to get us started. On top of that, low voltages are not very convenient to work with, so we want 5V or even 12V.
12V at 3A means that we are going to dissipate 36 Watts in peak - comparable to a small LED TV, guitar amp or an inkjet printer - over a relatively small load and relatively thin wires.
And oh did I mention it must be alternating current for B-H tests? That means we cannot use our regular lab power source. Most signal generators don't expect currents over ~100mA. Using regular 220V AC from the plug sounds risky. What do we do? What _can_ we do?
We had a step-down transformer lying around, scavenged from one thing or another. It had 5:1 transformation ratio, so we figured if we use the maximum voltage from the signal generator - 20V in amplitude, from -10V to +10V - we will get somewhat decent -2V to +2V signal from the transformer, and with the same power consumed we should get ~five times more current.
The left winding of the core connected to the signal source, and we're measuring current by measuring voltage on a known resistor - that's X axis.The right winding is connected to RC-integrator, which is what we measure for Y axis.
There is a formula for calculating the parameters of the RC integrator (clever, using passive components to do maths, because our oscilloscope cannot do maths). The only capacitor with the desired properties we had was super tiny, it was quite a challenge to solder.
We started the test bench in oscilloscope 2 channel mode, and we could clearly see "spikes" up and down in the output winding of the commercially made core that correlated with the waves of the test signal. That means running the AC current through the magnetic core keeps re-magnetizing it in a loop, and we can see it!
Switching the oscilloscope in the X-Y mode, we were hoping to see pretty B-H curve, just like on the Wikipedia page, but the voltage and the current we have are way to low and so the changes are barely registered by our scope.
It seems we cannot avoid investing in the test equipment, after all! Buying a ready-made device would cost us £200 or more, so we will try to build one ourselves.
(When I say "we" it means "my fiancee and me", by the way!)
Power struggles are not exclusive for AC currents. To control my tiny magnetically programmable and erasable memories, I need a source of current that:
1) Can be adjusted in the range of 0.5-2 amps,
2) Can be turned on for a very short time (it takes the core 1-2 microseconds to fully switch) to reduce average power consumption,
3) Turns on really fast (hundred nanoseconds ideally) so the changes in the voltage caused by the core could be measured reliably.
Last time I used a current source from a 2N2222 transistor that I controlled with Arduino. This transistor can barely stomach 0.5A, and indeed I destroyed two of these by over-current.
This time, as a current source, I wanted to try a salvaged Traco Power source that has a "switch on/off" control pin. As you can see, voltage rises to half the target really fast, but then climbs up to the target voltage for ~50 milliseconds! With this voltage curve, even the commercially manufactured core displays zero "memory" characteristics.
The AC power source/H-B core prober is in the process of making, but I still wanted to experiment with the cores I have made, as well as with some new designs. For now, I am using an analogue power source, and try to filter out the contact bounce with capacitors. The current from the source goes straight through the core, and the oscilloscope is connected to the second ("sense") winding. It is wonky, but it works as a test bench.
The steel-ferrite winding core I've made last time clearly has wrong qualities. But from what I have seen in reference books and papers, nickel core should possess the desired properties.
"Pure nickel" (as per seller description) I have used last time turned out to be "nickel silver", or 60% copper, 20% nickel and 20% zinc. This time I am moderately confident I have a strip of nickel. I need to make sure that the "core" - the ring - has no air gaps in the ring, otherwise it won't work.
It seems the simplest way to do this is drilling. I cut the ring to the shape with scissors.
The core? Doesn't work as a memory element, but works as a poor transformer.
This is a good sign. I could add the current, or I could add more turns of wire around the core, and it should improve the magnetic field we generate.
We prepare two test rings - one drilled, and one cold-hammered. I wind two windings of 10 turns each on them, using 0.38mm copper wire for transformers (should be enough for 0.5A).
😢 😢 😢
The windings are shorted. Edges of nickel are too sharp, they scratch the insulation around the copper wires during the winding.
I pack nickel rings in epoxy, and drill the holes in the epoxy. Epoxy is brittle, parts of it fall off immediately. I try to re-wind the cores, but the windings are shorted AGAIN.
😢 😢 😢 😢 😢
As a last ditch effort, I decide to make a BIGGER nickel ring and SHRINKWRAP IT.
In the hindsight, using some sort of kapton tape probably would have worked better. Having bigger nickel sheets would allow for drilling bigger air gap free ring, too.
But I use what I have. I twist the shrink wrap, and wind 15 turns, two wires.
No shorts, yatta!
It is not surprising that this magnetic core memory element works. Nickel should have coercivity comparable to ferrite magnets. It has been used as a test medium for original twistor magnetic memory.
But it is also surprising that such a makeshift memory element actually does the job. You can see the difference between "unchanged" magnetic field reads and "changed" magnetic field reads - the voltage changes much slower. With proper filtering and amplifying, it can be reliably used as a memory element.
Switching time is close to 50 microseconds - which is a hundred times worse than commercially made core and its 500 nanoseconds.
But 50 microseconds means we theoretically could switch this core up to 20,000 times per second. Running this (or a similar-made core) at 10 kHz doesn't sound impossible.
This is twice as fast as ENIAC, and about ten times as fast as Mark 1.
</thread>
The experiment isn't over yet! Harder, better, faster, stronger!
🇺🇦 haxadecimal reshared this.
Anyhow, I initially thought I wanted high inductance factor cores, but by trying eight cores of the same size but with different ferrite materials and inductance factors, it turned out that low inductance works much better for this
@Nina Kalinina On top of this, that's 500mA per bit. If you want to update a whole octet at once, that's 4A, no?
I mean, I don't think you can typically read/write multiple bits in a ferrite core system simultaneously, but you could do this by interleaving the bits across multiple smaller banks.
Nina Kalinina likes this.
Though this only explains how some types of RAM work, like MRAM. If you want a DRAM experiment, you can make a test bench with a transistor and capacitor, and for SRAM you need to build a tiny transistor latch. Could be very interesting to compare how all those perform, even on the macro level: DRAM will be fast and low energy, but will require a refresh; SRAM will be expensive because two transistors; MRAM will be slow by comparison but non-volatile.
@d_prieto I'll be happy to see the photos if you'll make any!
Another thing to try is to find something like a 74xx logic in metal body, carefully decap it, and examine it under a magnifying glass - while it's used in a simple circuit to implement an RS trigger. The chip will need to be protected from the light during the operation.
Mom can we buy some new RAM at microcenter?
No, we have RAM at home.
The RAM at home:
Jonathan Lamothe likes this.
calling them “rubber bullets” or “foam projectiles” is incredibly misleading
they should be considered “rubber coated” at best
the core is still a slug of metal, so all the coating does is reduce the penetrative capability
the trauma inflicted is still arm-, rib- or skull-fracturingly massive
imagine being beaten half to death with a rubber-coated hammer. do you care that it was rubber coated?
Jonathan Lamothe likes this.
reshared this
Trying to wrap my brain around finite fields. I get how one can construct a finite field with an order of a prime number, but I don't get how it works with powers of primes. Everything I try to read on the subject eventually ends up getting into notation that I don't know how to read.
I think I get that a GF(p^n) has something to do with converting the field into a polynomial where all the coefficients are of GF(p), but that's where my understanding starts to fall apart.
Can anyone point me at something that will help me to better understand this?
Sensitive content
Jonathan Lamothe likes this.
reshared this
Review of "1984" (4 stars): problematic but relevant
A lot to unpack in this book. The lead character (Winston) has some pretty misogynistic tendencies, and there's not a single female character in the book with any depth whatsoever. This can be explained to some extent by the fact that it was written in the 40s, and that Winston has been subject to psychological manipulation essentially since birth.
Problematic elements aside, this provides an interesting dive into the world of psychological warfare, which remains relevant to this day.
Jonathan Lamothe reshared this.
like this
reshared this
Remember kids:
IRC is free.
IRC is a open standard.
You can run your own IRC server.
IRC doesn't collect data on you and sell it.
You can still moderate your channels via invite, voice, and ban modes.
You can run a server on a 486.
IRC doesn't try to up sell you on "nitro".
IRC doesn't need to make money to make some VC happy.
like this
reshared this
like this
Kitsune Tails
Explore the complicated relationships between kitsune and humans in this platforming follow up to Super Bernie World.kitsunegames.com
Jonathan Lamothe likes this.
reshared this
So, I'm nearly half way through Tue book and Winston is... problematic.
I don't know how this escaped me on my first read.
(comment on 1984, p. 130)
1984 - BookWyrm
Which One Will YOU Be IN the Year 1984? There won't be much choice, of course, if this book's predictions turn out to be true.bookwyrm.social
Jonathan Lamothe reshared this.
Had an optometrist's appointment today. Got confirmation of something I've known for some time: my depth perception sucks.
Sadly, it's not correctable, but it's been like that for as long as I can remember. I've learned to adapt.
Jeremy List likes this.
I've read it before but was in a very different place at the time. Want to see if it hits differently this time around.
(comment on 1984)
1984 - BookWyrm
Which One Will YOU Be IN the Year 1984? There won't be much choice, of course, if this book's predictions turn out to be true.bookwyrm.social
Jonathan Lamothe reshared this.
Sourcery - BookWyrm
When last seen, the singularly inept wizard Rincewind had fallen off the edge of the world. Now, magically, he's turned up again, and this time he's brought the Luggage. But that's not all...bookwyrm.social
Jonathan Lamothe reshared this.
Jonathan Lamothe likes this.
Jonathan Lamothe reshared this.
40k theory: The mechanicus can't create new technology because LLMs were invented during the dark age of technology.
Most of the media created after that point is AI nonsense, so they can't find the actual plans to replicate most of their technology.
The emperor can work with tech because he saved a copy of the wikipedia before it was too late.
Jonathan Lamothe likes this.
reshared this
while back we called it bullshit automation, and just recently a scientific paper was published that arguments this distribution nicely.
researchgate.net/publication/3…
Yes I know this is essentially a different class of problem, but the "learning" is done in the same way. And it flows the tradition of garbage in, garbage out.
Ethical, easy-to-use and privacy-conscious alternatives to well-known software
switching.software
Ethical, easy-to-use and privacy-conscious alternatives to well-known softwareswitching.software
Jonathan Lamothe likes this.
reshared this
Katy just got an ad for a "grounding sheet"... It's literally a blanket that plugs into a wall outlet so that you can be grounded while you sleep.
In case you're probe to static buildup in your sleep, I guess? How is this a thing?
So, I learned about Hamming codes a while back. They're pretty neat, but a lot of modern technology uses Reed-Solomon instead. I've wanted to learn about that one, but it involves some pretty heavy math that often goes over my head.
I've found a few different videos on YouTube that try to explain it "simply" but they all tend to gloss certain details over. After watching a few of them, I've noticed that the parts they gloss over are different from each other, and I'm wondering if I can just hunt down enough of them that I can piece the rest together myself.
All things considered, this seems a weirdly fitting way to learn it.
like this
𝚛𝚊𝚝 likes this.
like this
Jonathan Lamothe likes this.
reshared this
like this
reshared this
Logged into my online banking to be greeted by a notification about an "unusual transaction". It was today's vet visit.
Yes. It was unusual. It was also entirely legit, but thanks.
like this
As a side note: I sent my parents a text asking if we could borrow $X to hold us over until next pay day. My mother replied by saying that she'd "accidentally" sent $(X + Y) and to spend the extra as we see fit. We have a tiny bit of breathing room again.
She is amazing, and I am so fortunate to have family who are able to help out in an emergency. It's not lost on me that many don't.
𝚛𝚊𝚝 likes this.
Benny (our cat) was under the weather yesterday so we took him to the vet. We went home with some meds and general optimism. He seemed to perk up later in the day.
This morning he's super lethargic and uninterested in his food. Which is super not like him. Have another appointment with the vet in an hour and a half.
Not only am I stressed out about the cat, but I'm also stressed about the added financial burden of two unexpected vet visits (and I feel like an asshole about the latter).
We'll figure it out, but if the universe could cut us some slack for like five minutes, that'd be great.
Edit: typo
like this
𝚛𝚊𝚝 likes this.
𝚛𝚊𝚝 likes this.
Jonathan Lamothe likes this.
reshared this
Sensitive content
Jonathan Lamothe likes this.
reshared this
I've run into a snag with an sqlite database I've been working on. Below is a simplified example of the problem.
Suppose I have the following table:
CREATE TABLE "prices" (
"id" INTEGER NOT NULL UNIQUE,
"name" TEXT NOT NULL UNIQUE,
"list_price" NUMERIC NOT NULL,
"sale_price" NUMERIC,
"tax_rate" NUMERIC NOT NULL,
PRIMARY KEY("id" AUTOINCREMENT)
);
Is there a way to do something like the following?
SELECT
name,
CASE
WHEN sale_price IS NULL
THEN list_price
ELSE sale_price
END AS price,
price * tax_rate AS tax
FROM prices;
The
tax
column doesn't seem to acknowledge the price
column's existence, presumably because it's a column in the query rather than the source table. I could re-implement the CASE
logic for the tax
field, but that feels inelegant and error-prone.Is there a better way to do this?
Isaac Ji Kuo likes this.
WITH
to do it in two steps:WITH pre_price AS (
SELECT
name,
CASE WHEN sale_price IS NULL
THEN list_price
ELSE sale_price END
AS price,
tax_rate FROM prices
)
SELECT
name,
price,
price * tax_rate AS tax
FROM pre_price;
Jonathan Lamothe
Unknown parent • •