Console 47

OrbitDB, Infracost, and Deep Daze

Sponsorships

Day One Fellowship Cohort 3

Starting a business is hard, lonely, confusing, and too many founders don't make it through the early stages or have the foundations to succeed.

Enter: The Day One Fellowship, a community and 10-week cohort based program where founders develop startup ideas, validate market interest, and build products and services that customers actually want. With Day One you receive 1:1 coaching and accountability from experienced startup mentors, along with a tight-knit peer group and a network of hundreds of founders, mentors and investors.

Learn more and apply now for Cohort 3, which kicks off April 25th.


OrbitDB

OrbitDB is a peer-to-peer database for the decentralized web.

language: JavaScript, stars: 5517, watchers: 157, forks: 371, issues: 121

last commit: March 20, 2021, first commit: December 26, 2015

https://twitter.com/orbit_db

brotab

brotab allows you to control your browser’s tabs from the command line.

language: Python, stars: 139, watchers: 9, forks: 13, issues: 23

last commit: June 02, 2020, first commit: August 10, 2017

infracost

Infracost allows you to get cloud cost estimates for Terraform in your CLI and pull requests.

language: Go, stars: 2759, watchers: 39, forks: 106, issues: 70

last commit: April 01, 2021, first commit: June 19, 2020

https://twitter.com/aliscott

deep-daze

Deep Daze is a simple command line tool for text to image generation using OpenAI’s CLIP and Siren.

language: Python, stars: 2872, watchers: 62, forks: 180, issues: 41

last commit: April 02, 2021, first commit: January 17, 2021

https://twitter.com/lucidrains

https://twitter.com/advadnoun


Help Wanted

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


An Interview With Mark of OrbitDB

Hey Mark! Let’s start with your background. How did you learn how to program and what languages or frameworks do you like?

I’m a musician by education, and now 15 years later I’m a self-taught programmer and engineering manager by trade. Luckily for me, my father slammed K&R’s book on C in front of me because I was playing too many video games in middle school.

I like JavaScript a lot, and lately I’ve become very in love with Rust. I also like anything adjacent to the “permaweb” class of software like IPFS, libp2p, and of course OrbitDB.

I'm guessing by the Nuno Bettencourt comment below that your primary instrument is Guitar?

Haha yup. Classical guitar in school. Ended up with a bachelor of music performance with a dual emphasis in music business and sound recording technology.

It seems to be fairly common for musicians to transition to computer science. The similarities between the two domains has always been interesting to me. Why do you think it is that musicians so frequently make the transition into programming?

The lack of music jobs 😂

I wonder why we all looked around and thought "alright, if not this, then programming", though?

Yeah I'm not sure, I came up through Web design so I think it was a calculus of "well it's still sorta creative, and pays the rent...”. But, you could also go into things like pattern recognition and structured discrete mathematics... But, that's above my pay grade.

or, even carpentry, or hospitality, right? It doesn't even have to be something intellectual that you decide to do for money. It just seems like an overwhelming majority choose programming.

It's very true. There was something hanging in the music building at school about how the guy that designed part of the original Mac was a programmer and he designed it specifically for some pre-MIDI sequencing / composition. So, maybe this meme is older than us.

I guess it will forever be a mystery. Anyway, back to software, who or what are your biggest influences as a developer?

I have a very close friend that is always my go-to for side projects, Jordyn Bonds aka @skybondsor. We have a unique balance that’s hard to find and we always end up creating great stuff, like TallyLab.

Lately, I’m just amazed by the team I get to work with at Equilibrium - they’re miracle workers and better at software engineering than I ever was. We’re hiring, by the way!

What’s your most controversial programming opinion?

Plain HTML and CSS are just fine, 99% of the time :)

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

Metamask

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

Finite and Infinite Games.

If you could teach every 12 year old in the world one thing, what would it be and why?

