Home Web 3.0
Post
Cancel

Web 3.0

When you think of cryptocurrencies what is the first thing that comes to your mind? For some it might be digital gold, fast, reliable and cheap transaction fees. For others it will sound more along the lines of a scam, inefficient, an ecological disaster and a ponzi scheme whose downfall might bring down the whole economy.

Whatever your opinion is you will agree with me that most humans on earth don’t really care what technology that whole system is built on just as long as it provides you with a better alternative than the existing one. As a privileged person lucky enough to be living in a rich country I don’t see any benefit in using any of these coins other than buying illegal stuff out on the internet. Someone will surely correct me in the future for this but I don’t understand how replacing a centralized system where banks control and audit your transactions into a system controlled by a few mining corporation is going to change the world. I trust the math behind the algorithm, I don’t have the technical ability to doubt it anyway but how can we be sure that the person operating these evermore concentrated systems won’t fall pray to corruption? The silicon valley bank’s deposits were saved a couple of weeks ago by the government even though they were not insured passed 100 k dollars. Similarly, bitcoin’s block chain will soon attain 1 terabyte in size. Isn’t it possible that this ever growing computing power requirement will further concentrate the mining community? And what if say a rich person who owns 10% of the cryptocurrency gets scammed. Do you really think that person won’t be able to successfully lobby the few crypto minners to revert the transactions or git rebase the state of the system back to a past state? If you ever tried mining a coin with your computer you will surely know that it is not something that makes financial sense for a private citizen. You’ll end up paying more on electricity than you can ever get back on commissions which is for me the problem with this technology.

I don’t have a fully formed opinion on cryptocurrencies yet but what I can see is that we moved from the Web 1.0 world where users could only read what was online into Web 2.0 where users were able to read and write information into public networks. Everyone was happy with the state of affairs until they realized that all of their data was owned by a few multi billion dollar corporations who’s sole intention is to exploit your data, censor and manipulate your thoughts by serving you targeted ads. And so the Web 3.0 was born. In this day and age I do not want to beg facebook, instagram or tik tok for my data back I want to own it and have it stored on my servers. I realize that this is not manageable for everyone but judging how easy it is to set up a Tor bridge that helps ukrainians and chinese citizens bypass censorship by activating a chrome extension with 1 click I am certainly hopeful about the future. If you don’t believe me when I say Big tech does not have your best intentions in mind have a look at how google chrome wants to force all extensions to comply with Manifest v3 chrome and how they are planning to spoon feed you ads whether you like it or not. But Hugo don’t worry they wouldn’t do that and if they do there are plenty of other options to choose from out there. Are there really? Look closely at the building blocks of Brave, Opera or Microsoft Edge.

If you like dark comedy here is a funny video that explains how easy it is for governments to become dictatorships and how fragile democracy is:

Here are for me the top 10 projects that help me live outside of the marketing matrix created by GAFA.

Email

There are open source projects out there like Mail in a box that you can host yourself but they require you to have a fixed IP address at home which, depending on your internet service provider, can be expensive or outright impossible to do. Judging by how hard it is to setup all the bells and whistles and how vital these messages are I will stick to gmail for now and assume anything I write on there is practically the same as an open letter to advertisers, government and anyone else that has the security clearance to conduct mass surveillance on your data. There are other alternatives out there like mailbox.org who promise not to snoop on your data for 3 euros a month. The website says that they are certified by the German government but we all know Wirecard, the fraudulent German payment platform. They successfully hid 2 billion euros from the BaFin (Federal Financial Supervisory Authority) and got away with it. Anyways, I might come back to this topic in the future.

Notepad

Have you ever tried trello? I find it very useful when mapping out my ideas or when I have a large amount of tasks to do. I just add them into a kanban style board and follow up on these tasks by dragging and dropping cards around. And this is where the open source copycat Trellis fills in most if not all of my needs in terms of ease of use and practicality. It is running on a mongo database that is sitting on your computer so no one can touch it and you can also access it wherever you are since it provides a nice UI to authenticate yourself over the internet.

I use Trellis every single day and I could not live without it. I’ve added a missing feature for handling delete action in a slightly better way. This project is also small enough to modify and make tweaks yourself. I see a lot of other github projects out there that over engineer their products which makes it harder to grasp how the different bits and pieces fit together.

Here’s the architecture of Trellis. I find it useful to keep these specifications around in case I need to tweak the code, make changes or simply restart the services

trello

Password manager

Zero knowledge architecture apps are changing the game for password managers. I find them truly game changing because in a low trust world it can be hard to switch to a new system. After all, what guarantees do you have that this new piece of software will protect your data any better than the one you’re currently using? Zero knowledge architectures tackle this problem by saying: “You don’t need to trust us”, the password manager itself does not store or know your password. So how does this work you might ask? With this new paradigm you can rely on clever math to convince your password manager that you are the owner of the vault through a system of proof. In practice what your password manager does is reverse the hashing function an enormous amount of times so that the probability that you would have simply guessed the password to be lower than a certain probability threshold say 0.000000000000000000000000000008432

