Show newer

@ironiridis @reese 2/2

I've never really liked code using abbrevs or single letter names outside of tight loops even before I took that class.

And back when I used to work as a developer I would often run into comments that had become confusing or misleading as the code changed but folks forgot to update the comments

@ironiridis @reese 1/2 yeah I totally forgot about the part where he's dangerously obsessed with minimizing function size... Mostly I just remembered the naming stuff. Even if this guy is the worst person ever it doesn't disqualify him from having 1 or 2 good ideas. I had no idea about any of this, i just remembered the long names / explain with names instead of with comments concepts. I think they hold up 🤷

@reese @ironiridis

You answered it yourself, ETA is the word, right ?

You also said it has a unit, and the unit is minutes.

So I'd say the correct variable name should include the unit as well as what the unit represents. Not just what it is in terms of types of things (duration, timedelta, etc) but what it represents specifically:

etaMinutes
minutesUntilETA minutesUntilArrival
minutesUntilNextBus

At least that's what I was taught in school, that longer variable/function names like this are generally better. Textbook was picopublish.sequentialread.com

I think I largely agree with that book to this day 🤓

@reese This is probably at least partially wrong information but I think it speaks a little bit to what monads are good for / why anyone would give a shit about them

@reese

I was introduced to monads thru C#.. C#'s iterator interface IEnumerable<T> is a monad. Maybe<T> is like an iterator that only iterates once, so instead of zero or more values, it can have zero or one value.

Just like how one might write

mysequence.map(x => x+1)

to add one to every number in a sequence (without having to know how many there are or having to load all of them in RAM before starting)

One can also write

maybething.map(x => x+1)

to add one to a number without having to know if it exists or not.

The "without having to know if it exists or not" part is the special magic... Not only does it help prevent null reference exceptions, it also allows languages like C# to build in declarative (SQL-like) features directly into the language. That's what LINQ (Language-Integrated Query) in C#.

Declarative meaning we don't tell it **how** to process the data, we just tell it what we want and it figures out the most efficient way to get there.

@reese

i dont know much about monads other than, other than my mom got one put some `Maybe<T>` and `Result<T, TError>` on there an I play em

@silverpill@mitra.social Ah, I think I sorta get what you mean -- similar to how WebTorrent in the browser can't talk to normal BitTorrent peers, but WebTorrent peers running on node.js can talk to both...?

Basically a p2p extension could be developed for ActivityPub so that any ActivityPub server which both supports that extension AND is TCP-dialable could act as a relay for all the servers which support that extension but are NOT dial-able.

I might be ignorant of ActivityPub and how it works but I suspect this would run into issues because most implementations will want to hear about activity on Server A coming directly from the URL they have for Server A -- Every entity in ActivityPub has an ID and as far as I can tell that ID always starts with `https://<domainname>/

Surely there is a way to make it work, but at least from my (admittedly somewhat ignorant) understanding, it feels like trying to shoe-horn p2p into a protocol which was hard locked into requiring TCP dial-able servers very early on in its design. I have seen some p2p activitypub extensions in a similar vein like trustbloc.github.io/activityan but how many implementations are actually going to support things like that ? I suspect most of the activitypub developers would push back against such specs, calling them bloated and too burdensome to implement correctly.

But also, such a p2p activitypub project could also include a TCP reverse tunnel gateway feature similar to greenhouse, ngrok, or pagekite. This way the ActivityPub application layer protocol can stay as-is and keep its precious ubiquitous `https://` URLs, but at the same time someone might be able to host a homeserver in their dorm room where they can't configure port forwarding.

IDK. at least thats how I see it. The application protocols (specifically web browsers) have too much inertia and wont move, so we have to move the network for them.

@silverpill@mitra.social Ah, I see what you mean. In my case I'm trying to find a general solution, not just for fediverse software but for everything TCP/TLS. I'm proud of how greenhouse manages to provide that while remaining "mostly trustless", but the usage metrics speak for themselves. No one seems to want to use it. And I don't blame them; besides some dogfooding that I forced myself to do on the greenhouse-alpha.server.garden domain, I don't use it myself. I already have port forwarding that works, why change?

I'm definitely interested in things like IPFS <--> HTTP gateways but I think they have the most value when they're hosted by the same community that uses them, so the incentives are aligned. (as opposed to, for example, the CloudFlare one 🤮 )

Having the homebrew servers dialable on the public internet is a pre-req for that.

@silverpill@mitra.social Yes, but as I explained in the P2P section of the article, until mainstream web browsers support that kind of stuff, we're stuck with either

