GitHub: ViGrey Twitter: @ViGreyTech LinkedIn: Vi Grey

2018 Comes to a Close

Dec 27, 2018

It has been a while since I wrote a blog post. I hope to write more often in 2019.

A lot of things have happened in 2018, including getting featured in a hacker journal, building a bunch of different NES games, and speaking at the HOPE conference in New York. Around this time last year, I wrote a post stating my 2018 New Year's resolutions, which you can read here. In this post I want to talk about some things that happened this year and address how the resolutions went. After that, I'm going to talk about things going into 2019. This post is going to be quite self centered and won't include any cool proof of concepts, so bear with me.

Cool Things that Happened in 2018

So this year has definitely been an exciting year for me. I ended up learning how to make an NES game with 6502 assembly. Not only did I make create an NES game, I created 11. I also got to attend way more information security and technology conferences and meet many more people with shared interests than I was able to in 2017.

One of my earliest NES projects, NESZIP, got enough publicity for me to be able to write an article about it titled "Concealing ZIP Files is NES Cartridges" in issue 0x18 of the hacker magazine, "Proof of Concept or GTFO." The NESZIP project also helped me get a talk accepted at this year's HOPE conference, where I presented my talk's powerpoint using an NES Cartridge played on an actual NES console.

Presenting from an NES at the HOPE Conference

Presenting from an NES at the Circle of HOPE Conference

I actually made an NES cartridge that was a brainf--k interpreter as well, which I sold as an indie hacker badge at DEFCON. To my surprise, it sold past my expections, requiring a few hundred to be created altogether. It even won the "Retro" category of the DEFCON 26 Badge Life contest.

I have been confirmed to be doing the "Very Important Gamer" (VIG) name badges for the Midwest Gaming Classic, which will be functioning NES cartridges (I'll be writing a blog post about that very soon).

Another project I got to work on earlier in 2018 was a very low level computing system that worked in base-1. Building that system allowed me to examine the mechanical nature of arithmetic and figure out what exactly happens when you add, subtract, multiply, divide, etc. . . I also continued spending time this year playing with the timeshared IBM quantum computer (It's probably pretty likely that I'll write about quantum computing projects sometime).

2018 Resolutions

My 2018 resolutions were:

  1. Use 10 different programming languages for 10 unique projects
  2. Contribute to 6 open source projects on GitHub
  3. Present publicly at least 4 times
  4. Solder at least 20 circuit boards
  5. Keep up with these resolutions

Let's talk about each resolution one by one and how well or poorly I did on them.

1. Use 10 Different Programming Languages for 10 Unique Projects

This resolution had a few rules to it, including needing to be something worthy of being called a project, needing to be open sourced, and needing to be new projects and not ports of my old projects. I also decided to set the 10 programming languages to Javascript, Python 3, C, Go, Rust, Haskell, x86 Assembly, ARM Assembly, 6502 Assembly, and Brainf--k.

It didn't take long for me to change the rules a bit on this one and to not focus as heavily on it. I decided to stress myself less about making the code open source and available on GitHub. A few of the projects made it on GitHub, but some of the projects still have a little bit more refining before I'm willing to have the source code available. Also, because some project were a bit large, I decided that combining programming languages in projects was okay.

As for writing the programs in specific programming languages, I successfully wrote programs in Javascript, Python3, Go, Haskell, 6502 Assembly, and Brainf--k, while I just started an x86 assembly project, so that's 7 out of the 10 chosen languages.

2. Contribute to 6 (Aim of 12) Open Source Projects on GitHub

I'm not going to lie, I did not do well on this resolution at all. That's not necessarily a bad thing though, as the reason turned out to be that I was too busy with contracts and projects that people wanted me to do. While I did not contribute to 6 open source projects, there were at least 6 individuals or groups that I have contributed to or collaborated with in 2018.

3. Present Publicly at Least 4 Times

This one was a bit easier than I thought it was going to be. I enjoy doing presentations (albeit, over livestream) for DEFCON 201, and I did 2 this year. As mentioned earlier, I also presented at the HOPE conference this year. That's 3 presentations. The other presentation was anonymously done, but I assure you the talk was public.

4. Solder at Least 20 Circuit Boards

Oh boy. . . When I came up with this resolution, I had 3 NES cartridges I was working on that I needed to solder. Now that we're at the end of 2018, I have soldered HUNDREDS of NES cartridges alone. I have also soldered other boards, including some fun indie hardware badge kits.

5. Keep Up with These Resolutions

Unfortunately, I didn't meet this resolution at all. Not only that, I didn't write blog posts much this year either. I'm hoping to change that at least a bit in 2019.

What 2019 Has in Store

2019 is already set to bring a few interesting things. I am currently working on a few collaberative projects that I hope to be able to talk about soon. Also, as mentioned earlier in this post, I will be creating the "Very Important Gamer" (VIG) name badges for Midwest Gaming Classic 2019. Those badges are going to be fully functioning NES cartridges with an original arcade game created by myself. I will also be speaking about the NES and digital forensics at CypherCon 4.0 in April. It is my goal to get a couple of presentations accepted at other locations as well.

While most of the low level programming I did for 2018 has been for 6502 based CPUs, programming in z80 assembly has been fun as well. Expect me to experiment more with z80 assembly by creating at least one gameboy game as a hobby project.

My use of the timeshared IBM quantum computer has been a lot lower than I wanted it to be, so I plan on doing more programming on quantum computers. I even have a project idea that could be described as "self referential" involving the IBM quantum computer that I hope to complete in 2019.