I just published my first project on sourcehut - sr.ht/~philipwhite/webpad/.

My goal is for it to be "notepad.exe for the internet". Not that I necessarily want it to get hugely popular. I just want something extremely simple that provides some of the benefits that Google Docs provides without all the downsides and bloat that comes with Google Docs.

The server is written in Haskell, which may cut down the audience of who would contribute, but please don't be shy. I would enjoy if more than just me were interested in the project.

@philipwhite
Looks like you're trying to write a text editor πŸ“Ž!
Atom's teletype uses commutative replicated data types. (github.com/atom/teletype-crdt) may be a little overkill (server to client changes possible), but it has some links which may be worth reading.

@sjb
Yes. On input time, sanitize (if the field is supposed to be only alphanumeric, make it alphanumeric). On output time, escape.
If the users want to enter raw html into the field, they should just know that it's going to get escaped.
Escaping before putting into the database is just going to end you up with a bunch of double escaping problems. (Double escaping is not best practice).
@philipwhite

@philipwhite
Forms cannot **yet** submit DELETE or PUT requests. It would be much safer to just use an arbitrary verb, like `e880ccc6-d32f-4eaa-b850-2e513eb7b97b-ing`.

@sir
Is it internally consistent for someone to be a nihilist **and** promote a software development and design philosophy as being more good than other philosophies?

@claudius @switchingsoftware
On version 2, and it's still promising... I just wish it didn't trigger a 1GB avalanche of JavaScript dependencies on install.

@sir
Not too convinced about the conclusion drawn here: it could also mean that blind people learn gestures by *hearing* the gestures performed by others, especially when falling raindrops allow precise three dimensional echo location imaging...

@sir
If you wanted to do that, you should have used the anonymous enum declaration
//in module foo
dec enum {
OPTION_A,
OPTION_B,
}
dec enum {
TACO_A,
}
def example = enum {OPTION_A}
//elsewhere
return foo::OPTION_A === foo::TACO_A == foo::example::OPTION_A;
@nergal

"When I picture it in my head I think of the early web as more of a library. Over time it has transitioned into a shopping mall." - chris_f (via HN)

@sir
I'm just saying laziness may have been the biggest motivator for them here.

@sir
And did anyone offer a pull request that would fix it during that year?

Here's how it works on sourcehut:

You pay us the subscription fee of your choice and you get access to our services. We spend it on maintaining and upgrading the hardware, and paying for staff to handle development, operations, support, and on-call.

Because we don't take money from investors, we're only accountable to users, and if we aren't working in your interests, we lose our revenue. We are incentivized to work for you, not to generate a return.

Because we're running 100% free software, we're held accountable because anyone can take our shit and run it on their own servers, or even bootstrap a competing company using our own software. We've made it easy to run out out of business if we lose your trust.

Show more
Librem Social

Librem Social is an opt-in public network. Messages are shared under Creative Commons BY-SA 4.0 license terms. Policy.

Stay safe. Please abide by our code of conduct.

(Source code)

image/svg+xml Librem Chat image/svg+xml