The Essential Vim Configuration

Sat Apr 20 2019

1 Vim Configuration

Stock Vim is pretty boring. The good news is that Vim has a very comprehensive configuration file which allows you to tweak it to your heart’s content. To make changes to Vim you simply modify the ~/.vimrc file in your home directory. By adding simple commands this file you can easily change the way your text editor looks. Neat.

I attempted to create the smallest Vim configuration file which makes Vim usable enough for me to use as my daily text editor. I believe that it is important for everyone to know what their Vim configuration does. This knowledge will help ensure that you are only adding the things you want and that you can later customize it for your workflow. Although it may be tempting to download somebody else’s massive Vim configuration, I argue that this can lead to problems down the road.

Read More »

R Programming Language

Wed Mar 27 2019

R is a programming language designed for statistical analysis and graphics. Since R has been around since 1992, it has developed a large community and has over 13 thousand packages publicly available. What is really cool about R is that it is an open source GNU project.

1 R Syntax and Paradigms

The syntax of R is C esk with its use of curly braces. The type system of R is similar to Python where it can infer what type you are using. This “lazy” type system allows for “faster” development since you don’t have to worry about declaring types – this laziness makes it harder to debug and read your code. The type system of R is rather strange and distinctly different from most other languages. For starters, integers are represented as vectors of length 1. These things may feel weird at first, but, R’s type system is one of the things that make it a great tool for manipulating data.

R Arrays Start at 1
R Arrays Start at 1

Read More »

Is Using ML for Antivirus Safe

Sat Mar 23 2019

In this blog post I examine the ways in which antivirus programs currently employ machine learning and then go into the security vulnerabilities that it brings.

1 ML in the Antivirus Industry

Malware detection falls into two broad categories: static and dynamic analysis. Static analysis examines the program without actually running the code. Static analysis looks at things like the file fingerprints, hashes, reverse engineering, memory artifacts, packer detection, and debugging. Static analysis is largely known for looking up the hashes of the virus against a known database of viruses. It is super easy to fool signature based malware detection using simple obfuscation methods. Dynamic analysis is a technique where you run the program in a sandbox and monitor all the actions that the virus takes. If you notice that the program is acting suspicious, it is likely a virus. Suspicious behavior typically includes things like registry edits and API calls to bad host names.

Read More »

Lets Build a Genetic Algorithm

Sat Feb 23 2019

1 Live Simulation

Population Variables

2 Background and Theory

Since you stumbled upon this article, you might be wondering what the heck genetic algorithms are. To put it simply: genetic algorithms employ the same tactics used in natural selection to find an optimal solution to an optimization problem. Genetic algorithms are often used in high dimensional problems where the optimal solutions are not apparent. Genetic algorithms are commonly used to tune the hyper-parameters of a program. However, this algorithm can be used in any scenario where you have a function which defines how well a solution is. Many people have used genetic algorithms in video games to auto learn the weaknesses of players.

Read More »

GitHub Graphs Project

Wed Feb 20 2019

Shortly after working on my Steam Friends Graph ,I had the idea of extending the project to include the GitHub network. I used BrickHack V as the opportunity to work on this project with my friends. Rather than simply use the code that was used in the Steam friends graph, the architecture was completely revamped to reflect both the differences between the Steam and GitHub networks and my improved web development skills.

1 Project Overview

We created an interactive website which allows you to make graphs based on the Github network. Currently the site generates three types of graphs– the most popular and entertaining of which is the friends graph. The friends graph helps you visualize clusters of friends/collaborators on GitHub. Similar to the Steam Friends Project, I hope that this project will make people more interested in learning about big data. The visual aspect of this website makes learning about topics such as clustering and graph databases more intuitive.

1.1 Friends View

Friends Graph of JrTechs
Friends Graph of JrTechs

Read More »