9 ms·
What Is Dark?
- pbiggar 8y agoAuthor here - would love to answer any questions people have!
- ckluis 8y agoWhat's the timeline for some screenshots & code examples?
- pbiggar 8y agoProbably September, though no promises. We're still redoing some core metaphors. Codewise, you can expect it to look similar to Elm/OCaml - functional/imperative language with structured error handling and no null.
- pbiggar 8y agoOh, if you join the alpha (https://ellen-mailinglist.builtwithdark.com https://ellen-mailinglist.builtwithdark.com) you get to see it sooner
- real34 8y agoHi! I’m excited to understand how it compares to Eve. While waiting for the whole blog post, do you have any elements to share?
- pbiggar 8y agoI don't think it's really similar to Eve at all, except that it's an outside the box look at how we code. We're extremely focused on the backend coding use case, and solving known problems. I think Eve was on the path of experimenting to come up with a new way of doing computing, while we basically know what we're aiming to build already (and mostly have for over a year now). That said, it has a lot of similarities to LightTable, especially regarding coding with live values.
- qnsi 8y agoSometime ago you offered to pay someone do code MVP in Dark. How did it work out?
- pbiggar 8y agoGreat! That got us our first two customers, and it allowed us prioritize really effectively for what they actually needed. And it cost us almost nothing, like $15k total - a great investment :) Would you read a blog post on this?
- lliamander 8y ago> In Dark, making an API call is as simple as a function call. Our tools for building connectors to 3rd party services handle rate limiting, authentication, error handling, and retries, with great default behaviour. Visibility around costs and failures are built into the editor, as is support for secret keys and Personally Identifying Information. The history of RPC is...checkered. It's possible that every attempt to make remote process calls as simple as local function calls has resulted in terrible abstractions that leak like a sieve. My suggestion (for what it's worth) is to bake the notion of message passing into the language, and make it as simple as possible.
- pbiggar 8y agoI'm talking about using 3rdparty APIs, like Twilio or Stripe or something, that we don't have control over and that we need to handle. So we want it to feel like calling functions, though in practice it needs to be able to handle all the stuff that goes wrong. Can you link to something about message passing? I'm familiar with a concept with this name, but I don't quite see what you mean.
- toko342322 8y agoLooks great! Is this similar to Asyncy or Pulumi?
- Alex3917 8y agoI think this is fundamentally the correct solution to the problem, so I'm excited to see how this develops. What's the business model? E.g. open tooling, pay for hosting/monitoring/optimization?
- pbiggar 8y agoThanks Alex! We operate the infra, so we charge for it like aws, firebase, etc. We plan to be pretty cheap, charge for usage, and have a generous free tier.
- Alex3917 8y agoWill the code be theoretically runnable elsewhere though? I guess my two concerns about solutions like this are always A) vendor lock-in B) whether it's too big of a project for any one company and requires a community of contributors to realize the vision. In the short term it doesn't really matter because clearly being able to build an app is a huge step up from not being able to build an app regardless (which is why companies like Bubble.is are doing so well), but in the long term it seems like there are 10 - 15 companies working on this so eventually there will be more options and those factors will be key differentiators.
- pbiggar 8y agoOur goal is making it super easy to build and run backends, and so if the first step was "install kubernetes" I don't think we'd have realized our goal. We don't have a goal of running these apps elsewhere. However, we don't like the lock-in either, as it's a blocker to people trying Dark, so we're trying to figure out ways to avoid that. A current thought is perhaps allowing you to export your application compiled to Node or similar if you decide to stop using Dark. (Data is already easy to export, so we're mostly worried about code). This is probably going to be the next blog post I write about this, because it's pretty front and center to the business. This is the first time I've heard the concern of the project being too big for one company. I personally don't worry about it because it's so hard to move a small team in the same direction that I don't think a large community of volunteers will be a better fit.
- shalabhc 8y agoLooks promising! Since this subsumes the database - what kind of transnational data consistency is provided? How do upgrades to your data model work?
- pbiggar 8y agoGood questions! We haven't decided on transactional consistency yet - if there are particular goals there, I'd love to hear them. Ostensibly, we want to allow users to design the right distributed system for themselves, and provide ways of saying "we want this DB to prioritize availability over consistency", for example. But we haven't yet decided how to do that or what to support at launch, nor where the bounds of a transaction will be. We have a DB migration tool. The DB has a current type, and you specify the new type, and add rollforward and rollback functions. That creates a new name for the datastore: any use of the old name uses the old type, and the new name uses the new type (both on the same datastore, applying rollforward and rollback as necessary for the interface you need). Once you've removed all the references to the old name, you mark the migration as complete, and we'll handle the underlying transformation of the data behind the scenes.
- shalabhc 8y agoI think operation level consistency policies are more useful than DB level. For instance, saying bounded stale reads are OK for some operation could be useful for the high read scenarios and hopefully the system will materialize a cache.
- pbiggar 8y agoGotcha. Yeah, we're planning on allowing users to tweak their performance by providing this sort of constraint to the system, and allowing the system optimize it. We are far from that, but that's where we're aiming for.
- craftoman 8y agoWhy you called it "Dark" and not "Light" or something more optimistic?
- pbiggar 8y agoWho says Dark isn't optimistic? It makes me happy whenever I see it :)