Console 36

Lightspeed, Key Values, and Tiny Checks

There is a new Console Discord server! Come join me, and previous Console interviewees, in the Console Discord. The first 5 people to use this invite code will get free lifetime access to the server.


TinyCheck

TinyCheck allows you to easily capture network communications from a smartphone or any device which can be associated to a Wi-Fi access point in order to quickly analyze them.

language: Python, stars: 1619, watchers: 58, forks: 100, issues: 9

last commit: January 14, 2021, first commit: November 24, 2020

https://twitter.com/felixaime

minikeyvalue

minikeyvalue is a distributed key value store in under 1000 lines. Used in production at comma.ai.

language: Go, stars: 1693, watchers: 48, forks: 139, issues: 2

last commit: January 08, 2021, first commit: April 02, 2019

https://twitter.com/realgeorgehotz

Project Lightspeed

Project Lightspeed is a self contained OBS -> FTL -> WebRTC live streaming server comprised of 3 parts. Once configured, anyone can achieve sub-second OBS to the browser livestreaming.

language: Shell/Rust/Go/React, stars: 2749, watchers: 66, forks: 70, issues: 15

last commit: January 16, 2021, first commit: January 04, 2021

https://www.linkedin.com/in/graves-dev/

OpenScan

OpenScan is an open-source app that enables users to scan hard copies of documents or notes and convert it into a PDF file.

language: C++, stars: 676, watchers: 17, forks: 27, issues: 7

last commit: January 11, 2021, first commit: June 25, 2020

https://www.linkedin.com/in/vijay-t-s/


Help Wanted

If you’re interested in posting a help wanted ad for your project, send an email to console.substack@gmail.com


An Interview With Garrett Graves of Project Lightspeed

What is your background?

I have been a computer guy my whole life but I only recently started programming. I have been a full-stack software engineer for about a year and a half now mainly specializing in web applications. The typical JS front-end, REST api backend. All of my programming skills have been self taught through projects mainly. My current job got my foot in the door but I took it upon myself to continue practicing even outside of work. My favorite languages right now are Golang, Rust and Elixir. I haven't really been using many frameworks but I really enjoy React and Phoenix. 

What's an opinion you have that most people don't agree with?

I think C and C++ are becoming obsolete and Rust will be the programming language for the next 40 years. 

What’s your most controversial programming opinion?

Python is the absolute worst backend language for web development and no one should ever learn or use Django or Flask

What is one app on your phone that you can’t live without that you think others should know about?

Firefox. It is a great web browser and they take your privacy much more seriously than other companies 

If you could dictate that everyone in the world should read one book, what would it be?

Extreme Ownership by Jocko Willink. I think in today's world people look to pass blame around and I think by employing the ideas in this book our world would be a much better place. 

If I gave you $10 million to invest in one thing right now, where would you put it?

Since a diverse portfolio is something that is really important, if I was given $10 million I would invest it in myself and start a company. I am not really sure what that company would be but I would start brainstorming to find an idea that I think would provide value. 

Maybe a hosted product for Project Lightspeed?

Ugh everyone keeps suggesting this haha! Lightspeed is nowhere near production ready and I struggle to see people paying for it. Although I am doing some research into some things that may make it better.

What are you currently learning?

Right now I am learning data structures and algorithms for some upcoming interviews along with Golang and more about WebRTC and video transcoding. 

What resources do you use to stay up to date on software engineering?

I mainly use Reddit, YouTube and word of mouth to stay up to date with the industry. 

How do you separate good project ideas from bad ones?

In my opinion, if a project will teach you something then it is a good idea. Some are better than others but usually when I start a project my main objective is learning. 

Why was Project Lightspeed started?

Project Lightspeed was not meant to solve a problem or really be used. I started it because I wanted to learn more about video and real-time communication and I was hoping to use it as a resume project to land some interviews. It blew up however and people have said that this is something they have been waiting for so I plan to support it into the future.

What are the overarching goals of Project Lightspeed, and what trade-offs have been made as a consequence of these goals?

The main goal of Lightspeed is low latency. In order to achieve this there are no retransmissions at all, meaning that if the broadcaster has a poor internet connection it won't work very well. I am looking into a hypothesis about H264 keyframes that may be able to help out with this but I have 0 clue if it is feasible yet. People have been asking for things like video transcoding, or different ingest protocols but those would run counter to the mission of Lightspeed so I am approaching those requests with caution. 

What is this H264 hypothesis?

Basically an ML model that guesses H264 keyframes which would remove the need for retransmissions (I have a very loose understanding of the H264 codec though so I am currently learning more about that).

What is the most challenging problem that’s been solved in Project Lightspeed, so far?

The most challenging problem with Lightspeed hasn't been solved yet. The hardest thing is going to be figuring out horizontal scaling. We have some interesting discussion going on here.

What is your typical approach to debugging issues filed in the Project Lightspeed repo?

Most of the issues we have faced so far are related to deployment so based on my knowledge of the application I usually try to reason through it with whoever is having an issue. In terms of actual bugs since I wrote the project myself I can usually tell exactly where the bug is coming from so I will pull up the code and then work on patching what needs to be patched. 

What is the release process like for Project Lightspeed?

I am really new to open-source and new to releasing a project so I have not come up with a definitive release process yet. Right now we have a docker-hub auto build configured to build on tag push to the repos so when I want a new release I will just push a tag. I want to come up with a better system to automate and document our releases in the future though. 

Is Project Lightspeed intended to eventually be monetized if it isn’t monetized already?

As of right now it is not monetized. I am accepting personal sponsorships on GitHub. However, I am not sure exactly what I want to do with monetization in the future. 

How do you balance your work on open-source with your day job and other responsibilities?

Right now, my day job responsibilities are pretty relaxed so I am able to dedicate more time to Lightspeed but in the future I plan to work on it a couple nights a week and then one day on the weekend. 

Do you think any of your projects do more harm than good?

Definitely not. Lightspeed is really my only functional project and I would say that it doesn't cause harm. I can see how someone could use it to cause harm however I wouldn't attribute that to the software itself because there will always be evil people in the world.

What is the best way for a new developer to contribute to Project Lightspeed?

The best way to contribute to Lightspeed would be to join our Discord and join the conversation about the future of Lightspeed. I am a young developer and I want Lightspeed to be a project where other young devs can come to learn more through PR reviews.

Where do you see Project Lightspeed heading next?

Honestly, I really have no clue. I did not expect it to get this kind of reaction so I am still trying to get everything organized and then from there I would like to develop a roadmap with the community.

Where do you see software development in-general heading next?

I see software development moving to more functional languages and I see a focus on developer experience being brought into the design of new languages. 

What is your favorite part of open-source development?

I’ve really enjoyed talking to people interested in my project. I have had some great conversation regarding the future of Lightspeed and how to implement features etc. I also really enjoy reviewing PRs because I feel that reading code is a great way to learn.

Do you have any suggestions for someone trying to make their first contribution to an open-source project?

Lightspeed was my first ever contribution to open source so my suggestion would be to just do it! Usually people want to help so if you do something wrong in your code they will (hopefully) be nice enough to tell you what and why it is wrong. That is a really great way to learn and improve. 


Like what you saw here? Why not share it?

Share

Or, better yet, share Console!

Share Console

Also, don’t forget to subscribe to get a list of new open-source projects curated by an Amazon software engineer directly in your email every week.