My Ethereum Foundation Hackternship Experience

Mikerah
6 min readDec 19, 2018

--

Special thanks to Ken from the Grants team for editing this post.

In the 3rd wave of grants given by the Ethereum Foundation, I was awarded a hackternship for Shasper (or Serenity or ETH2.0, which ever you prefer. At the time of my application, Shasper was the law of land.) research and implementation, in particular committee selection. This post is an overview of my hackternship experience. I am writing this post due to the lack of information out there about the Ethereum Foundation’s Hackternship program and to add more transparency to the program. Hopefully, this can help you decide if you want to participate as well.

How did I learn about the Ethereum Foundation’s Hackternship Program and why did I participate?

In May of 2018, I attended Edcon in Toronto. There, I was able to meet with several people from the Ethereum Foundation. In particular, I met with Virgil Griffith to discuss opportunities for research in the Ethereum Community. He suggested I take a look at the Ethereum Foundation’s Grants Program and redirected me to a page he had created for his alma mater, Caltech. This page contains an overview of the different types of grants the Ethereum Foundation gave out.

After going through the different programs available, I decided that the hackternship was a great choice for me, even though I wanted to work on an open-ended problem that couldn’t be solved in 10 weeks, effectively an interesting research problem. I had done some undergraduate research the previous summer in an application of blockchain technology and wanted to work on something different. Also, I thought this would be a more independent and meritocratic program than the NSREC’s USRA grant given to undergraduate students. At my university, you need at least a 3.7 CGPA to be considered due to the competitiveness of the program (minor sidenote: The EF’s hackternship program pays better than an USRA grant, which is $6–7K for 16 weeks.).

In order to search for a research project to work on, I went through this open problems list by the Ethereum Foundation that I had found over a year ago. I also contacted Virgil to see what problems I can work. After doing some reading, I decided to settle on attempting to create a standardized randomness beacon for Ethereum. I knew this couldn’t be done in 10 weeks but I thought the 10 weeks would enable me to jump start an attempt. It would also allow to rub elbows with some of the smartest people in Ethereum and get more involved in the community.

How does the application process work?

I applied during the first week of June 2018, after the May 2018 cohort was revealed. At the time of my application, the application form was a dodgy looking Google form (the form is much nicer for newer cohorts) that asks you the type of questions you would expect such as your experience, what you would like to work on, milestones, any support (other than money) that you want from the Ethereum Foundation, references, etc. I didn’t have any grant writing experience and didn’t have a gauge of how competitive these grants were due to the lack of transparency at the time (Since then, the Ethereum Foundation has posted their criteria for selection. You can read more about it here).

I got a reply back within 2 weeks asking for an interview and to fill out a KYC form (also, a dodgy looking Google form). I didn’t need to fill out the KYC form immediately. By the time I scheduled an interview, I had changed my project idea (still related to the original idea) to better fit the 10 week time line of a hackternship. Instead of simply trying to develop a standard randomness beacon for Ethereum which I didn’t expect to finish within 10 weeks, I would implement well-known pseudo-random number generators (PRNGs) such as Mersenne Twister, Linear Congruential Generators, Xorshift, etc. (Sidenote: In retrospect, I was very naive about the time it would take to come up with a standard randomness beacon for Ethereum. I do have plans to attempt this after I graduate, however.).

I was interviewed by 3 people, James, Ken and Evan (of Week in Ethereum fame). The interview lasted around 15–20 mins. They simply asked me what are the applications of implementing these PRNGs on Ethereum, about my experience, whether I plan to apply for more grants in the future, what I wanted from the program, etc. It was perhaps one of the least awkward interviews I had in quite some time (it was still awkward though).

After I was interviewed, I didn’t hear from the EF Grants team for several weeks. Until, I got an email from James about concerns that my project idea change now focused on centralized PRNGs. He put me in touch with Chih Chen Liang, an Ethereum Core researcher/developer, in order to flesh out a new idea that is somewhat related or tangential to the previous idea. There were a few emails back and forth between us until we settled on pseudo-randomly selected committees for ETH2.0. By this time, I realized that I was indeed getting the grant and decided to fill out the KYC form. Otherwise, why would they spend all this time sending me emails back and forth? Several days later, I was officially informed that I had received the grant.

What did I do for 10+ weeks?

Even though I had gotten the grant for researching committee selection, I was also working on the Lodestar Chain and regularly participating in the bi-weekly ETH2.0 implementers’ calls organized by Danny Ryan. As I learned more about the protocol through implementing it and the calls, I soon learned that committee selection was already built-in and for the most part figured out. So, instead I decided that I would continue working on Lodestar and start writing some simulations in order to better understand the protocol.

In terms of time management, I didn’t really do anything in particular. Near the beginning of my hackternship, I was given more responsibilities at work. So, I had to prioritize that. Then, the semester started and I had to do school work. In general, the way I decided to manage all of this is to simply work on what I wanted to work on. So, I mainly worked on my hackternship. This led to me neglecting my school work and a little of my real work (as I am writing this, I have finals to study for). The way I rationalized this is the following

In the long term, nobody is going to care about your grades or your centralized blockchain research. Just work on what matters which is helping build the decentralized future.

Which so far has been true. People ask about my work in ETH2.0 and my student club than any of the other stuff. In fact, people didn’t know I was a student until I met them at Devcon or mentioned an assignment deadline in a direct message.

In terms of regular updates, I had original planned to write medium articles to update everyone on my progress. But due to the change in focus, the bi-weekly calls and my terrible writing skills, I decided not to go do this. From the Ethereum Foundation’s end, I didn’t receive a single email asking me to update them on my progress. Any emails that I did receive from the grants team were much later, after the hackternship period had ended and an invite to the grantee discord server. Looking back, I should have initiated and sent periodic updates. I did, however, have a private call with Danny Ryan to discuss ETH2.0 things and we talked a little about my hackternship. After the call, I thought, “How does Danny know about my hackternship?”. It turns out he is somewhat involved with the grants team. So, I think this was enough of an update for them. In a later call with Ken, he mentioned that he felt comfortable not asking me for regular updates due to how involved I ended becoming in the community. As a result, he was updated on my work through other means.

Final Thoughts

In short, my hackternship experience was an great and led me from 0 to ethereum-core-contributors-follow-me-on-Twitter-and-mispronounce-my-name-in-real-life status.

I had originally envisioned this as very hands-on program where the Ethereum Foundation sets up regular calls, assigns a mentor, sets a roadmap, etc. This was far from the case but it turned out alright. Due to the peculiarities of my hackternship, I had all of those things built in and some extra stuff. In the future and depending on the hacktern, it would be a good idea to have a little bit more structure to the program.

I would highly recommend the program for anyone wanted to get introduced to the Ethereum community by actively contributing from the start.

If you have any questions, comments, concerns, tips on how to be better at this writing thing, hit me up on twitter. My DMs are open.

--

--