Console

Wirestrustee, SQLModel, and prettymaps

Sponsorship

Kasm Workspaces - The Container Streaming Platform

Linux desktops and applications running in remote, disposable Docker containers delivered straight to your browser.  Simplify secure remote access or protect the endpoint via zero-trust browser isolation.  Deploy on-prem or in the cloud. Try it now (no installs, or signups)


Not subscribed to Console? Subscribe now to get a list of new open-source projects curated by an Amazon engineer in your email every week.

Already subscribed? Why not spread the word by forwarding Console to the best engineer you know?


Jobs

Want to be paid for contributing to open-source? Introducing…

the Console job board!

We already have some great open-source jobs from Canonical, SUSE, Brave, and many others. But, we’re looking for more!

If you’re an employer looking to get your job in front of thousands of the best engineers on the planet, you can request to post your job here.


Projects

prettymaps

prettymaps is a small set of Python functions to draw pretty maps from OpenStreetMap data. Based on osmnx, matplotlib and shapely libraries.

language: Jupyter Notebook, stars: 6728, watchers: 62, forks: 250, issues: 25,

last commit: October 01, 2021, first commit: March 05, 2021

social: https://twitter.com/marceloprates_

sqlmodel

SQLModel is a library for interacting with SQL databases from Python code, with Python objects.

language: Python, stars: 5314, watchers: 91, forks: 176, issues: 96

last commit: August 25, 2021, first commit: August 24, 2021

social: https://twitter.com/tiangolo

wiretrustee

Wirestrustee is a WireGuard-based mesh network that connects your devices into a single private network.

language: Go, stars: 1414, watchers: 28, forks: 38, issues: 20

last commit: September 27, 2021, first commit: May 01, 2021

social: https://wiretrustee.com/


Console is powered by donations. We use your donations to grow the newsletter readership via advertisement. If you’d like to see the newsletter reach more people, or would just like to show your appreciation for the projects featured in the newsletter, please consider a donation 😊

Donate To Console


An Interview With Mikhail Bragin of Wiretrustee

What is your background (where have you worked in the past, where are you from, how did you learn how to program, what languages or frameworks do you like, etc)?

I'm from Russia.

I have a BA in Information Systems and Technologies that I received in Moscow State University of Transport.

I have 10+ years of software engineering (mostly in Java) and management experience.

The funny fact is that until the 4th year of university I didn't really like to program and I didn't even imagine I would be a software engineer. However, once I had to solve a particular problem (we started an online store with my friends) I loved programming because I discovered the power I could possess :) 

I worked with the vehicle monitoring systems back in Russia (kinda IoT but back then it wasn't a mainstream :))

In 2012 I moved to Brazil to join PSafe - Brazilian cyber security startup headquartered in Rio De Janeiro. I worked on Lockbox - a Latin American Dropbox. The key advantage was higher upload / download speeds compared to Dropbox (due to local data hosting).

After this project I continued at PSafe and led a data analytics team for Psafe's most popular mobile antivirus app (100M+ installs on Android market).

In total, I spent 3+ years in Brazil and moved to Germany in late 2015 to join Searchmetrics.

At Searchmetrics I started as a Senior Java Developer in the search data team responsible for a number of distributed services and data processing pipelines.

I quickly grew to tech lead, then to team lead and finally business unit lead responsible for the core data layer of the company mostly doing management work (budget, planning, product, vision, etc).

In March 2021 I quit Searchmetrics and dedicated all of my time to Wiretrustee.

You could check my LinkedIn profile for further description of my career steps.

I like Java and Golang. I can also program JavaScript but it is not my favorite. In fact, the Wiretrustee dashboard application I programmed myself with React and Tailwind CSS.

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

I don't recall any outstanding examples. I’m usually in favor of a good and healthy argument and by the end of the discussion in 90% of cases people either agree with me or I agree with them.

Can you think of any arguments you've had in the past and what subjects they were about?

In my experience there were basically 2 dominant types of discussions.
Within the engineering team that I led, mostly programming and architecture related. And the ones with higher management - topics like budgets, plans, global migrations etc.

More you know about the product and how things are working the easier to "win" the discussions. Sounds simple, right? I was always curious about the details and how things are working even outside my team. This helped a lot :)

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

I can live without my smartphone, so that also applies to any app :).  Top ones that would make my life harder if removed are Chrome and my Banking app.

I would also recommend people checking Mysterium VPN.

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

Predictably Irrational, Revised: The Hidden Forces That Shape Our Decisions

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

Programming. You know why :), just joking.

First, there are many kids in need and I believe being able to program could give them a way to live a better life (I mean money-wise once they are able to work)

But probably, with that amount of specialists it won't be that profitable anymore, but it is a different story :)

Second, it develops logical thinking - programmers are mostly rational people :) it would be good to have more people like that.

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

My own business. My partner and I plan to offer Wiretrustee as a managed service. ZTNA (Zero Trust Network Access) is the future! 

What are you currently learning?

How to play tennis and I have made quite a bit of progress.

Also improving my golang skills. 

What have you been listening to lately?

Audible books about growth marketing. And since I live in Berlin - techno :)

Any favorite books so far?

1 Page Marketing Plan - this one is not actually about growth marketing but generally about marketing. It is pretty generic but explains the importance of a good marketing very well.
Another one is Growth Hacker Marketing - just started :)

Any techno recommendations?

Einmusik and Monolink.

How do you separate good project ideas from bad ones? 

It depends. But, usually just asking questions to understand if the idea really makes sense, how big is the problem that is being solved and how valuable the solution could be.

Asking questions to whom?