This came to me from two people - Nuno Bettencourt’s dad (yes, the guitarist from Extreme), and an artist named Jon Sarkin: Just start making stuff. Don’t worry if it’s gonna make money, don’t worry if it’s the “right way.” Make it, fix it, get better, repeat. Everything else is a by-product of that.

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

Non-Fungible Tokens

What are you currently learning?

How to be a better person to work with, every day.

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

Our #random channel at Equilibrium does the trick right now. Did I mention we’re hiring?

How do you separate good project ideas from bad ones?

I’m a person with ADHD so I’ve resigned myself to the idea that if I don’t remember an idea I had, it was probably not a keeper.

Why was OrbitDB started?

OrbitDB was started by Samuli aka @haadcode to solve the problem of performant, mutable data on IPFS.

Who, or what was the biggest inspiration for OrbitDB?

If necessity is the mother of all invention, what is the father?

Are there any overarching goals of OrbitDB that drive design or implementation? If so, what trade-offs have been made in OrbitDB as a consequence of these goals?

Right now we’re working towards a 1.0 release. This means aggressive performance refactoring, benchmarking, testing, and more testing. OrbitDB works. It works well. There are still things it can do better and that’s what we’re tackling right now.

The trade-off here is that to do it well, we need dedicated resources. To get dedicated resources, we need funding. To get funding in the space right now you’re looking at development grants and corporate sponsorship. Things are in the works and we’re right at the starting line.

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

OrbitDB’s “magic” is its implementation of the Conflict-free Replicated Data Type (CRDT). Samuli would be able to tell you more about this, but CRDTs are a fantastic data structure that use logical clocks for consensus, giving strong eventual consistency without the use of a Blockchain.

You can’t protect against, say, double-spend with OrbitDB, but you can do most anything else.

Can you point us to where in the OrbitDB code the CRDTs are being used?

Sure, it's all in this package here: https://github.com/orbitdb/ipfs-log. Basically, it creates a blockchain-like linked list of entries that refer backwards by hash. Each entry has something called a "Lamport Clock" which contains a node ID (usually your public key) and a logical clock value like 1, 2, 3, 4. After you retrieve all the entries you sort by the clock values, then by Node ID. That gives you total ordering.

Do you think there was a particular insight Samuli had with respect to how he used CRDTs that allowed for this performant mutable data on IPFS?

I can't speak for Samuli but I believe that it came out of necessity and the idea of the CRDT was formalized a bit later.

What was the most surprising thing you learned while working on OrbitDB?

Did you know that if you fly into the EU, and then have a layover and a flight to another EU airport, you can just WALK out of that airport and skip customs entirely? I had no idea, I thought I was going to get tackled but nope, you can just waltz on out.

What is the release process like for OrbitDB?

OrbitDB is split into about two-dozen modules, essentially npm packages. This makes development fairly streamlined because they can be versioned independently. 

The trade off is that we do something called the “publish dance” every time we want to make a release. We make RC versions of every package that changed, test OrbitDB as a whole, then test it in a few of our user’s projects, like 3Box.

What is the main source of revenue for OrbitDB?

We have an OpenCollective that’s just kinda sitting there right now. We also apply for development grants and seek corporate sponsorship.

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

I don’t know, ask me when my state’s COVID score is back to green :(

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

I’m sensitive to the ideas that any of these decentralized + distributed technologies are capable of doing harm, and I truly think about it every day. There’s no way around it. I still believe that once all this is said and done the good will outweigh the harm, and by a large margin. 

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

Be loud on the open PRs until you browbeat people into finishing them. No, seriously - there’s a lot of really good improvements waiting to be reviewed, documented, and tested. Grab a shovel and get contribution cred.

If you plan to continue developing OrbitDB, where do you see the project heading next?

On the Road to 1.0

Where do you see open-source heading next?

Development grants have made a huge rise, and seem to be here to stay. If your project can improve, implement, or augment another popular project with a foundation behind it, you can get a lot of mileage out of helping them out and getting paid for it.

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

Click the “Create a PR” button. It’ll be OK! We’re not all jerks in open-source, despite what you’ve been told.


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.