August Radjoe

@augustradjoe

Joined on Jun 15, 2020

  • Introduction to semiconductors, doping, generation/recombination, TE carrier concentrations, and carrier dynamics. Excess populations, minimum carrier lifetime, photoconductivity, and non-uniform concentrations and diffusion. The five basic equations, device structures in TE, carriers, electrostatic potential, and Poisson's equation (PE). P-n junctions in thermal equilibrium and under reverse bias, the depletion approximation (DA), and comparison to PE solution. Review of reverse biased junctions, forward bias, and minority carrier injection into quasineutral regions. Forward biased p-n junctions, carrier injection, i-v characteristics, and engineering carrier injection. Bipolar junction transistors (BJTs): two coupled diodes, terminal characteristics, and regions of operation. Solar cells and LEDs (light emitting diodes). MOS capacitors: DA applied to two-terminal MOS capacitor accumulation, depletion, and inversion; VFB, VT, QA, and QN. The three-terminal MOS capacitor, MOSFETs, gradual channel approximation (GCA), and ignoring subthreshold carriers.
     Like  Bookmark
  • Vectors and Matrices: Understanding the concepts of vectors and matrices is fundamental. This includes operations such as addition, subtraction, scalar multiplication, dot product, cross product, matrix multiplication, and inverse. Vector Spaces: Study the properties and characteristics of vector spaces, including linear independence, basis and dimension, subspaces, span, and linear transformations. Eigenvalues and Eigenvectors: Eigenvalues and eigenvectors play a crucial role in many machine learning algorithms, such as dimensionality reduction techniques like Principal Component Analysis (PCA) and spectral clustering. Learn how to compute eigenvalues and eigenvectors, and their applications. Orthogonality and Inner Products: Understand the concept of orthogonality, orthogonal bases, and orthogonal projections. Inner product spaces are essential in AI for techniques like support vector machines (SVMs) and kernel methods. Singular Value Decomposition (SVD): SVD is a powerful matrix factorization technique used in various AI applications, including dimensionality reduction, image compression, collaborative filtering, and recommender systems. Matrix Factorizations: Besides SVD, be familiar with other matrix factorizations, such as LU decomposition, QR decomposition, and Cholesky decomposition. These factorizations are used for solving systems of linear equations and optimizing matrix operations. Matrix Calculus: Develop a working knowledge of matrix calculus, including differentiation and optimization of functions involving matrices. This is important for understanding and implementing various machine learning algorithms. Linear Systems and Solutions: Study techniques for solving linear systems of equations, including Gaussian elimination, LU decomposition, and solving least squares problems. Convex Optimization: Understand the basics of convex optimization, including convex sets, convex functions, and optimization algorithms like gradient descent. Convex optimization is fundamental in training machine learning models and solving optimization problems. Applications to AI: Finally, explore how linear algebra concepts and techniques are applied in specific areas of AI, such as deep learning, computer vision, natural language processing, and recommendation systems. Understanding the linear algebra foundations behind these applications will help you develop a deeper intuition and enable you to design and implement more advanced algorithms.
     Like  Bookmark
  • Foundations of Cryptography Here is the list of topics discussed in the MIT course "Foundations of Cryptography" (MIT 6.5620/6.875/18.425) during the Fall 2022 semester: Module 1: Lecture 1: Introduction to cryptography, secure communication, Shannon's definitions of perfect secrecy, the one-time pad construction, and Shannon's lower bound. Lecture 2: Computational security, pseudorandom generators (PRG), and stateful secret-key encryption. Lecture 3: The Hybrid Argument, PRG length extension, pseudorandom functions (PRF), and PRFs imply secret-key encryption. Lecture 4: Formal definition of PRF security, the Goldreich-Goldwasser-Micali (GGM) PRF construction, and IND-CPA secure encryption. Lecture 5: Identification protocols, authentication, message-authentication codes (MAC), and chosen ciphertext secure symmetric key encryption.
     Like  Bookmark
  • Networking: https://github.com/AbhinavMir/networking Databases: Learning about recovery via ARIES is enough for now - https://www.shreya-shankar.com/aries/ Algorithms and Complexity: https://hackmd.io/@augustradjoe/algo-complexity Cryptography: https://hackmd.io/@augustradjoe/crypto-guide Compiler theory: https://hackmd.io/@augustradjoe/compiler-theory Operating Systems: Not my expertise, but I learnt a lot via Broken Thorn's follow along, as well as building an OS in Rust. On top of that, doing a bunch of CTFs helped me. Guide on that. More advanced OS needs you to study locks, virutalisation etc, which isn't my expertise (yet!).
     Like  Bookmark
  • Basic Syscalls fork creates a new process by duplicating the calling process, while exec replaces the current process image with a new process image. fork creates a child process that is a clone of the parent process, while exec loads a new program into the current process. The child process created by fork initially shares the same memory space as the parent process, while the exec system call loads a new program into a new memory space. fork returns the process ID of the child process to the parent process, while exec does not return to the calling process. fork is often used to create a new process that performs some task independently of the parent process, while exec is used to start a new program or to change the behavior of the current process. The exec family of system calls includes several variants, such as execl, execv, execle, and execvp, which differ in the way they accept arguments and how they search for the new program. The choice between fork and exec depends on the specific needs of the application and the desired behavior of the new process.
     Like  Bookmark
  • Complexity theory and Math for CS are both by the awesome Prof. Mark Bun @ BU. Prof.Hohmer for Graduate Algorithms, rest is either MIT or Harvard. Compiled from all the sources, plus some experience. Best results? Pick a language, only use raw Vim, and do a bunch of leetcodes. Leetcode is great for helping with algorithmic thinking. Algorithms Should take 3-4 days. Unit 1: Introduction Algorithmic thinking, peak finding
     Like  Bookmark
  • Found a pretty cool paper this week - A New Hybrid Cryptosystem Involving DNA, Rabin, One Time Pad and Fiestel. Thought I'd discuss it. This paper proposes a novel approach to cryptography by combining DNA sequences, the Rabin cryptosystem, one-time pad (OTP), and a Feistel structure. DNA cryptography provides several advantages that enhance the security of traditional methods. <u>Why DNA?</u> Extremely large keyspace - DNA sequences of length $n$ have $4^n$ possible combinations, enabling an astronomically large number of keys. Even relatively short DNA strands can have keyspaces infeasible for brute force attacks. True randomness - Biologically generated DNA sequences exhibit more randomness than computationally generated keys, improving cryptographic security. Availability - Many websites provide randomly generated DNA sequences that can be readily used as cryptographic keys. Compact storage - DNA can store vast amounts of data at a molecular scale, allowing the use of large keys in a small footprint.
     Like  Bookmark
  • vim ~/.bashrc Press i on your keyboard to enter insert mode in vim. Write export KEY=VALUE somewhere in the end, anywhere is fine really Press esc(escape key) to enter command mode, now type :wq - this will save and quit. Now, in Python, write the following: import os key = os.getenv('<KEY_NAME>') Now use key as needed
     Like  Bookmark
  • Contributing guideline: No formal guideline yet, get in touch on Twitter @augustradjoe. Github: https://github.com/abhinavmir/spock Abstract Spock is a browser extension that offers a secure and passwordless authentication method for users. Traditional password-based authentication systems are susceptible to various attacks, such as brute-force attacks, password guessing, and phishing. To address these vulnerabilities, Spock leverages public-key cryptography and a decentralized trust model for user authentication. This paper provides an overview of the Spock protocol, its motivation, implementation details, and related works. 1. Introduction Spock aims to provide a more secure alternative to traditional password-based authentication systems by eliminating the need for passwords altogether. Passwords are often weak, reused across multiple platforms, and vulnerable to various attacks. Spock utilizes public-key cryptography, where users generate a pair of public and private keys. The private key remains securely stored on the user's computer, while the public key is registered with a trusted Oracle server. When a user wants to authenticate with a website supporting Spock, they sign a message with their private key, and the website verifies the signature using the user's public key and the trusted Oracle. This approach enhances security by preventing password interception and reducing the risk of key theft. 2. Motivation
     Like  Bookmark
  • Statelessness is important in Ethereum as it allows for nodes that sync fast to be used, increasing trust assumptions for users due to an increased decentralised verification system. It is also great for state resurrection should we ever decide to prune out the stale state or even delete less relevant states. We will likely keep a state stored elsewhere instead of on full nodes, and should we ever need it, clients can use stateless blocks for execution and verification. Verkle trees are similar to Merkle trees in that they store large amounts of data and provide a proof for any single piece. If you're new to Merkle trees, we probably should go over it really quickly. We don't want absolute statelessness, we want weak statelessness. In the words of Darkrad, that means: "Validating block requires no state, but proposing blocks requires the full state". ETH2 Validators won't need full state - so staking from mobile devices (raspberry pi etc) becomes much easier. Light clients, however, should also be able to validate single blocks as fraud proofs. A quick note on states: "For the state tree, however, the situation is more complex. The state in Ethereum essentially consists of a key-value map, where the keys are addresses and the values are account declarations, listing the balance, nonce, code and storage for each account (where the storage is itself a tree)." 1 Merkle Trees Imagine you have a lot of data that you want to verify hasn't been tampered with. Instead of checking each piece of data individually, which can be time-consuming, you can use a Merkle tree.
     Like  Bookmark