A follow-up to my earlier post on programming a Dvorak layout for the Advantage360. Same keyboard, different problem: the left half of my wired Advantage360 (KB360, SmartSet engine — not the Pro) started dropping out a few times a day. If you’re seeing the same thing, this post is the short version of how I diagnosed it and what fixed it.
This post shows how to program a Dvorak layout for the wired Kinesis Advantage360 by directly editing a layout file. Note that the (wireless) Advantage360 Professional uses a completely different configuration process, described here . For many years now, my keyboard of choice has been a contoured Advantage keyboard from Kinesis with a Dvorak layout. Contoured keyboards make the home row a very…
This post is a high-level recap of the foundational ideas that led to the first practical zk-SNARKs. There’s a lot to cover, and so this post focuses on the developments leading up to the introduction of the Groth16 SNARK. Groth16 feels like a good milestone: it was one of the first SNARKs used in practice, and its small proofs and fast verification are still, largely, unmatched today.
The field of zero-knowledge proofs (ZKPs) has seen some amazing advances in the last several years. All of that progress, though, makes it difficult to keep up with the state of the art and see how all the pieces fit together. This post is my (ongoing) attempt to follow the impactful developments and trace some of the lines of inquiry.
In the previous post about autoencoders, we looked at their ability to compress data into a latent space and then reconstruct it with remarkable fidelity. This time, we’ll look at Variational Autoencoders (VAEs).
The previous post trained an autoencoder for the MNIST images of handwritten digits. While that worked, it was a very generic solution in the sense that it ignored the spatial structure of an image and just treated an image as a vector of numbers. This time, we’ll build a convolutional autoencoder that uses convolutional layers instead of fully-connected layers. Convolutional layers offer several…
Today, I want to kick off a series of posts about Deep Learning. As the first installment, this post delves into the fundamentals of autoencoders, their applications, and gives a worked example of training an autoencoder with PyTorch.
Introducing Zeebra , a Rust library for zero-knowledge cryptography. Zeebra implements a subset of computational algebra and number theory for zero-knowledge cryptography. It contains many of the core algebraic structures and operations needed for zero-knowledge proofs, including big integers, finite fields, polynomials, and linear algebra. While there are several very good algebra libraries in…