1. holding the admin's hand through the process of configuring port forwarding on the router (like how YunoHost does)

2. Using a VPN or tunnel to traverse the NAT (like how my other project greenhouse.server.garden does)

That's just my opinion tho. Personally I believe if the browser can't dial it, its not really "online".

I want to make it easier to get to a point where you can share a URL & anyone can surf to it, no special client required 🏄

but who will help me carry the wheat to run the server??

I just finished writing a HUGE new blog post, this one elaborates on what I wanna work on next instead of greenhouse

sequentialread.com/federation-

@ljwrites

Yeah I feel similar about YunoHost. My two biggest wishes for a system like YunoHost are

1. Built to support replication/failover
2. Built to support multiple users

By "support multiple users" I mean similar to how Mastodon/Matrix servers do the "1 admin per ~100 users" model.

So for example I can share my server with my friend, create an account for them, and then they can get their feet wet and try out hosting something themselves without expending too much effort.

But at the same time, since it supports replication & failover, there's a reasonable path to those "experiments" becoming well loved and frequented destinations with reliability / longevity. When one admin falls (loses interest) another can rise to take their place without much fuss.

So I think that's what I'll work on next :)

@nolan i guess you could say you've been... thinkin about thos beans?? ?

Forest boosted

I need every infosec person to understand that surveillance capitalism is structural, not individual, and we are not going to ethically-consume our way out of it please and thank

@ljwrites

> surveillance capitalism is structural, not individual

> Harassing people [...] does Not make anyone safer or more secure.

💯 More people need to hear this.

I would like to also offer a bit of my own rant and optimistic take on how the structural/systemic issues at hand here can be addressed.

IMO a lot of the "structure" at work here comes from economic forces that poured endless investment cash into research & effort on how to make client software and webapps usable by everyone.

Meanwhile the usability of the server applications / web infrastructure stuff is still stuck in the 80/90s for the most part.

I think tech folks with the resources and time can (and should!!) strike at the root of the problem. To me that mostly means trying to improve the usability of server software and make it more accessible to more people.

I don't mean everyone should run a server.

But as servers become more and more like web browsers (they "just work" on the first try and don't break when they update themselves automatically) it will become more and more likely that everyone will know someone, or a friend of a friend in their community who _does_ run a server.

I liked the "TL;DR" from homebrewserver.club:

> Take the ‘home’ in homebrew literally and the ‘self’ in self-hosting figuratively

> That means we try to host from our homes rather than from data centres - a.k.a. ‘the cloud’ - and we try to host for and with our communities rather than just for ourselves.

I think the fediverse software and similar networks have sorta succeeded in that regard despite continued rampant usability problems on the server/admin side. Its encouraging to me that something like mastodon which is far from perfect can still gain traction and continues to attract new users and inspire new projects.

Basically I want to be a home server evangelist but if the thing I would be evangelizing still costs money, takes time to set up, and still fails 99% of the time, what's the point?

Just need to get the software / systems to a point where they don't annoy ppl much, they can be easily shared with friends, and they fulfill a need. For example they provide a sense of data custody and belonging within a local community, something folks'll never get from Google, Facebook or AWS.

Yes, its a tall order, its insanely hard / no one knows if this is even possible. But I feel like I would be doing myself and everyone else a disservice if I didn't try.

It's been many months since I've really seriously worked on any of my projects, in the mean time I had some fairly major life upheavals (getting covid, quitting drinking, starting therapy)

But lately I've finally been slowly getting back into it & reorganizing my thoughts. I think I do want to keep working on creating my own homebrew server oriented software project, but I think I'm going to start over at this point. Greenhouse was a bit of a failure and I think I need to completely redesign.

sequentialread.com/greenhouse-

Minneapolis folks, I am planning on hosting a free workshop on how to to make a website from scratch. (HTML and CSS)

The workshop is meant to be for folks who have never done it before, but experts are welcome too!

Check out more details and mark times you would be available @ framadate.org/ABPiTpWWEzqNWmo6

Also, plz boost if you are in the area. Thanks 🧡

Forest boosted

Today, the Bonfire team is excited to announce our beta release 🔥🎉

We’re aware that Bonfire still needs a lot of work - like ensuring it federates as expected and improving configurability, accessibility and user experience - but that’s the point: we decided to launch at this stage with the intention of building the 1.0 release as a community.

🗞️ Blog post: bonfirenetworks.org/posts/meet

🌈 Signup on the playground instance:
playground.bonfire.cafe

Show older
Pixietown

Small server part of the pixie.town infrastructure. Registration is closed.