<paulproteus>
Can discuss more later, but since I found it, I thought I'd at least drop a link here.
losvedir has joined #sandstorm
<kentonv>
I suppose, sure.
home has joined #sandstorm
<ocdtrekkie>
"Also/alternatively we could have a bot like Garply convert messages like "add label=banana" on an issue into issue label changes." <- I like this.
<paulproteus>
Did you stop + start Sandstorm, in between that mount?
<mnutt_>
hey paulproteus
<paulproteus>
If not you almost definitely need to.
<paulproteus>
But also bind mounts probably play poorly with our filesystem namespace stuff.
* paulproteus
ponders.
<paulproteus>
You're definitely going to have the easiest time if you move /opt/sandstorm entirely into your other volume.
<mnutt_>
yeah, I did. I mounted under /mnt, stopped sandstorm, moved the grains to the new fs, unmounted, then remounted the new fs in the old grains directory
simonv3 has quit [Quit: Connection closed for inactivity]
<mnutt_>
I’ll try that next. it’s a little unfortunate since it would be nice to have sandstorm itself use the provisioned iops but that does sound simpler
<paulproteus>
Looks like if you do the whole var directory you should be OK.
<paulproteus>
"OK" in the sense of get what you want, that grains write to your other volume.
<mnutt_>
yeah, something really crazy is happening, where the grain I’m running now doesn’t even show up in the grains/ directory.
<paulproteus>
Yup.
<paulproteus>
For a fun time, while this is going on:
<paulproteus>
sudo mkdir /tmp/opt-sandstorm-var ; sudo mount --bind /opt/sandstorm/var /tmp/opt-sandstorm-var
<paulproteus>
cd /tmp/opt-sandstorm/var
<paulproteus>
Look there and you'll see the grain.
<paulproteus>
This is due to the way mounting filesystem creates layers, and our filesystem namespace stuff sort of ignores everything above a certain layer.
<mnutt_>
ahh great! that makes sense, I need to dig into the sandboxing code a bit more.
<paulproteus>
"Obviously" we should give a talk sometime about exactly how run-bundle works.
mnutt_ has quit [Quit: mnutt_]
home has joined #sandstorm
bb010g has joined #sandstorm
home has quit [Quit: Leaving]
jacksingleton has joined #sandstorm
dlitz has quit [Remote host closed the connection]
gopar has joined #sandstorm
jacksingleton has quit [Ping timeout: 260 seconds]
losvedir has joined #sandstorm
jacksingleton has joined #sandstorm
bobby-rob has joined #sandstorm
<bobby-rob>
anybody ever get sandstorm setup using linode as their provider?
yoyofroyo has joined #sandstorm
yoyofroyo has quit [Client Quit]
mort___ has joined #sandstorm
<paulproteus>
bobby-rob: I think a bunch of people have
<paulproteus>
Are you having problems with that?
<bobby-rob>
yeah, im not entirely sure how to set up the CNAME and A Record in linode's dns manager
<bobby-rob>
and what to enter during the automatic setup process for sandstorm
<paulproteus>
Hmm!
<paulproteus>
Well I wrote the install script, so I hoepfully can help you.
<paulproteus>
I recommend ignoring the DNS manager for now, and following the default install, and getting an install going.
<paulproteus>
We (well, I, personally) run a sandcats.io DNS service basically to help people like you get a Sandstorm running without having to interact with the Linode DNS manager.
<paulproteus>
(and avoid people like you having to interact with any DNS manager)
<bobby-rob>
yeah, I already had a domain and everything and thought I'd give sandstorm a shot
<bobby-rob>
i think im just having troubles with the wildcard/cname
<paulproteus>
OK, cool
<paulproteus>
For your own domain, you'll need a domain to be the Sandstorm dashboard, and then you'll have to configure *.thatdomain to point at the Sandstorm install.
mort___ has quit [Quit: Leaving.]
<bobby-rob>
gotcha, so when the install asks "What *.sandcats.io subdomain would you like?" i say 'none', then when it says "URL users will enter in browser: [http://localhost:6080]" i type my domain?
<paulproteus>
and then you set up sandstorm.yourdomain.com in the Linode DNS manager to point to the same IP as yourdomain.com
<bobby-rob>
and then it asks for the wildcard, i just type '*' ?
<paulproteus>
*.sandstorm.yourdomain.com
<paulproteus>
NOTE that you'll have to configure that in Linode DNS Manager but you can do that after the install finishes
gopar has quit [Quit: Leaving]
<bobby-rob>
ok cool, now I can get onto the dashboard at sandstorm.mydomain.com but when I got to install an app, it says downloading, then i click install, then it finishes and the app shows up on my dashboard but the icon is blank and if i click it, it shows this:
<paulproteus>
I think you have to type out the full thing, like *.sandstorm.mydomain.com not just *.sanstorm
<paulproteus>
I think you have to type out the full thing, like *.sandstorm.mydomain.com not just *.sandstorm
<bobby-rob>
hmm, yeah I'll type in the full thing, then click submit and then it refreshes the page and all that is left in the hostname field is *.sandstorm and that error message on too
<paulproteus>
Seems you have to make a new zone called sandstorm.mydomain.com and have a wildcard record within the new zone.
<paulproteus>
p.s. That's kinda weird, Linode.
<bobby-rob>
ahhh, ill give that a try haha
<paulproteus>
Do keep me posted!
<paulproteus>
And feel free to provide a screenshot tour of what you ended up doing.
<paulproteus>
I would Tweet a link to it, as @SandstormIO
<paulproteus>
But anyway that's optional.
<bobby-rob>
yeah I'll poke around some more, i gotta get to bed, but I'll check back in if I can get it working. Thanks for your help!
<paulproteus>
Great!
<paulproteus>
BTW the wildcard thing is why I made sandcats.
<paulproteus>
But you don't have to use sandcats, and I'm perfectly happy when people don't.
<paulproteus>
I just know it makes things a little more complicated. But also <3 people's own domain names.
<paulproteus>
BTW -- if you set a wildcard record for *.mydomain.com to CNAME mydomain, you can then set WILDCARD_HOST=sandstorm-*.mydomain.com
<paulproteus>
That's kinda a secret trick, but it might help you.
<paulproteus>
bobby-rob: I'm counting on you (-: hope you get it working and I'm happy to help tomorrow. Ciao!
<bobby-rob>
alrighty, thanks again!
<paulproteus>
(-:
bobby-rob has quit [Quit: Page closed]
<paulproteus>
Yay freenode web chat!
jadewang has quit [Remote host closed the connection]
jacksingleton has quit [Ping timeout: 244 seconds]
fonfon has joined #sandstorm
larjona has joined #sandstorm
keturn has quit [Ping timeout: 240 seconds]
keturn has joined #sandstorm
fonfon has quit [Ping timeout: 246 seconds]
Aric has joined #sandstorm
<Aric>
Is there any reason a WordPress grain on Sandstorm would not be able to use caching like W3TC or have problems behind CloudFlare? It;s a bit open ended but I couldn't find anything so I assume it works... I'm unable to test right now to make sure though
_whitelogger has joined #sandstorm
cbaines has joined #sandstorm
losvedir has quit [Quit: losvedir]
keturn has quit [Ping timeout: 256 seconds]
jadewang has joined #sandstorm
jadewang has quit [Ping timeout: 268 seconds]
keturn has joined #sandstorm
<davidjgr_>
paulproteus: Bit confused by "We (well, I, personally) run a sandcats.io DNS service". Do you work for Sandstorm? If no, how can we suggest that people rely on sandcats? If yes, why do you keep saying "I" run sandcats if you're paid by Sandstorm to do the work? I noticed this with https://blog.sandstorm.io/news/2015-05-18-sandcats.html, it's "I" not "we".
<davidjgr_>
I ask since we recommend ss for draw.io user looking for onprem solution. The DNS issue _always_ is the main problem and they ask whether sandcats is official. I say no, have I gotten the wrong idea?
jadewang has joined #sandstorm
jadewang has quit [Ping timeout: 240 seconds]
davidjgraph has joined #sandstorm
davidjgr_ has quit [Ping timeout: 250 seconds]
todayman has quit [Ping timeout: 256 seconds]
todayman has joined #sandstorm
xcombelle has quit [Remote host closed the connection]
xcombelle has joined #sandstorm
<ocdtrekkie>
davidjgraph : paulproteus is like a legit Sandstorm employee, and Sandcats is an official thing (it's directly a part of the installer)
<davidjgraph>
ok, worth using "we" then, "I" just gave me the wrong impression
<ocdtrekkie>
I/we is probably difficult to bear in mind in conversation when its a small enough thing that you really did write it
<davidjgraph>
yeah, but when you work for a company the norm is the company did it, i.e. we
<ocdtrekkie>
But I'm sure paulproteus will appreciate the feedback, he does not like to confuse people. :)
<davidjgraph>
yeah, not exactly the end of the world :)
<ocdtrekkie>
I, on the other hand, am just me, myself, and I, but like answering questions.
<ocdtrekkie>
:D
jadewang has joined #sandstorm
jadewang has quit [Ping timeout: 240 seconds]
mnutt_ has joined #sandstorm
Aric has quit [Quit: Connection closed for inactivity]
jadewang has joined #sandstorm
jadewang has quit [Ping timeout: 250 seconds]
larjona has quit [Quit: Konversation terminated!]
[d__d] has quit [Remote host closed the connection]
tdfischer_ has quit [Quit: No Ping reply in 180 seconds.]
tdfischer has joined #sandstorm
[d__d] has joined #sandstorm
NOTevil has joined #sandstorm
jadewang has joined #sandstorm
jadewang has quit [Ping timeout: 252 seconds]
sunu has joined #sandstorm
mort___ has joined #sandstorm
mnutt_ has quit [Quit: mnutt_]
mort___ has quit [Ping timeout: 250 seconds]
mnutt_ has joined #sandstorm
mnutt_ has quit [Client Quit]
bb010g has quit [Quit: Connection closed for inactivity]
bb010g has joined #sandstorm
mnutt_ has joined #sandstorm
jadewang has joined #sandstorm
jadewang has quit [Ping timeout: 265 seconds]
larjona has joined #sandstorm
achernya has quit [Ping timeout: 244 seconds]
achernya has joined #sandstorm
davidjgraph has quit [Read error: Connection reset by peer]
davidjgraph has joined #sandstorm
<paulproteus>
davidjgraph: Whoa, huh, thanks for the eye-opening analysis of my own writing.
<paulproteus>
Yes, I work for Sandstorm, and yes, Sandcats is official, and we are excited when people use it.
<paulproteus>
In case you're curious, sort of Standard Sandstorm Blog style is to have each blog post be written in the first person singular ("I") so that people feel a connection to the people doing the writing, so a blog post doesn't feel like a corporate emotionally-distant press release.
<paulproteus>
And therefore know who to bug if they don't like the content, also, e.g. if I write a blog post about how great Sandcats is, and someone thinks it could be better, they know they can contact me.
<paulproteus>
But yeah, it's eye-opening that I may have taken that too far, doubly so in the scrollback above.
<paulproteus>
Things that are not the same: Heavy rain. Heavy water.
jadewang has joined #sandstorm
<mquandalle>
Woah ocdtrekkie, I came to notify the wekan v0.9, but it seems that you were faster than me!
<paulproteus>
: D
<paulproteus>
:applause: to mquandalle for the milestone
<jadewang>
Yay!
achernya has quit [Ping timeout: 244 seconds]
<kentonv>
mquandalle: I just approved the new version but it didn't hit the app store. Did you embargo it? (I really need to give myself a UI to see when people have embargoed things...)
<mquandalle>
kentonv: no
<kentonv>
mquandalle: hmm well can you try submitting again?
<mquandalle>
yes :)
<mquandalle>
“Your submission is approved and is currently live!”
achernya has joined #sandstorm
<kentonv>
hmmmmmmmm
<kentonv>
oh
<kentonv>
you didn't bump appVersion
<kentonv>
so it's arbitrarily still choosing the old one, since they have the same version
<kentonv>
I really need to fix the index so that it rejects dupe version numbers
xcombelle has quit [Remote host closed the connection]
neynah has joined #sandstorm
<mquandalle>
kentonv, xet7 asked on different channel how we could translate strings of the sandstorm manifest in supported languages
<mquandalle>
embed is a bit limited because I have to create one file per translated string
<mquandalle>
but anyway, Does the
<mquandalle>
sandstorm shell supports i18n?
<kentonv>
mquandalle: no, we don't support i18n at all yet.
<kentonv>
I think what we'll want to do is have a way to specify translations outside of the spk altogether, so that we can crowdsource those easily without the app developer having to do any work
<neynah>
Having labels above the fields sometimes doesn't look so good but there's a strong argument for usability.
<zarvox>
Yeah. It looks slightly worse, but performs better. Figures.
<maurer>
If I wanted to be able to pass a capability providing a function to a server with a type known only at runtime, would the server want to accept a function from and to an AnyPointer, combined with two schema requests describing the types of the AnyPointers in question?
<maurer>
It seems approximately the "right way" to do this kind of thing
<kentonv>
maurer: what would the server do with the schemas?
<maurer>
kentonv: It would be using it for typechecking rules/functions created from the submitted ones
<maurer>
The tricky bit is going to be how to do type variables, but I'll have to figure that out later I guess
<maurer>
(e.g. if a capability extracts an element from a list, how do I express that)
<kentonv>
I'm having trouble following
<maurer>
kentonv: Sorry, one second, I'm trying to figure out how to boil what I'm actually doing down to a simple example, because the context around what I'm doing is pretty heavyweight
<maurer>
kentonv: OK, a roughly isomorphic situation is if I am allowing users to write a script they can have executed by my server, but in order to actually do useful work externally, I allow them to call registered callbacks
<maurer>
When the users provide these callbacks/functions to the server, they need to provide some kind of type so that when I recieve the script, I know they have been used correctly, e.g. with their true type
<maurer>
but the registration service for the capability needs to have a type signature too
<maurer>
and that signature is where the AnyPointer -> AnyPointer function and schemas might show up
<kentonv>
instead of thinking of functions, can you think of objects? (which implement interfaces, having possibly many methods with varying signatures)
<maurer>
I don't know how that changes it?
<maurer>
The server has some capability with a method registerExternal(obj : Something)
<maurer>
I'm trying to figure out what Something should look like given the broad scope of what these do
<kentonv>
it just fits nicer with the capnp model
<kentonv>
so what you'd want to send is the schema for the interface
<kentonv>
you could create a SchemaLoader and call loadCompiledTypeAndDependencies<MyInterfacte>() on the client side, then getAllLoaded() to get the list of schema objects that need to be sent
<kentonv>
send those up to the server once
<kentonv>
then when you send up a capability, send along with it the interface type ID
<kentonv>
which the server can look up among the schemas
<kentonv>
(which it will have loaded into a SchemaLoader on its end)
<maurer>
kentonv: Does the interface type ID exist within a global namespace, or only within the one generated via getAllLoaded() ?
<kentonv>
all cap'n proto types have unique IDs
home has quit [Quit: Leaving]
<kentonv>
the ID is based on the file ID (which you generated with `capnp id`) plus the type name
<maurer>
OK
<kentonv>
or you can explicitly override the type ID, if you want it to not change when renaming the type, etc.
<kentonv>
the type ID is a 64-bit number
<kentonv>
in C++ you can do capnp::typeId<MyType>() to get it
<maurer>
So instead, the exposed server capability would have something like registerExternal(cap : AnyPointer, ifaceDescr : Schema) ?
<maurer>
and it would just look for method names within the schema?
<kentonv>
I think you want to separate uploading the schemas from sending the capability. You could have multiple capabilities with the same type, for example.
<kentonv>
when you send the capability you'd just provide a type ID with it
<maurer>
That seems unlikely in my domain, but I could think about it
<maurer>
(the capability here is more like a library than an object)
<kentonv>
well here's the thing
<kentonv>
a type isn't a self-contained thing. It might have dependencies.
<kentonv>
you need those dependencies too. Will no two capabilities ever share a common dependency?
<maurer>
OK, that will happen, sure
<kentonv>
ok, so then the dependency schemas also need to be uploaded. So really you want to deliver a collection of schemas to the server.
<maurer>
So you're suggesting that I check with the server whether it already has each of the dependencies first, then send them if it doesn't?
<kentonv>
you could do a variety of things. Ideally the client would upload everything it will need upfront in one call, so it can avoid sending dupes.
<maurer>
Oh, the client will probably only have one descriptor anyways. The only case I could see in which re-use would occur would be between two clients
<maurer>
Since they likely want to reference a common user-defined type
<kentonv>
hmm
<kentonv>
well if you're taking schemas from multiple clients and pooling them together you have to think about trust issues
<kentonv>
someone could poison the pool with bogus type definitions
<maurer>
In this case I can temporarily punt on trust issues
<kentonv>
ok
<maurer>
Since all the clients are assumed to be owned by the one user
<maurer>
(this is for a logic language in which external predicates, queries, and rule submission is done via capnproto)
<maurer>
*are
<kentonv>
so I think probably every client should upload all of the types it thinks it needs, without asking first if someone else already uploaded them. The SchemaLoader on the server side will actually verify that two uploaded types with the same ID are compatible.
<kentonv>
and this isn't very much data in any case
<maurer>
OK
hrjet has quit [Ping timeout: 268 seconds]
<kentonv>
incidentally I have some vague plans to add schema propagation to the underlying RPC protocol eventually
<kentonv>
it would be great for Python and Javascript where it means you could connect to a server and make calls without having your own copy of the schemas
<maurer>
So basically just have a submitTypeInfo(schemas : SomeBundleType) that is expected to have been called with schema information before a registerExternal(cap : AnyPointer, typ : TypeId) or something roughly like that?
<kentonv>
yeah
<maurer>
Seems reasonable
<maurer>
thanks
<maurer>
(that should also buy me some genericity, which is nice, and means I don't have to bake it in myself)