If you want to see it for yourself head onto bitwarden.com and try out their free and open source password manager. The password manager has built in extensions that allow you to do everything without leaving your browser’s page.

Video call

I’ve experimented with two types of technology when it comes to broadcasting video and these are called WebRTC and RTMP. WebRTC runs on your browser mainly and is very simple and easy to set up as opposed to the RTMP route which requires a modern graphics card and a lot more plumbing. The downside to WebRTC being a newer technology is that it is prone to bugs and vulnerabilities. This is of course temporary and will resolve itself with time but it’s important to keep that in mind. I’ve also read in an article that WebRTC exposes your IP address which can be a nuisance if hackers decide to DDOS your home network.

Anyways let’s get into the code. Like I said, WebRTC requires a minimal setup since all the magic is done inside of your browser so here is a minimal setup written in plain javascript

screenshare

And if you decide to try out RTMP, which is short for Real-Time Messaging Protocol, you can run nginx in the background to encode your .ts stream files into an HLS file that your browser can play. If you’re looking for a complete guide on how to set this up I highly recommend Nerd on the street’s video and blog post.

streaming-pancakes

Web analytics

Now this is an interesting project. If you’re a curious person and want to understand how visitors interact with your content you’ll quickly be disappointed with google analytics. It provides some broad information about how many users are connected in real time and the country from which they are connected from and that’s all fine and great. The only problem here is that you’re basically giving away all that information to google for free and get very little insight in return. What if there was a new way to track every single mouse click and measure time spent on every page? What if I told you that you could host it all on a local postgres database and never even need to write a single line of SQL to make sense of that data? You’ve guessed it, it’s here and it’s called Posthog. Now I’m sure there are plenty of other open source projects out there that do the same thing but this one is written in a Python React Celery Redis stack that I can undestand and easily modify.

Celery and Redis are used to offload the pressure on the python app by providing a queue like system that allows you to queue asynchronous job with Python. It’s pretty neat and clever you should definitely check it out.

Here’s a link to my fork and if you ever plan on setting this up yourself here is the system you will be building:

posthog

Cooking and grocery shopping

How many times have you forgotten a recipe because you either forgot to bookmark it or because your bookmark bar is bloated with millions of unsorted pages that you can’t be bothered to organize? This is where mealie comes in. It allows you to add bookmarks that automatically parse recipes on the web. I also use it to plan out my meals and automatically generate a grocery shopping list based on the meals I plan on cooking.

This fast api web app uses the popular vue framework to handle all of the javascript frontend

posthog

An online shop

Now this next one is actually a project I made for a close relative who needed a way to organize her book store. It features a payment provider integration and uses Sendgrid to notify her that someone wants to buy a certain book.

posthog

A CV or portfolio

I often ask myself what the typical day of a fulltime programmer might be. You could think that his/her work revolves around writting code and thinking about algorithms to solve practical issues right? Well in the case of a freelance web developer/hobbyst I would say that programming actually represents 10% of the time spent on the project. The other 90% of the work is troubleshooting/configuring packaging and deployment tasks and most of all: writing CSS. This next project is about moving away from your classical PDF resume that you upload or send out via email. What if you could impress your employer by sending out a serverless webpage that features some cool css animations?

You could apply this knowledge for your own needs of course. I am aware that not everyone is looking for a front end developer job in which case this online CV does not help them demonstrate any valuable skills since that’s not what those specific employers are looking for. As an accountant you could send out invoices and documents with some cool features like online signature or links that self destruct after a few hours.

In this fork I don’t use my own infrastructure but you could easily host this yourself with Nginx or Apache and achieve the same thing.

posthog

This next project is an interesting one because you can do everything from the command line. You tell it where your pictures are and it will search down the folder tree and compress your pictures so that you can view them on your favorite browser without having to wait hours for the page to load. What’s nifty about it is that you can use a folder structure like year>month>event name>image and thumbsup will create those sub pages for you to navigate without needing to specify a single controller or a view for that matter. What this single command does is create a static website that you can then host anywhere you feel like.

Here is a link to the official repo

I’m planning to make some changes to this project but have not found the time lately. Tag along if you’re interested in what features I want to add to it. Here’s what it looks like right now:

posthog

This one is quite satisfying to build. When browsing potential candidates on the open source market I realized most of them had some kind of insidious interest in using it. I don’t blame them, content creators need revenue so writing up a program that features a rich sponsor is too good to pass. Checkout how many of the “open source” proejcts featured by youtubers have some kind of Firebase backend or require you to pay for a premium version of Pastebin to use. In my case I couldn’t find any good video gallery out there so I forked an existing one and stripped out all of the paid libraries it was using. My project was using Cloudinary to store the video files people upload to the website. That’s all fine and it works great but I didn’t want to hit a paywall eventually and I certainly did not want my private videos to be “owned” by some unknown third party provider who will probably make it hard for me to switch or retrieve my data.

If you want a self managed youtube like video gallery and feel comfortable using Python and React I would recommend you fork my project on github and make it yours. Link for the frontend: link, link for the backend code: link

If you ever plan on setting this up yourself here is the system you will be building:

posthog

This post is licensed under CC BY 4.0 by the author.