Let me rephrase the answer. If there is someone telling me about his/her idea there could be 2 instant outcomes - I feel the spark or not. If the idea sparks something in me then I do some research (e.g if there is something similar on the market or if it solves some problem) and ask more questions to the person who introduced the idea. Even if I don't have time (because of working on my own stuff) if the idea is cool I always spend some time researching it - just because of curiosity.

Pretty much the same with my ideas. And I also write down my conclusions and findings.

Why was Wiretrustee started?

There is a reddit post about it that I published in January 2021.

Shortly speaking - I wanted to host my personal data at home with easy access and without the hassle of configuring routers, setting up servers, firewalls etc. A plug n’ play device with an easy to use mobile app (similar to Google drive or next cloud).

There were two problems - software (network layer) and hardware.

While researching the topic I discovered Wireguard and learned a lot about NAT hole punching.

Apparently, Wireguard requires some configuration, lacks peer discovery and the hole punching mechanism. Well not that it lacks, but Wireguard itself is not supposed to do it.

So the software idea was born. 

At the same time Raspberry PI released compute module 4 with a PCIe slot which allows it to connect to drives. Before, it was only possible with USB to SATA magic which is not stable.

So the hardware was born - Wiretrustee CM4 SATA board.

Unfortunately, the current semiconductor market situation makes it complicated to produce.

Where did the name for Wiretrustee come from?

I was brainstorming and at some point it came to my head. 

Wire stands for a connection and trustee is basically a party that you can trust. So Wiretrustee creates a secure trusted connection between your peers :) of course with the help of Wireguard.

Are there any overarching goals of Wiretrustee that drive design or implementation?

We have a vision - secure private networks shouldn't be so complicated.

In fact, they are complicated now.  Look what happens in corporate networks - it is a maintenance hell :)

And our mission is to offer the easiest way of creating and maintaining secure private networks. This is the ultimate goal.

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

I think that the most challenging part is NAT hole punching. This technique makes it possible to discover connection candidates between peers (machines) and finally establish a peer to peer connection.

Luckily there are open source technologies like WebRTC pion/ice that cover most of our cases. We adopted it in our project. Big thank you to the pion team! 

By the way WebRTC is a common technology to establish peer to peer connection for a video call for instance.

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

Checking code :) We didn't have many bugs filed by the community so far but we released our first beta - let's see :)

What is the release process like for Wiretrustee?

We have CI/CD implemented with GitHub actions. 

Once a new tag has been pushed the release process is triggered automatically. E. g.

git tag v0.1.0-beta.1 

git push --tags 

Tests are going to be run (actually they run on every commit), code quality checks (go lint), then artifacts are created (Linux, Mac, Windows, docker images), then artifacts are pushed to repos (Deb, brew, docker hub, etc).

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

If so, how?

Managed version. There are quite a few things you need to deploy and manage. 

If one doesn't want to do so we will be offering a managed version running in the cloud. The only thing you would need to do is to register and account and install an agent. You can create a secure private peer to peer network in under 5 minutes. See this video. I didn't edit it yet but it showcases Wiretrustee in under 5 min :)

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

I quit my day job in March 2021 and since then I'm focusing on Wiretrustee. Wiretrustee is my full time job now :)

How has that been so far?  Are you enjoying it?  Is it stressful?

Was great! I could fully focus on Wiretrustee and I enjoy it a lot.
I think that working as an employee was more stressful :)

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

Try it out at

https://beta.wiretrustee.com

and star it on GitHub :)

Contact us via dev@wiretrustee.com if you would like to contribute.

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

More features (e.g. ACLs, exit Nodes), mobile clients, and scaling.

What do you mean by scaling? Where are the bottlenecks?

Well, currently there is a Management Server that is used to distribute network changes, discover new peers, etc. Also Signal Server that helps peers to negotiate connections.
While these are lightweight and don't deal with traffic they still should be horizontally scalable to distribute load and make the system more reliable.
That way if they are down - the existing Peer-to-Peer connections are not disrupted.
We are working on a solution that will leverage distributed DBs like etcd or rqlite.

What motivates you to continue contributing to Wiretrustee?

My belief in our vision and mission and of course the community interest.

Are there any other projects besides Wiretrustee that you’re working on?

Wiretrustee Sata Board. It is related but not directly. The two projects can exist independently.

However, the semiconductor market crisis has made us pause the board project.

Do you have any other project ideas that you haven’t started?

Hundreds :)

Care to elaborate?  Maybe your top 5?

Heh, that was exaggerated :). I always generate ideas and I don't remember myself not having a project on a side while doing my full time job. There is one idea worth mentioning laying in the area of search market research with some sharing economy concepts. Providing the biggest search data database with a flexible and easy to use dashboard builder to research competition, analyse market trends, discover new products etc. Most of the existing platforms are complex, not flexible and expensive.

I also have an idea in a completely different area. I was thinking to create a device that would allow you to do some tasks with kids (e.g. homework) remotely. E.g. a drawing table with a camera. So that you could see each other and share the workspace. Drawing something, solving some math tasks etc. This is handy for parents who don't see kids often either because of traveling or other reasons. I thought something like that exists, but couldn't really find anything suitable.
Additionally you could offer some learning apps that you could use together.

What are some examples of the existing platforms in the search market research space you mentioned?

The market leaders basically: Searchmetrics, Semrush, Conductor, etc.
These are good platforms but I think that the data access should be easier and more flexible. Offering the freedom of "slicing and dicing" data with a sort of interactive builder instead of fixed dashboards.

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

If you like a project, or using it, just write to contributors - they will find something for you :)