- May 2024
-
codesandbox.io codesandbox.io
-
Whenever it reads from block 3 after this, it will read from its own block 3.
reads from its own block 2
-
using copy-on-write (CoW)
Copy-on-write,
like the name implies,
will only copy data
when we start writing to it.
Our previous mmap example also uses
copy-on-write if MAP_SHARED is not passed.
-
Getting
Getting the clone time down to milliseconds
-
When we actually want to save the snapshot
we'll only have to sync back a little amount!
-
The kernel does this lazily
The kernel does this lazily:
whenever it has a bit of time on its hands,
it will flush the changes back to the file.
-
a “mapping” of a given file to memory
as in Emacs of old!
-
need to find a way where we don't have to write so many bytes to disk.
save on bytes to write on disk
-
Saving
Saving snapshots faster
-
cut down on serialisation time.
yes
-
start a server with an internal in-memory counte
-
The darker art
The darker art of cloning memory snapshots
-
when switching branches, because it's a fresh environment
switching branch fresh environment
-
There's a catch
There's a catch to it as well.
Saving a memory snapshot actually takes a while, which I'll cover in this post.
-
hibernate a VM, we pause it and save its memory to disk
pause and save memory
-
if the VM has 4GB memory, this file will be 4GB
4GB
-
not only pause your code, it pauses the full machine, full-stop down to the kernel.
pause the machine
-
also resumes
spawns and resumes VMx
-
The dark art
The dark art of memory snapshotting
-
Firecracker
Firecracker to the rescue
-
The challenge
The challenge: spinning up a development environment in two seconds
-
memory snapshotting.
yah
-
et a running MicroVM within 300 milliseconds
micro VM in 300 milliseconds
-
If you wanted to run a big project that requires Docker, it wouldn't work
required docker would not work
-
How we clone a running VM in 2 seconds
-
-
How we clone a running VM in 2 seconds
How we clone a running VM in 2 seconds
-
How we clone a running VM in 2 seconds
x
-
-
discuss.ipfs.tech discuss.ipfs.tech
-
How to retrieve content uploaded via Helia using the IPFS gateway?
helia ipfs
-
-
stackoverflow.com stackoverflow.com
-
Render HTML to an image
x
-
-
news.ycombinator.com news.ycombinator.com
-
We need more of these build-it-once peer to peer serverless webpages.
build-it-once
- P2P
- Bring Your Own Browser BYOB Native
- No Server, Everyone is capable of serving
- anti database
- grow together for evergreen
-
I2P which, unlike Tor, supports UDP.
-
Chitchatter uses https://github.com/dmotz/trystero for peer connectivity,
chitchatter trystero connectivity
-
don't care if some messages are dropped (as chatters can figure it out using human brains)
chatters human minds
-
And if you trust github/Microsoft to not play games on what is delivered to you (say, because someone backed by the patriot act asked them to).
patriot act
-
Also the Chitchatter client is web-based, so you can just share a room link without anyone having to install anything to participate.
nothing to install to participate
-
nl on Sept 6, 2022 | root | parent | next [–] https://github.com/dmotz/trystero#how-it-works
trystero how it works
-
For anyone who is interested to learn more about Chitchatter, please check out the project README: https://github.com/jeremyckahn/chitchatter#readme
chitchatter HN
-
-
en.wikipedia.org en.wikipedia.org
-
The Invisible Internet Project (I2P) is an anonymous network layer (implemented as a mix network) that allows for censorship-resistant, peer-to-peer communication.
from: HN chitchatter trystero
what a shame it is so invisible. Roamed around in P2P research space on and off before encountering. Obviouslyu lack of diligence but still
We need I3P InterPlaterary InterPersonal Invisible Project
-
-
-
Web logger based on indexedDB and WebWorker
weblogger
-
-
theuncloud.co theuncloud.co
-
UnCloud docs
p2p chat system
-
-
github.com github.com
-
for: IndyWeb
-
is still limited by a key feature of the web: Creating and Hosting servers.
hosting servers
-
local-first-cyberspace
local-first
-
WebXR flips this on it's head.
WwbXR flips it on it's head
-
A roadmap for realizing a local-first and offline-first cyberspace
l1cs
Tags
Annotators
URL
-
-
www.w3.org www.w3.org
-
WebXR Device API
-
-
blog.mauve.moe blog.mauve.moe
-
Local First Cyberspace Components
follow up
-
-
github.com github.com
-
Error when opening newly created post on ipns sutty site
ipns agregore cache
-
-
github.com github.com
-
Compare writable IPFS gateway with js-ipfs-fetch
ipns cached
-
-
github.com github.com
-
A High-Fidelity Web Archiving Extension for Chrome and Chromium based browsers!
-
-
github.com github.com
-
Hypercore Protocol A fast, scalable, and secure peer-to-peer protocol for everyone
-
-
-
Server-sent events for Go
interesting
-
-
ipfs.indy0.net ipfs.indy0.net
-
I created this temporary group chat in order to provide a place that we can post a message among the four of us as needed.
Looks like it does work
-
IndyWeb 🦅 (alpha team)
could create a private annotation group But I do not see the point
Actually all this is to empower the Open Learning Commons and the Indy Learning Commons
-
-
www.youtube.com www.youtube.com
-
remember feeling like a genius when I implemented my first abstraction Factory Singleton proxy decorator in JavaScript
You have been fooled at industrial scale
Javascript's greatest gift to Mankind
as Douglas Crockford the author of "Javascript the Good Parts" said:
Class-free Objects
Now that is just too empowering an idea
let's turn Javascript into Java
and perpetuate all the gratuitous complications that Java is infested with
simply because the underlying concepts are deeply limiting
-
I wish I would have written less code
code is not assets
but a liability
-
10 regrets of experienced programmers
I recently asked "You are on your deathbed, what do you regret the most about programming?". Let's break down the biggest mistakes shared by most software engineers.
-
recently I volunteered my time at a hospice center for dying programmers also known as X and I asked the question
x
-
-
developer.mozilla.org developer.mozilla.org
-
Element: querySelectorAll() method
document.querySelectorAll('meta[property="og:image"]')[0].content
do.how - open graph image
-
-
www.thebeatles.com www.thebeatles.com
-
- There's nothing you can do that can't be done.
- Nothing you can sing that can't be sung.
-
Nothing you can say but you can learn how to play the game.
-
Nothing you can make that can't be made.
- No one you can save that can't be saved.
-
Nothing you can do, but you can learn how to be you in time.
-
There's nothing you can know that isn't known. ❌‽
- Nothing you can see that isn't shown. ❌‽
- Nowhere you can be that isn't where you're meant to be. It's easy
-
Nothing you can do, but you can learn how to be you in time.
learn how to be you thorugh time
-
-
en.wikipedia.org en.wikipedia.org
-
Isomorphic JavaScript
x
-
-
www.youtube.com www.youtube.com
-
talking about ipfs fetch specifically i want to look at how i've combined some of the usual webby interfaces we're used to with some of these cool peer-to-peer interface
.meta.doHow - development on the margins - continue with the practice of articulating on the margin - start to develop on the margins, the software needed to creat & morph annotations
.meta.do.how :- create a card for page
fn.getTitle
``` document.querySelector("title").innerHTML
```
.fn.getOgImage ``` document.querySelectorAll('meta[property="og:image"]')[0].content < 'https://i.ytimg.com/vi/ARkArPQFmXc/maxresdefault.jpg'
```
.real.soon - intent to be able to process annotations
-
.card - titlle: 'IPFS Fetch - Mauve - YouTube' - stub - to:
'https://via.hypothes.is/' + location.href
https://via.hypothes.is/' + location.href -
.do.meta - create card
``` document.querySelector('title').innerHTML 'IPFS Fetch - Mauve - YouTube'
document.querySelectorAll('meta[property="og:image"]')[0].content
'https://i.ytimg.com/vi/ARkArPQFmXc/maxresdefault.jpg'
```
-
.card - title:'IPFS Fetch - Mauve - YouTube' .- src: 'IPFS Fetch - Mauve - YouTube' - stub: - talking about ipfs fetch: - how i've combined some of the usual webby interfaces we're used to with some of these cool peer-to-peer interface
-
IPFS Fetch - Mauve
do.how - create card
get title - document.querySelector('title').innerHTML
get image - document.querySelectorAll('meta[property="og:image"]')[0].content
-
-
www.browserstack.com www.browserstack.com
-
represented
named and amenable to the put to be interpreted in specific context/environment dependent way
-
.card: - title: How to access local host on a mobile device? - stub: BrowserStack have made it easier to test and access local development environments on mobile devices.
-
BrowserStack have made it easier to test and access local development environments on mobile devices
title
-
Test your Local Website on Real Devices Access your local website on real mobile devices. Test its look and feel before launching
-
-
www.digitalocean.com www.digitalocean.com
-
How To Host A Web Server On Android
-
-
archiveweb.page archiveweb.page
-
How To Create Web Archives with ArchiveWeb.page
-
The Internet is hard to archive.
indeed
-
from - Agregore
-
-
www.youtube.com www.youtube.com
-
as you all know Licklider is heading up up ARPA the government funding agency
just listen to the next couple of minutes where he says API is a baaad ide
-
-
github.com github.com
-
About A basic fediverse blocklist for Mastodon admins to block the most well known sources of hate speech, harassment, etc.
-
-
distributed.press distributed.press
-
GardenFence to automatically block servers that have shown to be sources of hateful rhetoric, harassment, and spam.)
block some
-
Approve replies as comments
replies
-
Post to the Fediverse
Post to the Fediverse
part of POSSE
-
incorporate ActivityPub
activity pub
-
Social Inbox for the Decentralized Web
social inbox for DWEB
-
check out the auto-generated swagger interface.
-
“DWeb-ify” your site, you just need a Distributed.Press instance
instance => server?
-
make publishing fair, democratic, and dignified for all.
dignified for all
-
Distributed Press is an open source publishing tool for the World Wide Web and DWeb. It automates publishing and hosting content to the WWW that it seeds to Hypercore and IPFS.
embeded with social interactions
-
amplify free expression worldwide
amplify
-
-
api.distributed.press api.distributed.press
-
Distributed Press API
-
-
en.wikipedia.org en.wikipedia.org
-
A Space-based architecture (SBA) is an approach to distributed computing systems where the various components interact with each other by exchanging tuples or entries via one or more shared spaces.
Exchanging messages
Transition form Actor Model to Human Actor Models
from-"No to SQL? Anti-database movem…" (natishalom.typepad.com)
-
-
natishalom.typepad.com natishalom.typepad.com
-
Space Based Architecture (SBA). The Actor model that was introduced with new functional languages like Scala and Erlang is built into the SBA model, with the difference that in SBA, actors can share state and pass events by references, and thus avoid the overhead of copying the data with every transaction.
Space Based Architector (SBA)
-
“No to SQL? Anti-database movement gains steam”
No SQL Anti-(SQL)-databases
15 years later No Databse per se Anti-Database The Network became the computer
time for the Network to become the Datanse
-
No to SQL? Anti-database movement gains steam – My Take
-
-
www.thebernician.net www.thebernician.net
-
The Bernician In Voluntary Association I Trust
-
-
github.com github.com
-
A preconfigured instance which allows developers to "test drive" OrbitDB.
test drive OrbitDB
-
-
-
How to do most anything with your Helia node
-
-
docs.ipfs.tech docs.ipfs.tech
-
install IPFS
-
IPFS Helia
Helia
-
command-line version of IPFS
no GUI
-
Get Started
IPFS
-
-
www.goodreads.com www.goodreads.com
-
“I know not with what weapons World War III will be fought, but World War IV will be fought with sticks and stones.”
-
-
www.youtube.com www.youtube.com
-
computers are virtualizes that's what Universal turning machine means
most ideas don't scale well
forget about wires you
don't need no stinking wires what we need to do is to understand how to organize systems as virtual entities and
we can render some of them and hardware and we'll render some of them in software but in fact everything winds up
being something like a single communications line with an arbitrary number of entities on everyone can talk
to everyone else and all of a sudden you've thrown away all the things that Bell Telephone had and every
piece of the way most offer was done and replaced it with a simple messaging system
-
it was called the Internet and they could not use any technique that Bell Telephone 80 used because didn't scale just completely out of the scope
did not scale
-
you have to go back to a different conception of what the materials are
how to build structures that scake very well
what we can do with out special knowledge we wind up with an Egyptian
pyramid it's the only big thing you can build without knowing how to build which is just a big garbage dump and plastered
over with limestone so it looks good but if you think about it camp it has no room inside so in order to get the
superdome you have to do that other thing you have to go back to a different conception of what the materials are was
you're actually tensile structures and then you can build enormous domed structures that scale very very well
-
pulling other people into a blue world
invention is easy with the right kind of funding
what.is - difficult - pulling other people into a blue world
difficult < is - pulling other people into a blue world
the blue plain < is - also a Gulley
-
the blue plane is also a gully
-
sanity is relative to the things we believe are true
sanitty < is
-
-
docdrop.org docdrop.org
-
mimetic signatures
Memetic signature
Salience landscape
Symmathetic signature
-
those that are on the Forefront of evolutionary change are largely operating in silos with little in the way of shared infrastructure
Flip that
-
unconscious economy
They are heavily interconnected
-
delivered is via profoundly and progressively disempowering architecture
Apps
-
returning to that uh sanity
Indigenious worldviee
-
our systems for Collective sense making meaning making and choice making are themselves breaking down
- Collective sense meaning making & choice
breaking down
-
Wow Person Centric Architecture and the MAP Memetic Activation Platform MAP
https://via.hypothes.is/https://www.youtube.com/watch?v=sfB7zCwOpo8
via.hypothes.is now loads youtube videos with transcripts with the docdrop.org annotator preloaded
looks like hypothes.is is automatically brings up transcript for annotations!
No need to have the browser extension installed can signup to hypothesis and make reading active and social and annotate!
-
fostering co-creation of a world that works for all
Memetic Activation Platform MAP
https://via.hypothes.is/https://www.youtube.com/watch?v=sfB7zCwOpo8
via.hypothes.is now loads youtube videos with transcripts with the docdrop.org annotator preloaded
-
-
developer.mozilla.org developer.mozilla.org
-
Represents elements with an attribute name of attr whose value is exactly value.
document.querySelectorAll('meta[property="og:image"]')[0]
document.querySelectorAll('meta[property="og:image"]')[0].content 'https://i.ytimg.com/vi/sfB7zCwOpo8/hqdefault.jpg'
-
-
blog.mauve.moe blog.mauve.moe
-
Privacy
yes
-
make it as hard as possible to switch to a different provider.
hard to switch
-
leaving all control of it to them.
leave control to them
-
companies like Tumblr can purge content from their servers and leave people without a platform.
Tumbl purge content no platform
-
they get to be the ones that decide how and what you can share
they decide what u can share
-
Publishing content on the web is already easy
publishing is easy
-
The link you get back is used to find devices in the P2P network that have a copy of your data so that you can start downloading from them.
link find the 1 who has a copy
-
all I need to publish content is to run a command
publish by running a command
-
With P2P tech, you're able to scale your content up just by way of the protoco
P2P tech
scale up by protocol
-
pay for additional third parties in front of their content.
pay additional third parties
-
need to be just as easy, if not easier, to set up as an existing CDN
easier cheaper than CDN
-
sharing the load amongst everyone that's accessed it.
sharing load amongst those accessing it
-
Content Distribution Costs
- high cost infrastructure costs for companies
- downtime for personal blogs
-
n order to convince people to adopt something, you need it to be 10 times better than what they have already
convince 10x better
-
looking for existing places to shove it into rather than solving an actual problem
- existing spaces
- rather than
- solving a problem
-
A Killer App For P2P
Better be called a maker App
-
high level API for "lists of posts"
API for list of posts
-
should be some sort of service for backing people's feeds up when they're offline
backing up service?
-
"create an account" on their local device, set up tags for their profile, and find other people by their tags.
create an account on their own devices
-
Makes it easy to share data between users Emphasizes users owning their own data Works offline and shares data on the local network Makes it easy to form ad-hoc communities
- share
- owned
- offline
- for mcommunities
-
-
ipfs.indy0.net ipfs.indy0.net
-
TypePadhttps://natishalom.typepad.com › 2009/07 › no-to-sql-an...TypePadhttps://natishalom.typepad.com › 2009/07 › no-to-sql-an...Jul 9, 2009 — Eric Lai published a provoking article on Computerworld magazine titled “No to SQL? Anti-database movement gains steam” where he pointed to
-
-
www.google.com www.google.com
-
Showing results for egregore(function(){var q='egregore';var fprsl=document.getElementById('fprsl');fprsl.onclick = function(e){var orig = document.getElementsByName('q')[0].value;if(google.ac&&google.ac.ou){google.ac.ou(q);}else{document.getElementsByName('q')[0].value=q;} document.getElementById("fprs").outerHTML='';document.title = document.title.replace(orig,q);google.log('','&ved='+fprsl.dataset['ved'],'',fprsl);e.preventDefault();};})();Search instead for aggregore
The moment where my dislexia strikes gold
-
-
-
aggregor is a web browse
Web browser integrate P2P protocols
-
Interview with Mauve, the Creator of Agregore
-
-
agregore.mauve.moe agregore.mauve.moe
-
Agregore IPFS Development Environment V3
using this
-
-
blog.mauve.moe blog.mauve.moe
-
BitTorrent Web - Sketchup
BitTorrent + Markdown + Native UI + Content Authoring = Local-First Web
-
-
blog.mauve.moe blog.mauve.moe
-
Mauve's Blog
x
-
-
subconscious.substack.com subconscious.substack.com
-
My data is in a useful format:
useful formats
-
Credible exit
-
-
subconscious.substack.com subconscious.substack.com
-
Sphere servers are superpeers, personal IPFS gateways that live in the cloud and do a handful of useful things. Your sphere server…
Sphere servers are super peers
personal IPFS gateways that live in the cloud
-
Sphere Server: your personal IPFS gateway
-
-
github.com github.com
-
from < Agora - tutorial - part 2 - impb
-
-
github.com github.com
-
-
www.thebacklog.net www.thebacklog.net
-
P2PU course platform aka Lernanta
Interplanetary Micro Blog IPFS, Web Components, HTML5
A proof of concept application to create and maintain a peer 2 peer blog using the IPFS protocol handlers in the Agregore Web browser.
-
Interplanetary Micro Blog
Wow
IPFS, Web Components, HTML5
A proof of concept application to create and maintain a peer 2 peer blog using the IPFS protocol handlers in the Agregore Web browser.
-
Projects
-
Vizualizing complexity in Gentoo
-
P2PU badge platform
An open badge issuing platform built to encourage project based learning and peer feedback. None of the gamification hoohaa. I worked with the always insightful Vanessa Gennarelli to build this project from concept to pre-MVP and handed it over to the trustworthy hands of Erika Pogorelc to launch and shephard.
-
Unbreakout
Unbreakout
-
What if doing breakouts in Zoom calls could be collaborative and fun? That is what this proof of concept project explores. Users get to create breakouts and can choose what session to join while engaging in a light weight and interactive interface.
Zoom breakout
-
Learning Circles
Learning Circles
-
-
www.thebacklog.net www.thebacklog.net
-
The b(ack)log
from << Agregore - tutorial - part 3
-
-
www.thebacklog.net www.thebacklog.net
-
Octasphere
-
-
www.thebacklog.net www.thebacklog.net
-
A nice picture of (dependency) hell
dependency hell
-
-
agregore.mauve.moe agregore.mauve.moe
-
And now let's get the index.html and lib.js from the web and add them to our site using the function we just defined.
getting lib.hjs and index.html from the web https://www.thebacklog.net/projects/agregore-web-apps/amt3.js'
https://www.thebacklog.net/projects/agregore-web-apps/amt3-index.tmpl
to https://hyp.is/E4-QqA73Ee-RRKP8GhMMag/www.thebacklog.net/
-
-
agregore.mauve.moe agregore.mauve.moeAgregore2
-
If you want to create something, you serve it directly from your computer, and when somebody downloads their content they will also re-share it.
creator serve it from their computer
when somebody download they will re-share
for - Indy Learning Commons
-
The distributed web works by removing central web servers and instead using Peer to Peer connections directly between people to load data
distributed web p2p connections
-
-
en.wikipedia.org en.wikipedia.org
-
github.com github.com
-
blocking = theft is the criminalization of the inalienable right to privacy.
blocking = theft
-
-
Basic Mode
-
The advanced popup user interface includes a point-and-click firewall that is configurable on a per-site basis.
-
wide-spectrum content blocker
-
-
github.com github.com
-
from - Agregore
-
is not an "ad blocker", it is a wide-spectrum blocker, which happens to be able to function as a mere "ad blocker". But it can also be used in a manner similar to NoScript (to block scripts) and/or RequestPolicy (to block all 3rd-party servers by default), using a point-and-click user interface.
Tags
Annotators
URL
-
-
github.com github.com
-
Cloud storage Jump to bottom gwarser edited this page Mar 27, 2024 · 60 revisions
from - Agregore
Tags
Annotators
URL
-
-
agregoreweb.github.io agregoreweb.github.io
-
Pin Manager
📌 Agregore pin manager
-
-
agregore.mauve.moe agregore.mauve.moe
-
Let's create a function to fetch the contents of a directory. Normally when we fetch an IPFS directory in the Agregore Browser, it checks to see if there is an index file present and if so, it returns that file. To disable that, we add the querystring ?noResolve to the end of the directory URL
create list dir
-
We can get a list of list of all the files in a directory in IPFS by adding '?noResolve' to the path.
noResolve
-
you should now see a directory listing
x
-
Agregore Browser IPFS Development Environment
Part 2
-
-
agregore.mauve.moe agregore.mauve.moe
-
Load the script and create index.html:
`` let script = document.createElement('script') script.src = 'lib.js' document.head.appendChild(script) setTimeout( () => updateSite('index.html',
<html> <head><title>Page title</title></head> <br /> <body>Hello world
<script src="lib.js"></script> </body></html>`), 1000) ```
-
Define and save the updateSite function
javascript async function updateSite(filename, content){ let cid = window.location.hostname const resp = await fetch(`ipfs://${cid}/${filename}`, {method: 'put', body: content}) const newLocation = resp.headers.get('location') window.location = new URL(newLocation).origin } updateSite('lib.js', updateSite.toString())
-
Start with a blank site:
window.location = 'ipfs://bafybeiczsscdsbs7ffqz55asqdf3smv6klcw3gofszvwlyarci47bgf354'
-
have a minimum viable site that we can update!!
`` updateSite('index.html',
<html> <head><title>Page title</title></head> <br /> <body>Hello world
O, hey darkness, you're still there?
<script src="lib.js"></script> </body></html>`) ```
-
do a PUT request to the current IPFS content ID
-
create a basic HTML file
`` let newPageContent =
<html> <head><title>Page title</title></head> <br /> <body>Hello world
</body></html>
let cid = window.location.hostname const resp = await fetch(
ipfs://${cid}/index.html`, {method: 'put', body: newPageContent}) const newLocation = resp.headers.get('location') window.location = newLocation ``` -
open the developer tools.
-
This is a special IPFS address for an empty directory.
open empty directory
sepcial IPFS address
-
enter the following address: ipfs://bafyaabakaieac/
-
create a basic development environment for a site hosted on IPFS
development hosted IPFS
-
Agregore Browser IPFS Development Environment
-
-
sonec.org sonec.org
-
Sociocratic Neighbourhood Circles in Europe
x
-
-
-
you don't 00:03:40 have control over it since other people will upload your name and phone number without your knowledge
You do not have control over identifying information
Your Pseudonym should work under your control and anything related to that
-
-
docdrop.org docdrop.org
-
international team of artists creators and engineers
who are we
-
-
mononomous Mauve cross platform lowers the barier of entry
Servers Bad - build uo networks 0 barrier of entry 0 requires expertise - have your own machine - what kind of webserver to host - everything hinges around server - have to go to the server - no internet connection - all that data is lost - holdeing bad from - personal hosting - not trully minde - google product will die 0 change 0 goes out of business - anything I did is gone - too hard to setup
web without the server
P3P Good
-
IPFS Community Meetup - November 17 2020
-
-
github.com github.com
-
Use the same `fetch()` API browsers provide for HTTP, but for IPFS
-
-
agregore.mauve.moe agregore.mauve.moe
-
intro video
intro video
-
🌠🌓 InterPlanetary File System 🌗🌠) is a
🌠🌓 InterPlanetary File System 🌗🌠) is a - distributed system
for storing and accessing - files, - sites, - apps and - data!
-
-
www.digitalhumanities.org www.digitalhumanities.org
-
The Technical Evolution of Vannevar Bush’s Memex
-
-
www.google.co.uk www.google.co.uk
-
-
The process of making trails was called “trailblazing”, and was based on a mechanical provision “whereby any item may be caused at will to select ...
-
-
indy-memplex-net.ipns.localhost:48084 indy-memplex-net.ipns.localhost:48084