Disassembly Required

If you really want to hack software, you are going to face a time when you have to take apart someone’s machine code. If you aren’t very organized, it might even be your own — source code does get lost. If you want to impress everyone, you’ll just read through the hex code (well, the really tough old birds will read it in binary). That was hard to do even when CPUs only had a handful of instructions.

A more practical approach is to use a tool called a disassembler. This is nothing more than a program that converts numeric machine code into symbolic instructions. The devil, of course, is in the details. Real programs are messy. The disassembler can’t always figure out the difference between code and data, for example. The transition points between data and code can also be tricky.

When Not to Use

If you are coding your own program in assembly,  a disassembler isn’t usually necessary. The disassembly can’t recover things like variable names, some function names, and — of course — comments. If you use a high-level language and you want to check your compiler output, you can easily have the compiler provide assembly language output (see below).

The real value of a disassembler is when you don’t have the source code. But it isn’t easy, especially for anything nontrivial. Be prepared to do a lot of detective work in most cases.

Continue reading “Disassembly Required”

Practical Deep Learning

Deep Learning — the use of neural networks with modern techniques to tackle problems ranging from computer vision to speech recognition and synthesis — is certainly a current buzzword. However, at the core is a set of powerful methods for organizing self-learning systems. Multi-layer neural networks aren’t new, but there is a resurgence of interest primarily due to the availability of massively parallel computation platforms disguised as video cards.

The problem is getting started in something like this. There are plenty of scholarly papers that can be hard to wade through. Or you can grab some code from GitHub and try to puzzle it out.

A better idea would be to take a free class entitled: Practical Deep Learning for Coders, Part 1. The course is free unless you count your investment in time. They warn you to expect to commit about ten hours a week for seven weeks to complete the course. You can see the first installment in the video, below. Continue reading “Practical Deep Learning”

Jump Into Pogo

A lot of modern PCBs have small pads with no components attached. They are often used as test points, JTAG ports, or programmer connections. There’s no connector on the board, just pads. To use those, test equipment and programmers utilize pogo pins. These are small pins with a spring inside, reminiscent of a tiny pogo stick.

To use pogo pins effectively, you need a way to hold them in the right position and something to put pressure on them while they are in use. [Joshua Brooks] used a strip board to hold them in place and clothes pin to keep the pressure on them.

Continue reading “Jump Into Pogo”

Pi Keeps Cool At 1.5 GHz

Hackers have a long history of overclocking CPUs ranging from desktop computers to Arduinos. [Jacken] wanted a little more oomph for his Pi Zero-Raspberry Pi-based media center, so he naturally wanted to boost the clock frequency. Like most overclocking though, the biggest limit is how much heat you can dump off the chip.

[Jacken] removed the normal heat sink and built a new one out of inexpensive copper shim, thermal compound, and super glue. The result isn’t very pretty, but it does let him run the Zero Pi at 1.5 GHz reliably. The heat sink is very low profile and doesn’t interfere with plugging other things into the board. Naturally, your results may vary on clock frequency and stability.

Continue reading “Pi Keeps Cool At 1.5 GHz”

80-PIC32 Cluster Does Fractals

One way to get around limitations in computing resources is to throw more computers at the problem. That’s why even cheap consumer-grade computers and phones have multiple cores in them. In supercomputing, it is common to have lots of processors with sophisticated sharing mechanisms.

[Henk Verbeek] decided to take 80 inexpensive PIC32 chips and build his own cluster programmed in — of all things — BASIC. The devices talk to each other via I2C. His example application plots fractals on another PIC32-based computer that has a VGA output. You can see a video of the device in action, below.

Continue reading “80-PIC32 Cluster Does Fractals”

3D Printed Circuit Boards… Sort Of

Comedian Demetri Martin does a bit about the phrase “sort of”. He says:

“Sort of’ is such a harmless thing to say… sort of. It’s just a filler. Sort of… it doesn’t really mean anything. But after certain things, sort of means everything. Like… after “I love you”… or “You’re going to live.”

SCADboard is an OpenSCAD library that lets you create 3D printable circuit boards…sort of. The library lays out like a breadboard with two bus bars on each side and a grid of rows and columns. OpenSCAD modules provide a way to create a board, ICs, LEDs, wires and other fundamental components. You set a few initial variables (like the board thickness) then your code looks like this:

 wire(1,bln,1,e, neg); // Neg left trace to LED
 led(1,e+1, 1,e+2, yellowled); // LED
 wire(1,f, 1,i, pos); // LED Pos
 wire(1,j, 1,brp, resistor); // Resistor
 
 wire(3,c,3,h, pos); // Cap Pos
 wire(4,c,4,h, neg); // LED Resistor

Continue reading “3D Printed Circuit Boards… Sort Of”

Detecting Water With And Without Headaches

In Texas — at least around Houston — we don’t have basements. We do, however, have bilges. Both of these are subject to taking on water when no one is paying attention. A friend of mine asked me what I thought of an Instructable that showed how to make a water sensor using a few discrete components. The circuit would probably work — it relied on the conductivity of most water to supply enough current to a bipolar transistor’s base to turn it on.

It is easy to overthink something like this, so I told my friend he should go with something a little more old-fashioned. I don’t know the origin of it, but it is older than I am. You can make a perfectly good water detector with things you probably already have around the house. My point isn’t that you should (or shouldn’t) construct a homemade water sensor. My point is that you don’t always need to go to the high-tech solution.

Continue reading “Detecting Water With And Without Headaches”