Tuesday, November 25, 2025

webrtc p2p social network prototype working.









Building Decentralized Social Media: A Peer-to-Peer Alternative to Facebook

By John Sowal, presented at the Dojo

The Problem with Centralized Platforms

As someone who's been involved in internet infrastructure since the early days—building some of the earliest CDNs in '92-'94 and working on streaming video—I've watched the evolution of social media with growing concern. The Twitter Files revelations and ongoing issues with Facebook have made one thing clear: we need alternatives to centralized social media platforms.

The core problem is simple but fundamental. As Jack Dorsey pointed out, any company-based platform is vulnerable. The moment you incorporate, governments can issue subpoenas, apply pressure, and force compromises. The result? Increasingly aggressive content moderation that goes far beyond preventing genuine harm.

Real-World Censorship Examples

The filtering has become absurdly disruptive:

  • Getting banned for posting clips from Hollywood movies
  • Facebook jail memes and pins have become so common they're being sold as merchandise
  • Feeds filled with algorithmic content instead of posts from actual friends
  • Legitimate technical content blocked by AI filters (try sharing information about Yasa electric motors—it's blocked because a Turkish politician shares the name)
  • Humor and satire flagged as "false information"

I just want to do what I did with my BBS in 1987—one of the largest in the Bay Area, called Turbo Sysco. Back then, we'd share San Jose Mercury tech articles and discuss them freely. Today, that simple activity feels impossible on Facebook.

The Technical Vision

Can we build something better using modern browser capabilities? The answer is yes. Today's browsers are incredibly powerful:

  • Enormous compute resources: Access to GPU, WebGL, WebGPU
  • Significant storage: Browser-based storage systems
  • WebRTC: Enables mesh networking between peers
  • Flexible data management: Ability to simulate drives, export/import databases

The architecture I envisioned uses relays with WebRTC to establish connections between nodes, creating a truly distributed system where code executes in browser tabs rather than on centralized servers.

Exploring Existing Solutions

Before building from scratch, I surveyed the landscape:

PureJS

Interesting pure JavaScript implementation, but lacked the full feature set needed.

Croquet

Really impressive real-time synchronization. Their demo shows perfect timing across devices—open it on your phone and desktop, and they stay in perfect sync. The platform can run server modules directly in the browser, generating and rendering content while keeping everyone synchronized for gaming and interactive experiences.

The catch? You need an account with them. If the FBI or anyone else wanted to shut you down, they could simply turn off your account. Still centralized.

CYFS

Very interesting—they actually implemented something remarkably close to what I had sketched out independently.

Gun (by Mark Nadal)

I met Mark Nadal at the Dojo about a month ago, and his architecture is exactly what I had sketched out. It uses relays for WebRTC introductions (just like I proposed), but they're simply backups—the real communication happens peer-to-peer. I've been working hard to implement this, though as someone who isn't primarily a Node developer, it's been a brutal learning curve. (ChatGPT has been invaluable for deciphering the alphabet soup of modern web libraries.)

Nostr

The newest entrant, and it shows real promise. Unlike Mastodon's federated approach, Nostr is more censorship-resistant. While relay operators can filter content, your data persists on the protocol indefinitely. There's no central authority that can remove you entirely.

Mastodon vs. Nostr: Federation vs. True Distribution

Mastodon is distributed but federated. My experience showed that you can still get booted from instances for simply publishing links. Because there are people managing these relays, moderation creeps back in.

Nostr, on the other hand, can't be stopped in the same way. Individual relays might filter you, but your data remains on the protocol. As one attendee noted: "there's no filter—it's beautiful."

However, Nostr isn't truly peer-to-peer; everything still goes through relays. Gun's approach is more aligned with pure P2P, using relays only for initial introductions.

My Vision: Radical Transparency Without Interference

Here's my position: I don't even want to encrypt everything. If authorities want to monitor conversations, fine—do it in clear text. What I object to is the interference, the filtering, the fact-checking, the blocked links.

If I'm posting something illegal, let the FBI arrest me. But don't interfere with normal conversation. The bar for censorship has become absurdly low.

I want:

  • A Facebook-like site where I can chat with friends
  • The ability to share links without arbitrary blocking
  • Discussion of news articles without algorithmic interference
  • No "old lady in the middle of the conversation judging everything"

Technical Advantages

A truly peer-to-peer system offers compelling benefits:

  • Zero bandwidth costs: Pull as much data as fast as you want
  • No server fees: No backend infrastructure to maintain
  • Resilience: No central point of failure
  • Static hosting: Code can live on GitHub Pages—free and reliable
  • Rich capabilities: Build virtual worlds, 3D animations, VR experiences, multiplayer interactive content
  • User control: Each person can run their own relay if desired

Addressing Concerns

Q: Won't peer-to-peer put illegal content on my computer?

Ideally, encryption or other mechanisms prevent you from accessing cached content. More importantly, if designed as a caching system, you're only keeping copies of content you've actually viewed—not redistributing material you never looked at.

Q: How will people find each other without indexing?

Through direct sharing of keys, handles, or identifiers. In my case, I have my own domain and can run a relay, making myself discoverable. Users can share their connection information directly with friends.

The Path Forward

We're at a crossroads. The centralized social media experiment has shown its limitations. Censorship, algorithmic manipulation, and corporate vulnerability to government pressure have made these platforms increasingly hostile to free discourse.

The technology exists today to build alternatives. WebRTC, modern browsers, and systems like Gun and Nostr provide the building blocks. What we need is the will to build these systems and the community to adopt them.

The future of social media doesn't have to run through Silicon Valley data centers. It can run in your browser, connecting directly to your friends, with no intermediary deciding what you can say or share.


Interested in learning more about peer-to-peer social networking? Check out these projects:

  • Gun - Decentralized database with P2P sync
  • Nostr - Censorship-resistant social protocol
  • Croquet - Real-time synchronized multiplayer platform
  • CYFS - Decentralized file system

What are your thoughts on decentralized social media? Share your perspective in the comments below.

I am on windows 11 how do I get ffmpeg?

I am on windows 11 how do I get ffmpeg?

Option 1: Using winget (Built into Windows 11) - EASIEST

Open Command Prompt or PowerShell and run:

winget
install ffmpeg

That's it! Restart your terminal and FFmpeg should be ready to use.

Option 2: Manual Installation

  1. Download FFmpeg
  2. Extract the files
    • Extract the ZIP file to a folder like C:\ffmpeg
  3. Add to PATH
    • Press Win + X and select "System"
    • Click "Advanced system settings" on the right
    • Click "Environment Variables"
    • Under "System variables", find and select "Path", then click "Edit"
    • Click "New" and add: C:\ffmpeg\bin
    • Click "OK" on all windows
  4. Verify installation
    • Open a new Command Prompt or PowerShell
    • Type: ffmpeg -version

Option 3: Using Chocolatey (if you have it)

choco install ffmpeg


After installation, you can run the conversion commands I showed earlier. The winget method is the quickest if you just want to get started right away!

Monday, November 24, 2025

China’s new AI-based video capsule

 

Wednesday, October 11, 2023

Eulerian Video Magnification


The video accompanying our SIGGRAPH 2012 paper "Eulerian Video Magnification for Revealing Subtle Changes in the World".


Read more about it here: http://people.csail.mit.edu/mrub/vidmag/

Software and Code

 

Eulerian Video Magnification code
Matlab code and executables implementing Eulerian video processing for amplifying color and motion changes.

Phase Based Video Motion Processing code
Matlab code implementing the new and improved phase-based motion magnification pipeline.

Learning-based Video Motion Magnification code
Tensorflow implementation of the learning-based motion magnification pipeline.

Videoscope
Web interface for motion and color magnification. Upload your videos and have them magnified!

 

Wednesday, September 13, 2023

Tuesday, August 22, 2023

Was this plumber Intentionally scamming this Elderly widower?#plumbing #...


This customer’s kitchen sink has clogged three times in the last 60 days and each time the plumber charged the customer a new fee, his friend recommended this plumber so he trusted him. The plumber never put a camera down to see that the line had a grease blockage he probably would of kept on poking holes and charging this poor guy fees til the end of time had he not decided to get second opinion.... Smh what is wrong with people these days? Elderly abuse is as bad as child abuse in my eyes and it takes a real despicable individual to abuse the Elderly or Children..... Society has no place for people like that. All of my Flex Shaft cables and Flex shaft knockers come from Plumber-Tools.com, Through my extensive research and experience I've found the Plumber-Tools.com Cables are The most high quality true flex shaft cables you can find on the market, We are talking comparable if not the exact same cable as some of the bigger names in the Flex shaft world. I always call them Picote or European cables because they're more of a steel color than the goldish brass color of the RIDGID cables. The reason I had originally switched over to the Plumber-Tools.com cables was because the RIDGID cables did not seem to hold up very well, I noticed after just about six months of fairly heavy use the cable looked like it was unraveling, repairing the Ridgid cables was a serious pain at that time it required you heat the cable red hot and feed some silver brazing rod onto the damaged part of the cable before you could cut it with a grander, The Plumber Tools cables can just be cut directly with a grinder no need for heating up and brazing the cable first. That is not the only thing that set the Plumber-Tools.com cable apart from other competing brands .

Sunday, August 13, 2023

Sun Micro Systems - Scott McNealy , First Global Internet Stream Decembe...





Sun Micro Systems - Scott McNealy , First Global Internet Stream December 1992.

I need a old copy of Solaris 2.4 or 2.5 on a SparkStation or emulator to capture an Mpeg4 of this.

player will play TESTME or holliday greeting 1992 files out to local audio and standard Xwindow.

Still looking for the source code for these.

This should be a precursor to : Sun's CellB Video Encoding rfc2029

http://www.cs.columbia.edu/~hgs/rtp/drafts/draft-ietf-avt-cellb-06.txt

"CellB, derived from CellA, has been optimized for network-based video applications. It is computationally symmetric in both encode and decode. CellB utilizes a fixed colormap and vector quantization techniques in the YUV color space to achieve compression."

I came in and implemented that change to there codec in a few days, and did the stream, I have no idea what happened to that code after I left my brief contract in 1992.

John





Tuesday, August 01, 2023

Universal Media Server: Streamlining Your Media Sharing Experience

 In today's fast-paced digital age, our lives are intertwined with various smart devices. We capture memories through images, listen to music on the go, and indulge in our favorite movies and TV shows whenever we desire. However, as the number of devices we own increases, the need for seamless media sharing becomes apparent. Universal Media Server (UMS) emerges as the ultimate solution, providing a DLNA-compliant UPnP Media Server capable of effortlessly sharing video, audio, and images across most modern devices.

A Heritage of Stability: From PS3 Media Server to Universal Media Server

UMS has a rich history rooted in the popular PS3 Media Server, created by shagrath. The objective behind developing Universal Media Server was to enhance stability and file-compatibility, guaranteeing a smoother user experience. Building on the foundations of PS3 Media Server, UMS adopted an array of improvements and new features, making it a robust and versatile media server for all.

DLNA and UPnP: Powering Seamless Media Sharing

DLNA (Digital Living Network Alliance) and UPnP (Universal Plug and Play) are the technologies behind UMS's ability to share media across devices. DLNA provides a set of guidelines for compatible devices to discover and communicate with each other over a network. UPnP, on the other hand, facilitates the automatic discovery and configuration of devices within a network. These two technologies work harmoniously within UMS, enabling it to act as a bridge between various devices, ensuring your media content is accessible on all connected platforms.

Features and Benefits of Universal Media Server

1. Wide Device Compatibility: UMS supports an extensive range of devices, including smart TVs, gaming consoles, smartphones, tablets, and more. Regardless of the manufacturer, as long as the devices are DLNA-compliant, UMS will efficiently cater to your media-sharing needs.

2. Streaming on the Go: With UMS, you can enjoy your favorite videos, music, and images on the go. Whether you're lounging in your living room or traveling to a different city, as long as you have an internet connection, your media content will be just a few taps away.

3. Customizable Transcoding: Not all devices support the same media formats. UMS takes care of this by offering transcoding capabilities, converting media files on-the-fly to a format compatible with the target device. This ensures smooth playback on devices with limited format support.

4. User-Friendly Interface: UMS boasts an intuitive and user-friendly interface that simplifies the media-sharing process. Even those who aren't tech-savvy can navigate and set up the server with ease.

5. Regular Updates and Support: The development team behind UMS is dedicated to providing constant updates, bug fixes, and new features to enhance the overall user experience. Additionally, an active community of users ensures a wealth of support and assistance when needed.

Setting Up Universal Media Server

Getting started with UMS is a breeze. Simply download the software from the official website and install it on your computer. Once installed, you can customize the settings according to your preferences. Then, start adding your media libraries, and UMS will take care of the rest. Within minutes, your media will be accessible across all your connected devices.

Conclusion

In conclusion, Universal Media Server has successfully evolved from its predecessor, PS3 Media Server, to become a dependable and versatile media-sharing solution. Its DLNA-compliant UPnP Media Server capabilities, combined with its wide device compatibility and user-friendly interface, make it an ideal choice for anyone looking to streamline their media-sharing experience. With UMS, you can effortlessly share videos, audio, and images across modern devices, ensuring your cherished memories and entertainment content are always within reach. So, why wait? Embrace the world of Universal Media Server and revolutionize your media-sharing journey today.


https://github.com/UniversalMediaServer/UniversalMediaServer

https://www.universalmediaserver.com/


Saturday, May 13, 2023

Here's a simple example of a VR project in Three.js, updated for WebXR:

 Here's a simple example of a VR project in Three.js, updated for WebXR:

javascript
let renderer, scene, camera; let controller1, controller2; let xrControllerModelFactory; init(); animate(); function init() { // Set up the WebGL renderer renderer = new THREE.WebGLRenderer({ antialias: true }); document.body.appendChild(renderer.domElement); // Set up the scene scene = new THREE.Scene(); // Set up the camera camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); // Set up VR renderer.xr.enabled = true; navigator.xr.isSessionSupported('immersive-vr').then(function(supported) { if (supported) { const button = new VRButton.createButton(renderer); // You need to implement VRButton or use the one provided by Three.js examples document.body.appendChild(button); } }); // Set up controllers controller1 = renderer.xr.getController(0); scene.add(controller1); controller2 = renderer.xr.getController(1); scene.add(controller2); xrControllerModelFactory = new XRControllerModelFactory(); const controllerModel1 = xrControllerModelFactory.createControllerModel(controller1); controller1.add(controllerModel1); const controllerModel2 = xrControllerModelFactory.createControllerModel(controller2); controller2.add(controllerModel2); // Add other objects to your scene here } function animate() { renderer.setAnimationLoop(render); } function render() { // Render the scene through the camera renderer.render(scene, camera); }

In this example, we're setting up a Three.js scene with a single camera and enabling WebXR. We're also adding controllers, which will be represented in the VR scene and will move to match the movements of the user's VR controllers. Finally, we're setting up an animation loop to continuously render the scene.

Please note that this is a simple example and a real WebXR application might involve more complex setups including interaction handling, complex 3D models, and more. Remember to include the three.js library and any additional libraries like XRControllerModelFactory which is used to create 3D models of the XR controllers.