simultaneously regularly feel like people don't take the directions I'm trying to push seriously enough and that I'm not worth taking seriously
Well I guess its hard to say that people aren't taking the things you say seriously when you make a sadpost like this and a bunch of people follow up with the contrary. I promise I wasn't fishing, just venting... I really do appreciate it though.
As for those who, completely reasonably, don't get wtf I'm talking about right now, the real head-turning demos are really a number of months away I think. The time travel debugging demo should pale in comparison. Gotta stay positive, keep hacking.
@cwebber you're very worth taking seriously. It's just not easy to follow in your footsteps - both technically and culturally; paradigm shifts are never easy, I think.
@cwebber What directions are you trying to push?
@bob I'd say all the distributed ocap stuff, and some of the techno-political stuff that surrounds it.
Relatable feels. If you've got any CBT-like coping mechanism in your toolbox, now's the time to use it. Objectively, there are plenty of us who care about your work
@cwebber Communication is hard. Especially with other people.
Inspired by “Prediction is hard, especially about the future.”
@cwebber You're absolutely worth taking seriously.
@cwebber Don't let the imposter syndrome get you :) From what I've read of your site and seen of your work on the fediverse you're doing great stuff that's very much worth being read/scene/appreciated.
@cwebber I take your lead.
@cwebber I know this feeling.
@cwebber Yeah, that feels familiar. Impostor syndrome hits hard. You're definitely worth taking seriously though, and the projects you're working on are the most exciting ones I've been following.
As for people not taking the directions you're pushing seriously... I've felt the same at work, and I think part of it is that there's only so much one person can do. But also part of it is: http://habitatchronicles.com/2004/04/you-cant-tell-people-anything/
...it's hard to get ideas across to someone until they can interact with it themselves
@jfred Wow... what a perfect reply. Way to follow it up with a Habitat Chronicles post of all things! Right on the dot, too.
Well a lot of people weighed in saying how much they do take me seriously and I guess I can't counteract that. Still, even when people tell me I don't really believe they believe until they can try it themselves.
This post explains really well why. And it does validate Spritely's philosophy of "prove it with demos", too.
@jfred Also that story about fujitsu habitat with the company turning it into a mainframe style architecture on accident, holy moly
What you talk about is regularly so over my head that I just end up going "That... uh... sounds really... cool... What exactly does it do again?" (brain promptly melts).
Datashards is a prime example of that. Listening to the podcast you did on it I was really excited about the opportunities. I couldn't for the life of me explain it though.
I know you turn out inspiring stuff. I just can't explain what or how... 🤷♀️🍤🤷♂️
@cwebber The older I get, the more I appreciate the role of salesmanship (or marketing or evangelising) in technology. Not that I like sales, evangelising, or many of those who do it, working for me or others. But it's just plain necessary.
Oh, and imposter syndrome is both real and goes hand-in-hand with this. "Delusions of mediocrity" as I've coined it. When what you do is hard to communicate, it's hard for others to appreciate, and hard then for you to get either traction or acknowledgement.
@cwebber One key is to have a suite of short, sweet, graspable, and if at all possible visual examples of your work or messages.
The PR people are right: simple repetition is tremendously effective. One key is to be able to repeat and "engage" with little time or emotional effort. Getting your message out is important, engaging with naysayers not so much, though I've developed a pattern for doing that, usually involving well-chosen independent quotes or cites.
@cwebber Some examples of that:
Long bit on Google+ users, the (late, third-party) add of a graphic literally made this newsworthy:
Economics, labour vs. employer power:
On maths in economics, rebutting using prior commentor's own source:
Or the pithy and obvious ressponse:
Walls of text should be at least mildly amusing:
@cwebber During the G+ shutdown, I and others created short FAQs, memes, hashtags, and messages, and frankly spammed the shit out of them trying to reach people. It ... somewhat worked.
@cwebber On Mastodon / the Fediverse, take advantage of your bio and pinned toots to pound your key messages.
I see people reboosting my own pinned toots frequently, and do that for others.
I've also got an "administrivia" toot (top pin) which I reply to to creat sort of a key highligghts thread.
@cwebber Budget an hour or so a week to come up with material, and schedule some posting slots (Tuesday and Monday mornings, US/EU are best, Fridays PM is Dead Time) with updates.
And save key bits at other times, again, image/video is good for engagement, and slot that in.
Know that you're aiming for a small segment, but that you have fans who'll help spread the word --- genuinely interesting, innovative, and beneficial tech work is something I and many others encourage.
@cwebber Specific to technical marketing:
I guess a relevant question for me is
"What is the main thing that Goblins provides that we don't have already?"
So far I understand it as being
1) something to do with Scheme/Racket. If I'm not coding in Racket, is there any other library that's similar? How does it differ from these other libraries?
2) something to do with the Actor model. How does it differ from other implementations of the Actor model?
3) Something about transferrable runtime state? Is that the new part?
@natecull 1 and 2 are right. 3 is theoretically possible but not on the agenda RN.
Its effectively a distributed programming environment that's safe in "mutually suspicious environments", by applying object capability security principles. Distributed objects following PoLA.
Social networking just becomes one particular implementation of distributed programming in this system. But other complicated / rich interaction type things such as distributed financial systems are easy to build too.
Hmm. How "safe" are we talking here? I like ocap and think we should have much more of it, but how do you get there?
(cryptographically tough 256-byte identifiers for individual Scheme conses, sort of thing?)
@natecull How easy is that to grasp? I'm guessing "not very but it could be worse".
This is part of my thinking about demos then: can I show something that makes you go "oh wait, holy shit there's something *going on* here."
I think https://dustycloud.org/blog/goblins-time-travel-micropreview/ did that for the transactional and time travel stuff, though it didn't involve the networking stuff yet, which is where things start to get spicy.
@natecull The particular cryptographic applications are not actually the most interesting thing; assuming you can get a secure bytestream between two machines, the distributed programming stuff can work. There are lots of ways to do that and its generalized in the system.
I'll shortly be shipping a simple version just using TLS connections but other options such as store-and-forward-messages are possible.
"How easy is that to grasp?"
I *feel like* it's easy to grasp "distributed programming" but I don't see what's new about it? Haven't we been doing that forever? CORBA? DCOM? Isn't the Web distributed programming? SOAP? XML-RPC? JSON?
So maybe narrow it down a bit: what *specifically* about distributed programming does your model improve on? What does it do differently from these other models, why, why is your way better?
Eg: can I send an arbitrary function (closure) to another machine?
Can I guarantee that the other machine won't steal, eg, my password if it's part of the closure's environment?
Since the other machine *will* steal anything in my closure's environment, what checks are in place to ensure that I don't accidentally expose my password?
That sort of thing.
@natecull Its more message passing than sending a closure at present. Portable code is very possible but not the main stuff, though that will be coming soon: a demo of being able to add game enemies to the world, but they can't eg touch your filesystem or the network or etc without being "handed access".
Significantly, interacting with actors on the other end requires that you be handed a reference also.
@natecull None of those systems, out of the box, take an ocap security programming mindset.
In the system I'm building, secure distributed programming just resembles normal programming.
Its hard to expand on that in such limited space, the best introduction to ocap security ideas on a *language* level is still probably http://mumble.net/~jar/pubs/secureos/secureos.html
(but only if you can understand scheme)
I don't think I'm going to do better without having a tutorial people can try and blow their minds with.
Oh, I understand OCAP very well. At least I understand the principle. Not actually used an OCAP system.
So saying you're implementing 'OCAP' contains much more information than saying you're implementing 'distributed programming'.
I think the reason OCAP didn't get generally adopted was performance?
How do you prevent the capabilities/pointers from being so large they massively outweigh the data, or is that just not a problem these days due to high bandwith?
@natecull In CapTP there are two kinds of references... "sturdy" references to set up an initial connection, but that gets transformed into a "live" reference, which is what you actually operate on, and the references from there live in live-reference land.
By using the imports/exports table, an import or export is no larger in size than a single small integer for a given connection! That's because if I give you an ocap and label it 33 on my exports, you'll mark it as 33 on your imports
@natecull So the protocol is actually extremely lightweight and compact for that very reason. Object references on the wire, other than for bootstrapping, are extremely tiny in size.
@natecull But the user doesn't see that. To them it just looks like passing around normal variable references in their language.
@cwebber That sounds pretty good. So a 'connection' is like a collection of objects shared between systems?
And is it then parallel/asynchronous/reactive in some way, to cope with remote systems maybe taking a long (unknown, infinite) time to respond to messages?
I think reactive plus capabilities plus some kind of mostly-immutable-data-but-with-some-optimisation-for-locally-observed-mutation sort of thing (maybe the Actor 'become' thing you talked about a while ago?) would be pretty neat.
@cwebber Your conversation so far:
@cwebber Would there be any value in exporting this conversation, then crafting it into a descriptive document for people to get a glimpse of what it is you're working on?
I have a system (pre-alpha) in which such a conversation can take place and produce a DAG of the concepts.
Someth8ing to think about in slow time ... add to it over time.
@cwebber Latest version of the chart is now here:
I might manually tie in these comments:
I'll stop updating for a time ... let me know if this would be useful.
How do you prevent the capabilities/pointers from being so large they massively outweigh the data
Looking at Website throw-weight-to-payload ratios (approaching/exceeding 100:1), I'd argue this is not an issue for text and most image content for now. Not that it's entirely beyond consideration.
We're also (and maybe more) concerned about situations where we can trust the people but not the network or the computing devices. See also
But Node.js just feels like a more easy dynamic language to fire up and play with and to search the Web for help about. All the Racket docs sort of give me a 'here's an academic once-over, you're kind of on your own after this'.
Eventually, once I have a working prototype, I'd like to recode it in Racket.
(I started out trying to use a Scheme, since it seemed like what I was doing was about S-expressions, but got hung up on trying to do everything in functional style. Although I like the idea of functional, I have wired-in code reflexes which just fit better with the OOP paradigm... for now. )
Got their stuff bookmarked and have it in mind, but I am not the programmer anymore.
And we're building a different economic system than what I understand from their stuff.
Less focused on finance and currencies and "smart contracts" and more focused on provisioning needs.
This also divorces us from a lot of the blockchainy world...
We'll still need some of the same mechanisms, though.
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!