For years, the technique I’ve used to reverse engineer FPGA boards: locate JTAG, find a toggling FPGA clock input, and create and program a core that instantiates a UART for every output-capable pin, repeating the FPGA pin/ball number in ASCII. Then probe the board with a logic analyzer in serial decode, like so, one component leg at a time:
Finally my "RISC-V System-on-Chip Design" book by Harris, Stine, Thompson and Harris arrived, featuring the all open source CV-WALLY (CVW) hosted by @OpenHWFdn , explaining how to design a @risc_v CPU, how to verify and more, including design trade off disc. . Spot @bilalzafar
Perhaps not everyone knows this, but the CM5's reverse engineering was done by Eric Schlaepfer, who is also the co-author of the book "Open Circuits: The Inner Beauty of Electronic Components" and runs the @TubeTimeUS profile.
Well done Eric, great work!
I wasn't planning to post today, but a family member who just started studying applied mathematics, asked me for some material to check out, and recommended 'A First Course in Monte Carlo Methods' by Sanz-Alonso and Al-Ghattas, a fantastic primer in 150 pages, available on arXiv.
Engineers, computer scientists and applied mathematicians will enjoy this one, I am sure.
🔗👇👇
almost every engineering system is signal in, signal out.
• audio
• radar
• images
• sensors
• motors
• circuits
• control systems
all of them process information over time.
signals and systems by alan v. oppenheim is one of the books that teaches you how to see that structure.
a signal is not just data.
it is behavior across time, space, or frequency.
a system takes that signal and transforms it.
• filtering noise
• amplifying patterns
• extracting features
• predicting behavior
• controlling response
once you understand convolution, Fourier transforms, sampling, and frequency response,
the world starts looking different.
• sound becomes waves.
• images become frequencies.
• sensors become streams.
• machines become transformations.
engineering becomes the art of shaping signals.
Networking 101: Routing 🧙♂️
Learning networking by doing - can you configure a Linux server to work as a router? An easy task that will take your understanding of Linux networking to the next level if you haven't done it before.
Practice: https://t.co/k2seN25Ewe
Computer Networking 101: Sockets 🛠️
The best way to understand what sockets are and how they work is to write a few simple client-server programs. The good news is that it's only a few lines of Python or Go. Or if you feel courageous, try C - the code will be more verbose, but it's as close as it gets to the actual system API.
A few problems to practice (in a friendly, controlled environment with helpful hints):
- Write a simple TCP Echo server https://t.co/yZTvQoId63
- (simpler) Write a client for a telemetry server https://t.co/OH9JHuE81i
- (harder) Write a client for a chat server https://t.co/ukwPsC9bCb
- Make one server work with both TCP and Unix sockets https://t.co/D2ot5e7tJn
Happy hacking!
"Graph Theory" is a free set of lecture notes covering graph fundamentals, graph properties, connectivity, trees, graph algorithms, algebraic graph theory, linear programming, network flows, graph coloring, random graphs, and vector spaces associated with graphs.
It follows a rigorous style and includes many exercises throughout. I think it is a very good introductory reference to graph theory and its practical applications.
https://t.co/eBRQHMgsfz
in 2011, a researcher registered domains one bit away from popular ones not human typos, but the kind a flipped DRAM bit would produce and waited.
thousands of real machines connected.
computers were resolving DNS through corrupted memory and landing on his servers by accident.
google later found DRAM error rates in production were orders of magnitude higher than lab estimates, with roughly 8% of DIMMs seeing at least one correctable error each year.
servers have ECC. the laptop you do your banking on probably doesn't.
memory is less deterministic than most software assumes.
Tensors generalize vectors as lists and matrices as grids into higher-order arrays like 3D cubes.
Comparisons include a vector as a list, a matrix as a grid, and a 3-tensor as a cube, along with the stress tensor σij on a cube featuring arrows for components like σ11 and σ23, the product derivative rule, the Riemann curvature tensor R(u,v)w = ∇u ∇_v w − ∇_v ∇_u w − ∇[u,v]w, quantum superposition 1/√2(|00⟩ + |11⟩), and algebraic operations like the tensor product.
It is used to analyze internal forces and deformations in engineering materials and to describe the geometry of spacetime under gravity in general relativity.
found this absolutely beautiful resource. shows you how the ins and outs of how a compute works. amazing technical depth, while always extremely readable
man I wish I had discovered this earlier.
180/365 of GPU Programming
One of my favorite resources recently has been Fundamentals of GPU Architecture which is a 9-part video series which goes through the book General-Purpose Graphics Processor Architectures.
The lectures are from 2019 but still useful today for getting a more foundational understanding of how the hardware architecture connects to GPU programming primitives.
RF Engineering: Struggling with signal levels? Get the clarity you need.
In RF circuit design, managing signal levels is everything. Whether you are matching stages, preventing amplifier saturation, or simply calibrating power levels, the RF Attenuator is one of the most fundamental tools in your arsenal.
But how do you move from the theory of Pi and T-networks to a practical, production-ready design?
I’ve put together a resource designed to cut through the noise: "A Concise Guide to RF Attenuators & Their Design."
Why this guide is a must-have:
* The Theory, Simplified: Understand the core concepts behind resistive attenuator networks without getting lost in overly academic jargon.
* Practical Design Steps: Step-by-step guidance on calculating component values for common configurations, including Pi, T, and Bridged-T networks.
* Performance Considerations: Learn about the impacts of frequency, impedance matching, and physical layout—critical factors that can make or break an RF design.
* Compact & Focused: This isn't a 500-page textbook. It’s a concise, actionable guide built for engineers and students who need results, fast.
Whether you are designing for test equipment, radio systems, or broad-band applications, this guide serves as a perfect reference for your engineering library.
Stop guessing your values and start designing with confidence.
👉 Download your copy today: https://t.co/4Ciyf33eIc
#RFEngineering #RadioFrequency #CircuitDesign #ElectronicsEngineering #WirelessTechnology #EngineeringResources #ElectronicsNotes #RFDesign
Imagine if your RAM could execute operations without the CPU.
Not by adding cores to memory. Not by integrating a GPU.
Just by exploiting the analog behavior of the DRAM chips already sitting in your system.
It sounds impossible, but a series of papers proposed exactly that. One of the most influential is "The Processing Using Memory Paradigm."
The motivation was simple.
Modern CPUs spend an enormous amount of time moving data rather than computing on it. Operations like "memcpy()", page initialization, "fork()", Copy-on-Write, bitmap operations, and page migration often involve little or no arithmetic, yet every byte still travels:
DRAM → Memory Controller → CPU Cache → CPU → Cache → Memory Controller → DRAM
That movement consumes memory bandwidth, pollutes caches, burns energy, and limits performance.
The paper proposes a different idea:
If the operation doesn't require the CPU, don't send the data there in the first place.
Instead of adding compute units inside memory (traditional Processing-in-Memory), the authors introduce Processing using Memory (PuM), reusing the circuitry already present in commodity DRAM.
The paper combines two techniques.
RowClone exploits the row buffer (sense amplifiers). By issuing carefully timed ACTIVATE commands, an entire DRAM row can be copied to another row inside the same subarray, without transferring the data over the external memory bus.
The second idea is even more fascinating.
By simultaneously activating three DRAM rows, the sense amplifiers naturally resolve the stored charges according to a majority function. With specially initialized control rows containing all 0s or all 1s, this behavior can implement bulk bitwise AND and OR directly inside DRAM.
No ALU.
No vector instructions.
No CPU execution.
Just the analog physics of DRAM doing useful work.
The potential gains are enormous:
• Lower latency
• Reduced memory bandwidth consumption
• Significant energy savings
• Faster memory-intensive OS operations
So why don't our DDR5 DIMMs do this today?
Because elegant research doesn't automatically become a product.
The techniques require cooperation across the DRAM chips, memory controller, operating system, and ISA. Commodity DRAM vendors prioritize density, cost, reliability, compatibility, and JEDEC standardization. Supporting these operations also introduces challenges around subarray placement, ECC, refresh timing, command scheduling, and software integration.
For general-purpose PCs and servers, those engineering and ecosystem costs outweighed the benefits.
But the paper's real impact wasn't shipping a feature.
It changed an entire research direction.
Instead of asking "How do we make CPUs faster?", architects began asking "Why is the CPU involved at all?"
That question sparked years of work on Processing-in-Memory, influencing projects like Ambit, Buddy RAM, Samsung's HBM-PIM, and many modern near-memory computing architectures.
Sometimes the most important papers aren't the ones that become products.
They're the ones that permanently change how an entire field thinks.
Lincoln Electric and Selco refused to give me the schematics for their welding PCB that generates the waves for AC welding, which is annoying as I`m trying to fix a friends TIG who has the same model I fixed for myself a month or so ago.
So I`ve drawn the relevant section of the PCB in FALSTAD online circuit simulator (free!!!, link in comments), and adjusted the values for the unknown surface mount components until I`ve got the right frequency which I measured on my working welding machine.
Its very useful as it also enables you to quickly muck about with component values, and delete things, which shows you the effects of a drfting or shorted part on the output signal.
Its a bit of a finnecky program, but in 2 evenings I`ve sort of got the hang of the basics of it.
I still found it best to scribble out the schematic by hand first, before attempting to build it in the software.
Still a bit of work to do before the machine is fixed, but this makes things much easier.
I dreamt of writing a book for as long as I can remember, wrote many outlines, but none materialised.
Then I started writing this article on virtual memory, which kept getting longer and longer and turned into an unplanned book.
Based on all the positive feedback, I recently published it on Amazon as well. Somehow, it is showing up as the #1 bestseller in its category on Amazon India :D.
Maybe it says something about how niche these categories are, but it still feels surreal.