Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Darklang (medium.com)
326 points by pbiggar 37 days ago | hide | past | web | favorite | 253 comments



Is there an open source version of the language? ...bc I'm not touching a programming language with a ten foot pole if it hasn't got at least two implementations, and at least one open source :|

Sure, keep the IDEs and deployless infrastructure and all proprietary, but a core programming language in 2019 can only be open-source. Heck, even Microsoft gets it now.


I see a lot of Parse comparisons, but for me this is way more like Force.com from Salesforce and the Apex language.

Proprietary language (Apex, which is Java 6-ish), complete vertical integration, no open source spec or implementation.


Excel, the most popular functional programming language in the world, is closed-source.


PowerPoint, the worlds least favorite programming language is too!


On The Turing Completeness of PowerPoint (SIGBOVIK)

https://www.youtube.com/watch?v=uNjxe8ShM-8



Hijacking the joke comment to plug Dark a little bit. Data migrations and schema changes are hard (especially when you want to test on a subset of users), and Parse only avoided a lot of this pain because it was typically used for relatively simple-schema'd projects. Dark seems to have done the hard work of making an entire language and environment to avoid footguns and provide more-or-less seamless data migrations, schema versioning, and gradual feature-flagged rollout. I haven't been able to try it yet but desperately want to!


> I haven't been able to try it yet but desperately want to!

Yes, always good to plug something you haven't used.

Are you an investor by any chance?


Sigh. Not an investor, just a developer who's read their stuff and knows the pain points, and generally a fan of people doing things out of the box w/r/t software tooling. It is possible to be excited about a design pattern without knowing how a specific implementation pans out - and I probably should have said "plug what Dark is trying to do" rather than "plug Dark." But I'm chill with people disagreeing with that.


Huh? In another comment someone from Dark admitted they had barely fleshed out the database, they don't even know how joins will work yet! How have they “done the work”?

Schema migrations are easy if there's no complexity to the schema.


What's the joke here (asking for a friend)


Parse was a startup also offering an easier way to build a backend as SaaS. But then Facebook bought them and shut down the product, and all that remains is the open-source clone of the server that they were kind enough to make.


So, no Rust or Go for you?

EDIT: I got it, I got it. Go has multiple implementations. Bad example.


Go - OK, it has one implementation (open-source), but it's backed by one big player (Google) and used by many others... also the simplicity at core design decisions sound like the kind of choices that would make an alternative compiler easier to implement than for other languages

Rust - pretty fast growing open-source community despite only one implementation... but yeah I'm sort of worried that Rust is a "hard to implement" kind of language with maybe a not high enough bus factor... similar worries for Julia too

But tbh I'm not drawn much to either Go and Rust for other reasons - Go is too verbose for my taste, no way to write denser code that highlights the logic instead of the plumbing, and it has a "dumb" type system, Rust seems a really bad choice for rapid prototyping and iteration which is what I care about now.

EDIT+: glad to know that Go has multiple implementations in fact, pardon my ignorance!


> with maybe a not high enough bus factor

I'm assuming you don't mean the traditional bus factor, but one of alternative implementations? Rust (and from what I can tell after short research Julia at least partially too) has quite a big development team that is supported by many different companies with no benevolent dictator, so I don't see a big bus factor risk.


Julia actually has a pretty high bus factor in comparison to most other Github projects. This was demonstrated during Heather Miller's (of Scala Fame) talk at JuliaCon 2019

https://www.youtube.com/watch?v=b_743P8XuvA


I generally read bus factor as having few who fully understand a codebase written in said language so if they were to be hit by a bus you'd lose ability not easy to hire.



rust is a fantastic language that helps me avoid a lot of problems in runtime but I will concur that its a terrible language for prototyping and its not trying to be. Its a language for building systems that need to be fast and reliable for years.


"... but yeah I'm sort of worried that Rust is a "hard to implement" kind of language with maybe a not high enough bus factor... similar worries for Julia too"

Which is fair, but they seem like the kind of language where the compiler or run time is the really important part of the language, so it might make sense to have multiple implementations. Rust without the lifetimes implementation, and Julia without the highly dynamic but high performance run time, aren't worth much.



I'm genuinely curious (not disparaging) who is using any of these (except for tinygo and gopherjs, for which the use case is apparent and niche)? Does anyone use gccgo or llvm-go? And why?


I like the flow of your question: “who is using any of these”… “except for the ones people actually use” :-P

On a more serious note, in my personal experience, the GCC and the LLVM back-ends are generally much better at math- and computation-heavy workloads and worse at… everything else, basically. But that was a long time ago, when gccgo still used to spawn a thread for every goroutine, so my experiences are probably outdated. Also, back in the day the LLVM back-ends used to be the only way to get link-time optimisation with Go. The GCC back-end probably can do it by now.

To answer your question directly, I don't know any large projects that use them, but they exist. Which means that there is an alternative. Unless Google goes full Oracle, that is.


> I like the flow of your question: “who is using any of these”… “except for the ones people actually use” :-P

Yeah, it was kind of clumsily worded. I get why people use the ones that are the only options for their respective target platforms (browsers, microcomputers, etc). I don't understand the advantage to using compilers besides gc, although your comment provides some clarification.

> To answer your question directly, I don't know any large projects that use them, but they exist. Which means that there is an alternative. Unless Google goes full Oracle, that is.

My question wasn't whether or not there is an alternative, it was simply "who uses the alternatives and why?".


rustc had at least one other major implementation, mrustc [0], but it appears that it fell out of maintenance earlier this year :/.

Last I checked, it was capable of compiling releases of rustc well past 1.0.

[0]: https://github.com/thepowersgang/mrustc



Last time I looked at mrustc, it didn't have a borrow checker it just assumed the lifetimes were valid.


Go has 2 implentations.


Three counting google go, gcc-go and llvm-go. Last I checked the latter two were quite incomplete.


Gcc-go lags behind, but is official and kept complete. Llvm-go is unofficial.


Honestly, I would expect compilers to lag behind the official Go compiler, unless the Go core maintainers were to release specs before they implement new features. It wouldn't do those projects good to just implement upcoming features that might not make it though.


llvm-go is checked into the (recently unified) llvm repo now, so I think that it's official now. They do lag behind though.


* cameronnemo laughs at gcc-go


They are 'allowing' people into a private beta of a programming language? Coupled with the fact it is not open source and has a bunch of fad ad-tech videos on the front page this is so many red flags.


Agreed, the quality of their web site tells a lot, especially when their product is for developers

- Trendy font that reminds me of Comic sans - 1 MB of images and JS - Mission statement and values read as generic lifestyle brand copy. - A 1.4 mb PNG header image on their beta sign up page - Tiny unreadable video (with huge black borders) or full screen only.


It's pretty smart from a marketing point of view. It gets everyone on HN riled up and so lots of comments and upvotes whenever they post.


It's a perfect language to implement dark patterns, in fact they could trademark that term /s


I agree, but how did it get so many upvotes? there's a huge disconnect between most top level commenters not liking it and the aprox. 350 karma.

I'm a new user so this is very confusing to me.


HN has a much broader population than individual comment threads might indicate.


Does (or will) Dark have a light mode? Given the name and seeing the dark mode screenshots in the article, I wonder.

This is an honest worry for an older developer like me. When you're young, your eyes can focus on just about anything. This changes as you get older. A dark mode causes your pupils to open wider, where a light mode gets them to stop down. And if your lenses are imperfect, stopping down helps make things sharper.

I'm posting this as a reminder and plea to younger developers: no matter how much you love your dark modes, please consider those of us who can't focus on them, and give light modes full support too. Thanks!


We will absolutely support light mode, and we plan to deal with many other accessibility concerns (I touch on that very briefly at the end of my video). This sort of inclusivity is massively important to us. I hadn't realized Dark mode was tough for certain audiences - I'll add it to the list. (We also plan to get an a11y consultant in to make sure we get all of them)


Wonderful, thank you!

While I've got you, let me put in a word for proportional font support if you don't already have it. Proportional fonts are another thing that make it easier for me to read code.

Would be happy to chat with you about any of this stuff - contact info is in my HN profile.


Thank you for the kind offer! I will definitely reach out.


Lack of light mode is also a problem when you have sub-optimal lighting in the workplace.

Bright UIs can block out glare and reflections, thus preventing tiredness and headaches in such cases.


I'd say that it is a problem when you have optimal lighting in the workplace.

It's sad that we have to stare into a bright light all day just to accommodate natural sunlight, or shut the blinds and code in the dark. Can't wait for cheap, fast and unlit high contrast monitor technology resembling the experience of plain paper.


I second your request and I'm grateful for your comprehensible and respectful way of pointing out the problem. I usually just get frustrated and angry at software that only supports dark mode.


I am the complete opposite ... I'm in my 40s and dark modes are the only thing I can use.

The bright white glare bothers my eyes and I can't work for hours staring into it. I have to go dark on everything these days.

Back to the light-on-dark computers I grew up with :)


In my 40s as well and same here. Light mode hurts me. But always has. My first computer was monochrome green on black. Then MSX for many years where the first command after startup would be color15,1,1 (white on black) until I was able to make a custom eprom to have it at startup.


I mainly use light modes, but very rarely use white ones. Similarly, I often find that many dark modes, esp. those emulating old-style terminals and computers, liek to put bright green colors on bright (as it were) black, or similar schemes that to me are more garish than, say, Base16.


Amen to this (from a 50+ yr old).


I applaud the effort for the project because it's really ambitious. The delivery at this point on the other hand makes me a bit skeptical. I've watched the hello world app a few times and my impression is that it relies on lots of convention over configuration (same reason I disliked Rails). The "cards" or files on the canvas look a bit chaotic and their relations are not clear at all what thing triggers which event. The slackToken thing is confusing too.

Have you tried user testing the platform with random developers, giving them a laptop with the instruction, "Here you go, this is the readme, getting started guide, go build a todo app"?

I'd like to see a more detailed look of the language itself with a slower pace of explanation.

Just by watching the video, Dark feels like I'm interacting with a cloud backend rather than building stuff in a programming language.


We have user tested, and a ton of people have built full apps with it. That said, you are correct that it can be a rough experience at times, which is one of the reasons we're in private beta.

We wanted to show people what we were working on, warts and all. We are super aware of what you're bringing up. The "cards" especially are not the metaphor we intend to use, just a shortcut to get this in front of people. I hope you'll bear with us :)


I love the "cards", or at least, the step in that direction.

Just like Apple Numbers, it seems to point to a future paradigm of software development IDE experiences. Something a lot more freeform, flowy, than a traditional file/tabs UI. Some files are 2k lines long, some are 10 lines long; some are text, some are data; it's time we stop cramming everything into the same square file editing box. I think there is room for a lot of innovation here in the UX of developer tools.

Was very excited to see that.


I've been using the private beta for several months now. It took a few hours to get the hang of it, and once the language clicks, the speed of development moves quick.

I'm sure the Dark team will be releasing more in depth videos soon with a look into the language soon!


I think the fact it maintains the "backend/frontend" separation makes it an awkward product solution imo.

Dark being a proprietary language means most "experienced" or "full-time" software engineers probably won't touch it. You can get pretty close to "deployless" with FaaS services now anyways in whatever language you like.

So if this is being targeted toward low-experience/no-experience developers that just want to get something running, how is it addressing the problem much better than all the no-code/low-code solutions?

For that market, I don't think having them even deal with a separate "backend" and "frontend" is a good idea, they should just be dealing with logic only and have that whole concept abstracted away.


It seems that darklang goes one step further than your average faas: every new code you write is deployed as you write it without any explicit deploy action, but the design of the Lang/IDE ensures new code is always behind a feature flag that makes that new behavior visible only to you until you decide to expand the audience until eventually reaching 100% of the users.

You can do that with any language and any serverless stack around, but it still requires work. I'm struggling often to make my teams accept that this little extra setup work will let you iterate faster and often it's not that obvious that it would, since the overhead of the process is non-zero (for some value of zero).

I can't wait to try darklang; I'm really curious. I just need to think of a pet-project that would be suitable for the beta.


That progressive deployment is neat and all, but I'm not convinced that's a problem that actually existed. More importantly, I'm definitely not convinced it's a big enough feature to drive a significant amount of developers to sacrifice the ecosystem benefit from using a popular/open-source language to use a proprietary language that only works on one proprietary cloud host.

Like how is that a 10x improvement on modifying a Lambda function in something like Netlify and clicking "Deploy"? And just "Rollback" if it goes wrong? For most products, which have relatively small user counts, they don't gain much from gradual rollouts.


I do share that feeling of unease that comes from non only from the lock-in but also from the departure from the text-only environment I'm so used and probably many other things that might be practical showstoppers for dark adoption.

Right now I'm looking at it for what it is: food for thought.

For me this gradual deploy matters because:

1. it generalizes local development and production and possibly also staging/testing environments in between. I don't have to setup some docker-compose environment that sets up the whole shebang locally. I don't have to setup complex CI systems that spin up an env for integration tests. And I don't have to bend over backwards to ensure that both local and automated test envs are reasonably similar so I can troubleshoot when stuff fails only on CI.

2. even if I don't have that many users, and even if my uptime is not that important; I still don't want to unduly break the application. Somebody will be watching and complaining, if only your boss. What usually happens is that people tend to batch changes and have periodic pushes to production. I've seen products with relatively small user bases have very time consuming release processes. Starting weekly, then biweekly, then monthly. The more the pain, the less frequently you ended up doing them . The less frequently you ended up doing them the more painful they become. Then you end up with somebody dedicated on that because this "release engineering" is becoming clearly a bottleneck. And you do more of it, because now it's somebody's job.


Does dark provide graphql api?


"... but the design of the Lang/IDE ensures new code is always behind a feature flag that makes that new behavior visible only to you until you decide to expand the audience until eventually reaching 100% of the users."

Ah, so "Dark" as in "dark launch"?


Nice username.


> I think the fact it maintains the "backend/frontend" separation makes it an awkward product solution imo.

When we were thinking about the scope for Dark, we briefly thought about trying to remove all the complexity for frontend too. However, when thinking about how Meteor went, and specifically about how much stuff is going on in the frontend world, we thought it would be simpler to understand if we stopped at the HTTP boundary.

Bear in mind that there are tons of applications that dont have frontends, especially ones that are just APIs.


Sure I can see that logic.

But how many people are writing APIs and either

1) aren't experienced enough to figure out how to write a Lambda function (using a wrapper FaaS like Netlify), or

2) are experienced and are willing to sacrifice the ecosystem you get from open-source/widely adopted languages/frameworks for a marginal amount of convenience over something like Netlify, where they can use whatever language they already know.

Maybe I don't see it and it's actually a lot of people. But in all my time working on APIs, I've never heard of someone writing an API who wasn't already a decently experienced developer.

Typically the front-end facing solution would come first for them, because why would they build something people like themselves would have trouble figuring out how to use? Which is where most no-code/low-code solutions are targeted for that reason.


> willing to sacrifice the ecosystem you get from open-source/widely adopted languages/frameworks for a marginal amount of convenience over something like Netlify

Obviously, no one is going to leave something that's good for something that's slightly better with a ton of downsides.

So either: 1) Dark is a lot better, like way way way better than what's come before, or 2) it's not, and no-one will use Dark.

We can probably agree that one of these two are true, right?


No single evaluation covers all users. We can see that the demand for software development is high and is especially high for backend. Anything that offers a safe, easy way to develop/deploy backends is a plus whether opensource or proprietary. Don't lock yourself into not getting locked as it goes.


If 1) is true people might still not use it unless open source. Unthinkable in the 90s, now all companies (big and small) I work with demand open source languages and frameworks, besides for embedded work.


Think instead about a frontend or app developer who wants a simple backend that Just Works and can talk to the outside world painlessly (and there are tons of cases where something like Firebase wouldn't suffice). They're not worried about closed-source or lock-in because that's simply not going to move the needle on their project's success at that stage. It could be huge for that market.


Do you need a brand new language to solve that problem though? That sounds like something solved by a FaaS platform that exposes a database and other common primitives out of the box, of which plenty are popping up all over the place.

If we're talking about a front-end dev, they're probably using React, in ES/Typescript. Any backend product targeting these devs would be nuts to not start by offering a JS environment, I would think.

Hence why every FaaS thus far starts with a Node env.


> we briefly thought about trying to remove all the complexity for frontend too

Well, I think this whole idea is wrong, but at least you quit while you were ahead with that one.


A little over a year ago I was building an app, and decided I'd have literally no backend at all. I wanted to build something fast and ship it to the appstores as quickly as possible to go through the process. After I launched, it was featured by apple and was getting thousands of downloads per day. Users wanted to be able to save their data across devices - but it wasn't something I really had time to build in the ways I had in the past. I had heard what Dark was up to, and was lucky enough to join the beta. Dark now powers the backend for my app (nzd.life) - and I really can't express just how amazing it is to use. We added the functionality in just a weekend with a handful of LOC. Dark really is a game-changer. For any entrepreneur / dev who wants to move fast and ship things, they should try Darklang ASAP.


This is an awesome case study. Thanks for sharing. I was having trouble coming up with good use cases for this, but this makes a ton of sense. It's basically like a much more advanced, better Firebase/Lambda/Google Cloud Functions/Azure Functions.

I am in the same boat. I often build apps that are pretty much 98%+ clientside, but there are just a few routes I need for the backend that would add a lot of value, but if I were to create those I can no longer sleep soundly at night because suddenly I have to worry about online storage security, pingdom checks, deployment pipelines, etc.

Now I get where this could be really, really useful.


> Dark is a holistic programming language

No thank you. There's zero chance I'm going to learn and build anything in a language owned by a startup.


Honestly, that's totally cool. There's a certain risk profile that's right for where Dark is now (new startups, low risk projects, under-resourced projects/teams). Folks with a different risk profile should not be using Dark at the moment.


Why would a new startup want to add another factor of uncertainty into building their product? If you want to prototype fast, you use whatever your technical side is comfortable with, you don't pick a new tool where you don't know how or even whether you can do your thing.

Personally, the only real user segment I see for a proprietary language built by a startup is hobbyists and language enthusiasts.


> a certain risk profile

Sure: hobby projects and experiments.

I would not include "under-resourced teams" or "new startups" in that, without many strong qualifiers attached.


Respectfully: why should you be considered a fair steward of trust for them, either? Those people shouldn't be using a startup-backed, no-accountability platform either.


I... don't want to be negative, I like new languages, but I can't help but feel underwhelmed. I guess I just don't understand how this meets the goals that were talked about in previous posts (or how it allows development "without accidental complexity"). I don't understand how this makes things easier and I guess when they claimed that deployment is super fast, I didn't realize they meant to infrastructure under their control. Besides the problems other people mentioned (vendor lock-in[1], non-open source programming language, few details on security), being limited to deploying on their platform, while not that unexpected and I certainly understand it, is not what I'm looking for in a programming language. I also don't really like the "HTTP is the FFI" aspect.. even in mainstream languages with fantastic library support, I find myself reaching for FFI (or libraries that themselves use FFI to wrap something else) surprisingly often. I guess this will be a hard pass for me.

[1] "We're in this for the long haul" isn't the only reason to be worried about vendor lock-in. The other reasons might be worry that the pricing changes (for the service or for support) or that their priorities change or simply don't line up with yours (eg you require a feature that they don't plan to add).


Having worked full stack for so long, sometimes things like this seem way over the top and I don't really get it. Why not have control over your language? Why not have control over deployment, VCS, servers, etc?

I think I understand now that this isn't for me, but could have been once. At one point in your career, you know little or none of this stuff. Something like this would have been very empowering for me while I figured it all out I bet. I like to see technologies empowering people to do more, so I'm looking forward to seeing what people build with this. It looks pretty cool so far.

I would be afraid of hitting limitations and being locked in. That would be a major drag.


I am in the same boat, I've been full stack for many years across a variety of technologies.

The intro video doesn't seem like anything is being made any easier, other than hiding a few of the templated bits away from the developer.

But the developer still has to understand what all this stuff MEANS. You need to understand REST, GET, PUT, REPL and any other acronyms that are involved in API development.

If you know all that, why not just use an established language you already know and build the API, with the added bonus you aren't in a closed language with a closed system that can disappear at any time?

PLUS you can do literally anything you might need to, without hoping that things like this might get around to implementing that feature in the future (which again makes their tool more advanced, opposite of what they are trying to achieve).

Programming is for programmers, and programmers understand how to build APIs ... it's quite simple.


One thing that crossed my mind while walking since my last comment is that this could be great when you work on a team with some junior developers. Like you say, they need to learn all the acronyms and concepts between them, but they're working in an ecosystem with guard rails and mentors who (assuming they're experienced with Dark) can easily keep them on track and help them solve common problems. Hopefully there would be less edge cases and rabbit holes to die in.

At the same time, I value all those scary holes I ventured into as a junior dev, the problem solving skills it helped develop, and the independence it instilled.

It's hard to say, I think this is a cool idea but I'm biased to prefer my own methods I guess. I can't imagine working in such a closed ecosystem these days.


First, thanks to Paul Biggar and the Dark team, for fighting complexity.

Whether or not we agree with Dark's approach doesn't invalidate it in any way. It may mean we don't understand it. There are plenty of companies selling non-FOSS tools and making others successful with them. FOSS does not mean a secure future by any means. The fact that they know they have to prioritize making it a sustainable business is a good sign.

Using any tool, and depending on it commercially, is a risk. You weigh that against who is behind it, the path forward if it goes away, etc. It's easier if you can keep building even when the company goes away. If you rely on their servers, there is always more risk. Is there more risk to a project like Dark than FB's Parse? Nobody can say, without inside information.

What you have to look at, when selecting any tool (ignore the fact that there's a language component here, or that we're devs), is the benefit and the risk. If you have a stack that works for you, and you don't think there's a problem with how you're doing things, don't change. It's really that simple. But there is a revival of RAD, called Low Code, that says there are a lot of businesses out there with needs that aren't being properly met with our "modern" dev processes. If you can get a working product out, and it runs for a couple years, that's a win if you couldn't do it any other way. If you only use Dark to prove a concept, rewrite it after that if you're scared it will go away. Once you have a working product, though, good luck convincing the business it should be rewritten without strong justification.

But we can step back even further and ask: Do you think the state of software development is great? Just OK? Don't see any issues? Do you think that complexity is killing us and things we call solutions really aren't? Or are you somewhere in between?

In watching the videos, there are some things that aren't to my taste. But they note that this is not the final product. If you watch Paul's video, can you deny there is some deep thinking behind it, smart people who have already done a lot while being forced to make real-world compromises.

Yes, it's a business, but they're doing it to make our lives easier too. Shouldn't we cheer them on and wish them the best of luck?

That's what I'm doing.


I really want to try this, but when I put my email address in the website, it's making me fill out what I want to build with it and when I plan to ship and what's my favorite cloud platform...

Holy crap, y'all, I just want to try out your language. It looks cool and all, but why can't I just download the IDE and try it? How are you going to get traction if normal people can't just play around with your language at home?

The tail doesn't wag the dog - I'm not going to recommend this for any projects at work without being able to try it first on my own.


I'd be easy on them. They're still in their early days and want to exercise control over who receives the product. They probably have a good idea about who it's a fit for and who it isn't. Additionally, they probably want to be high touch right now since it is a whole new language + IDE + paradigm.


That may be fair, but I'm looking at the publicity for this and how they're "finally ready to show you Dark in action" which I guess just means... they have a couple demo videos and a private beta?

I guess I'm just disappointed because my interest was piqued a couple months ago (probably when they hit alpha??), and I expected the next big announcement to be able to download something and try it out, or at least play with an online REPL.

Also IME "Show HN" means I can try something out. In this case it just means "hey we've hit another milestone but you still gotta wait indefinitely if you want to use it".

I'm probably being too negative, but again it's because I'm excited by the concept. A definite hurdle for me on my side/hobby projects is setting up all the infrastructure for some little toy app, so this concept is really exciting to me.

Congrats to the team, seriously--based on the demo this is a pretty mature product and the UX looks really amazing. I hope the next big announcement is that I can try it out :)


This project represents a stark tradeoff: lose some complexity, and lose almost all control.

It feels like forcing users to learn a new language is a step too far here - I can't imagine a ton of people are so eager to build slackbots that they're willing to give up all their existing tools.


It feels like HN regular are unlikely to be the ideal audience for this. Reaching for a metaphor, it's like a bunch of expert Unix users gathering around an IBM PC or Macintosh in the 1980s.

It's so easy to bemoan the control we lose (a major problem given our existing workflows) and have no use for the functionality it confers (simplicity, batteries included, lack of yaks that need shaving).

A really great new idea should empower millions of people completely unlike us to build software.


As a concrete example of this: https://twitter.com/stevehind/status/1173643069347917824

> I’ve been lucky enough to be an alpha user of Dark. As a non-engineer, self-taught coder, I was able to build and deploy the back end of a react app, including a Stripe integration, faster on Dark than anything else, including Heroku + Flask. Real game changer.


So this "non-engineer" learned a new programming language, understands Heroku and Flask, and created a REST API integration for Slack?

Can anyone let me know what an engineer is again?


Many people who are "self-taught coders" don't perceive themselves as "engineers", often because many other forms of engineering have certifications. They expect that "engineer" requires a certain level of knowledge that they do not have; it's an unknown unknown kind of thing.

I know someone who, through using a lot of Goole Sheets, managed to re-invent SQL joins. She'd never identify as an engineer, but she did manage to get some software to accomplish her task.


A lot of people can do some magic stuff when it comes to spreadsheets (and as a self-taught software engineer, I am not one of them), but does that same logic really apply to API endpoints?

Look at how many acronyms are in the intro video alone ... the narrator says "we'll just use REPL ...". Does someone playing around in Google Sheets say "yes, REPL, great choice!" or do their eyes glaze over?

What about when you tell them they have to learn "Darklang"?


I personally find “engineer”'s use in a software context as pretty pretentious, so I understand how they might feel like they're really something different. What they don't know is they're as much a programmer as any other.


> A really great new idea

This ain't exactly new, though. The value proposition here is very similar to that of a lot of existing cloud-hostable middleware products, e.g. Dell Boomi, albeit perhaps targeted at a different audience (that is: adapted to actually building backend systems instead of tying a bunch of existing systems together).

Boomi, however, is a flaming pile of trash (and I say this as someone whose dayjob is - among numerous other things - to maintain a bunch of Boomi processes); the version control sucks (and you have to use its version control, because what's Git or Mercurial or Fossil or even CVS, amirite?), it's way overpriced, it's a pain in the ass to do simple things with it (unless there's already a shape defined for the exact thing you're trying to do, or it happens to be something conducive to JS or Groovy scripting; the JS/Groovy escape hatch is the one good thing about Boomi), and you're permanently locked into it unless you want to completely rewrite everything in a different language and for a different platform.

If Dark can address those four problems - namely, by supporting external version control systems (Git at the minimum), having a sane price point (and not gouge users on connector licenses), making it easy to do easy things and reasonable to do hard things, and providing some pathway to escape vendor lock-in (e.g. import/export from/to a self-hosted option, preferably an open-source one) - then I could see myself at least trying it out. As it stands, though, there's no indication that Dark doesn't have the same exact crippling problems Boomi has (made worse by forcing a specific new language instead of relying on existing ones).


My first code was written in Flash 4 (I think?), so I understand the value of a easy-to-use walled garden, and I understand how companies can make money from those walled gardens.

> A really great new idea should empower millions of people completely unlike us to build software.

I agree, but I don't think this is it — it doesn't feel like the SquareSpace of backends. It requires a bunch of pre-existing knowledge (requests, databases etc.), and its language doesn't have the simplicity of most starter languages.


A better metaphor would be PC and Mac users gathering round a 90s 'thin client' and expressing the same concern. If you've never heard of the 90s thin clients there's a reason...


I have heard of thin clients, they competed with desktop apps, which were the incumbent technology.

But thin clients did win, we just call them web apps now, which we run in thin client emulators we call “browsers.” And I recall incumbents scoffing at web technology back then, too.


From my perspective all the negatives of the web app approach have largely come to pass and I'm moving away from hosted cloud apps. Once bitten twice shy I guess. I'm not sure it's time to declare a winner.


Yes, your personal perspective invalidates thousands and thousands of webapps out there that are reaching massive numbers of people that they otherwise never would have ;-)


We do intend the HN audience to love this too. Our target audience is developers building backends. We don't expect we'll wrestle people from their Emacs, so we're definitely not targeting all possible developers today, but definitely developers.


You're never going to wrestle anyone who experienced more than one tech hype cycle into such a stark vendor lock-in situation.


Yes, of course HNers are too wise to be taken by simple vendor lock-in!

    Facebook is closing Parse (parse.com)
    1202 points by theunquietone on Jan 28, 2016 | hide | past | web | favorite | 500 comments
https://news.ycombinator.com/item?id=10991729

...oh.

;-)


Is your point that they'll fall for it again?


Most languages are vendor lock-in actually, with forks not passing an experimentation level. OpenJDK may be the only working example from the mainstream languages.


Are you forgetting C and C++? These are probably the least risky languages you can use. Open source implementations, open standards, multiple implementations.

A language with only a single, open-source implementation controlled by a single vendor, like Go or Erlang, has slightly more risk, in that the single vendor could choose to take the language in a direction you don't like. However, even if that were to happen, it's open source, and the community can maintain it as long as there are enough users.

A language primarily controlled by a single entity that is actively hostile towards openness, like Java, is a little more risky yet, but even so, with enough users it becomes safe enough.

A language that's not open at all, like Mathematica or F#, puts you entirely at the mercy of the company that controls it... but if that company is big and has a good track record, it's still at least a reasonable trade-off.

Now, if something is created by a startup that has at best even odds of being around in five years... you still might take that risk if the technology was open, and you could run it yourself when they close up shop, like, say, Meteor or MongoDB. These are decisions that one is rather more likely to regret, but it's not hard to see how people make them.

However, if a new company introduces a new language that is also it's own walled-garden deployment environment, which you can't run on your own systems, which has no demonstrated history of doing anything well, and which is not open source, anyone choosing that language for a project that's expected to be around for a while would have to be either inexperienced or just plain crazy.


> Our target audience is developers building backends.

Why wouldn't developers building back-ends just continue building back-ends in their preferred language and environments?

I type this as I'm tabbed out of Visual Studio creating API back-end in C# .Net Core right now. It's easy.

With this I'd have to 1) Learn a new language 2) Learn a new GUI interface for that language 3) Lock myself in


... buuuuut you don't have to learn how to:

1) deploy your code 2) deploy your datastore 3) manage your datastore 4) shard your datastore 5) deploy your infrastructur3

Among many other things. The value of Dark Lang lies not just in the programming language and the IDE, but in the holistic experience for backend development it provides, since _all_ of the overhead required to actually move to production and make new releases completely vanishes.

Reducing the entire idea of darklang to "vendor lock in, lol naw" is missing the point, but also kind of nailing it.

By reducing options, you gain the freedom to focus on the problem you set out to solve in the first place.

Of course, it's not a silver bullet right now, but it's an interesting bullet nonetheless.


> .. buuuuut you don't have to learn how to: 1) deploy your code 2) deploy your datastore 3) manage your datastore 4) shard your datastore 5) deploy your infrastructur3

Or you can just get a cheap host and throw a table into a SQLite database (a file) and use JavaScript.

I'm probably not the target audience.


> We don't expect we'll wrestle people from their Emacs

Well with what I saw on the videos if it's possible to extend Dark inside itself - yeah, I would prefer this over Emacs


> A really great new idea should empower millions of people completely unlike us to build software.

Do you mean, like, some sort of "silver bullet"?


Maybe like a "rubber bullet", it can inflict some damage but shooting oneself in the foot bears very little risk.


How confident are you that your database abstraction is going to fulfill the needs of someone with anything more than a few trivial query workloads?

I didn't hear much about the database at all other than "it just works." This sounds like a recipe for full table scans falling over once more than ~10K records are in a given table.

What about transactions? Can I do joins?


> How confident are you that your database abstraction is going to fulfill the needs of someone with anything more than a few trivial query workloads?

At this point, why does a tool like this need to exist at all? To a full-stack developer writing API's isn't difficult ... and if it is difficult then you are going to need a lot more than a tool like this.

Should non-programmers be creating JSON REST APIs in the first place? I don't really see where this is going.


The model here is that we own the responsibility of making it scale. We haven't solved the problem of significant workload, but there doesn't seem to be any reason why this wouldn't work - certainly our current (low-scale) users have not had any scaling issues with Dark. If there's a fatal flaw we haven't thought of, please let me know.

We deliberately cut relational features for now because they didn't mesh with our language. We want to add joins back - right now you're doing stuff the NoSQL way (which is not my preferred way, but it's where we are today). We haven't figured out or transactional model, but we want to have a good story around that.


> We deliberately cut relational features for now because they didn't mesh with our language. We want to add joins back

You're going to get caught in that age-old trap.

Try to make something to "make programming easy", then realize it meets the needs of very few due to lack of features, and then start adding features until it's not "easy" any more it's just programming.

And then you realize you're decades behind what people are already using to do programming.


It's very easy to paint yourself into a corner if you haven't figured out at least a plan of attack for these topics up-front, especially if you're starting to ramp up actual use of your product.


> We want to add joins back - right now you're doing stuff the NoSQL way

Can you expand on the database capabilities? By NoSQL do you mean no relational data, no constraints, etc?

You can do joins in Mongo, but it's still not an RDBMS. And you can have relational data and constraints in databases that support non-SQL query languages. NoSQL is a bit of an overloaded term these days :)


Yes, that was a bit vague, sorry. What I meant was that our datastores are simple key-value stores at the moment.


> What I meant was that our datastores are simple key-value stores at the moment.

And if you go down the route of trying to expand that, then you are no longer a tool for easily building APIs, you are now a database tool also ... and before you know it you are trying to replicate features that RDBMs have had for 40 years. I wouldn't envy trying to have to implement ACID transactions.

I realize it seems like this is hyperbole but have you drawn a fine line in the sand at where the features for Dark end? Because if not you will quickly paint yourself into a corner with this.


Sent you a Twitter DM. Too much to type out, but I have some ideas for you.


Thanks!


Right, the demo video lost me at the datastore point. This is a fancy ORM. Now, I do get that making app dev so much easier is a very good thing, but ORMs are a double-edged sword. You need an option for the dev to have much more control over the schema and queries!


Hey folks, excited to finally unveil Dark and show you what we’ve been working on! We haven’t publicly shown how Dark works before, what code is like, or how deployless works. We hope you like it.

We’re not fully publicly available yet (we hope you’ll excuse this Show HN when you can’t use it, sorry!), but we’re working hard to open Dark up to more people.

Would love to hear your feedback. I’ll be around all day to answer questions.


I’m not sure if it is possible to give you any feedback on a closed source, invite only beta release but I do have a question:

Where is this hosted? Asking as an EU based user with GDPR requirements.


We're not suitable for GDPR compliant applications yet. Now that we've got Dark actually working and shown to the world, we can start addressing it.

Currently hosted in GCP, US west.


Thank you.


Why should I go for a vendor locked, proprietary solution that could disappear at any moment for any critical infrastructure? Especially when it requires a proprietary language no one has ever worked in before while there are at least a half dozen tried and true tech stacks that do this exact same thing, are not proprietary, and engineers already know them?


Look very cool, and I'd love to try it out... HOWEVER....Being closed-source, backed by a single company (startup or not) is not an acceptable level of lock-in imho.. (maybe for small pocs)...

What "guarantees" that you dont decide to charge far too much (or increase price mid-way)? What "guarantees" you wont kill a feature I need/my development requires?

Its a very nifty thing but without having self-hosting ability and this being some sort of open project (at least partially so users have a 'way out' if the company's direction changes) I cant see using this for any non-personal project...


We answer that a little in our FAQ: https://darklang.com/language#faq

I don't think there are any languages that allow the same thing that Dark allows - the integration with the infrastructure is the whole point. I certainly haven't seen deployless or live values in any other stacks. Which ones are you thinking of?


I had a chance to sit down with Ellen, one of the co-founders, and see an earlier beta. Congratulations to the entire team on this milestone; excited to see what you have in store. For context, I used to run a consulting company where I shipped a lot of greenfield software, especially CRUD MVP apps (which I think is a segment you're targeting). So I love folks trying to make this kind of work easier.

I'm curious who you see your audience as. If you look at a spectrum across skill level:

* On the far left you'll have those learning: univ students, boot camper's, technical folks in non-eng jobs (think operations-y people who are zapier+spreadsheet wizards).

* In the middle you'll have junior engineers starting their first or second role.

* On the far right, you'll have senior engineers who are looking at factors beyond functionality like architecture, style, performance, etc.

I think the middle is out. These are folks who've made an investment in their education and are looking to apply it. They're looking to earn their stripes and might trade efficiency for that. There's also secondary effects of using the incumbents like membership into a community (I run the SF Django meetup so I see this up and close).

The far right is out because DL is hiding the complexity they're precisely interested in tailoring (or at the very least, having the optionality to in the future). Additionally, they're very fast at the operations you've optimized for (CRUD) so that's not necessarily a barrier for them. They'll be working with boilerplates that are deployment ready (though not instant like y'all - that's pretty cool!). Yes there's some pain here you're solving. Not enough to justify the switching costs, IMO.

I think that leaves you with the beginner crowd. Zooming in further, I'd exclude students since there is no value for them to invest in something they wouldn't get hired for. There's the casual indiehacker / weekend project person. I think this would work fantastically for them because they just want to spin something up as fast as possible. There's also the operations person who does a lot of ducktaping of airtable+zapier+typeform+etc. I know many people who are doing that and when they hit a ceiling, this could be perfect.

I'm arriving to the following conclusion: though you're not a no-code tool, you share the same target audience. Repl.it is a good comparison here.


Great analysis. I also think you have 'small operators' and 'large operators' in middle and right. Consider a large number of small consultants building small-ish websites with some interactivity and state for small clients. They might use RoR, Django, but have to manage and run the operations and a database, even if they use cloud services. Wouldn't they be better with a integrated solution across coding, building, deploying, etc?


This is an excellent analysis. I'm in that "far right" crowd so I am just not seeing this at all.

> I think that leaves you with the beginner crowd.

The problem with that, is ... well ... $$$.


I segmented the beginner crowd into two cohorts: side project folk and operations people ducktaping zapier+airtable, etc. The former does not have budget, the latter does (small businesses, early stage startups).


I think this is really cool. I love that they're writing a projectional editor and trying to make that work, because it's such an obviously good idea that should be more widespread. You can make major DX improvements by tightly integrating tools that are presently decoupled, and that seems to be the big idea behind this.

I have a hard time believing this is going to work, but I've been wrong before and if I lived in the US I'd be tempted to apply for a job. How often do you see programming languages get funded!


Great stuff! My suggestion is to really leverage the possibilities opened up by the design choices that make Dark different - the structural editing and db/infra/editor integration. E.g.:

- Have multiple projectional views of the system, triggered on keypress, e.g. caller context, database context, handler context. So if I'm editing a function I should be able to see the handlers that are affected, also the call stacks up and down, even show function calls inlined, current live errors overlaid, etc.

- Easy example based testing. Can I just click on a function, type input values at the top, then dark shows my intermediate values and output, and then I mark a 'check' on this trace to stamp it as a test case? Then every related change (or a special button) runs affected tests and I can see what's failing. I didn't see any testing in the demo.

- History of each function, each handler, each table - absolutely need this, with 'blame'.

- Immediately live is nice but really you want to roll out some related changes together, and a 'diff' of a snapshot against another one is great. I should be able to see the db diff, the function diff and handler diff in one integrated view. Should be able to 'label current version', in addition to auto-save.

- Annotations - these should be allowed everywhere. I assume functions, AST nodes, tables, columns etc are already reified, so I should be able to link to them in free form annotation comments that I may put in the code or just floating around by themselves. Documentation needs to be integrated as well. At the very least I should be able to link to a function or table via an external hyperlink.

- A standard CRUD UI for DBs should be available.


Great suggestions, you'll be happy to know many of these are on the roadmap, and some have already been done!

> Have multiple projectional views of the system,

Some amount of this works already (you can see callers and callees, you can see the DB schema); we want a callgraph view for sure, and I like the idea of seeing the handler at the bottom of the call stack.

> Easy example based testing

Yes, this is planned to work similar to traces, and it should be trivial to turn a trace into a test

> History of each function,

Yup, planned

> 'diff' of a snapshot against another one is great.

Planned, but low on the priority list compared to the other stuff you've mentioned.

> Annotations

Planned. We've implemented some grouping (similar concept but obviously different use cases to tagging). Some of these annotations would be automatic or semi-automatic.

> A standard CRUD UI for DBs

Planned :)

> DB/field annotations for privacy

We plan two aspects to this. There is the "PII indicator" which says this is PII and shouldn't be logged at all. Then there's access-control lists where we decide who (if anyone) can view certain attributes (eg: this dev is a contractor, do not show them live values).

Thanks for all the suggestions!


One more for ya.

- DB/field annotations for privacy - given it's 'one integrated system', can we attach a privacy attributes to fields or db and automatically hide them everywhere (even in the dev view?)


We have no insight as to what the actual costs of running the infrastructure is.

Dark can basically ask for any numbers they want and you'd have to pay it if you build something sizable on this platform, because moving away would be even more costly.


We absolutely want everyone using Dark, so jacking the price like this would be extremely counter productive. If we did that, no-one would start using Dark after that.


Paul, the incentives you've put into place with this business will destroy your company. The proposition you've set up for developers is to build their buildings on land you still own. Established developers already understand the risks associated with this practice and will avoid you. At some point if anyone manages to build a business with darklang you will have them over a barrel and they will accept any cost increase below what it would take to switch away from using your platform. If you don't want to raise prices, your successors will.

I don't think this idea will work since there are too many viable options in the marketplace, and people are smart so they will avoid lock-in when they can.


How is this different than running on certain cloud providers? For instance, a team can become deeply integrated with AWS services and then have trouble moving off if AWS starts raising prices.


AWS has competition, there is only one darklang. While it certainly would be difficult for most to move away from their cloud providers, it can be done. Almost all cloud providers are just packaging together open technologies with their established internal conventions. There is a world of difference between "this is a pain in the butt and we should have planned better" and "you have to start over completely from scratch".


And you can actually do a gradual migration from AWS to another service! With the fully closed system of Dark that seems like it would be difficult.


How is using APIs for deployment and scaling (from one of the biggest companies in the world) different from writing your entire codebase in a new language introduced by a brand new startup?


> so jacking the price like this would be extremely counter productive

Maybe right now, if the funds are there. But what about in the future, where revenue is required to keep it alive?

These comparisons to Amazon are unfounded, because Amazon is not going to create a blog post one day alerting their customers that AWS is shutting down. AWS was built because Amazon needs it, and people knew that when they signed up. It's not going anywhere.


Will you guys be transparent on the pricing then?


Absolutely! We don't have any pricing right now because we have not done any work to figure out what the pricing will be.


Huh, but you have investors, eh? :-)

What about this: pass through infrastructure cost with a wee markup for maintenance/support and negotiate a modest percentage of gross revenue from your successful client companies.

That way you have a low-risk "farm" of potential big hits, and your users have stable costs.


Hey folks, excited to finally unveil Dark and show you what we’ve been working on! We haven’t publicly shown how Dark works before, what code is like, or how deployless works. We hope you like it.

We’re not fully publicly available yet (we hope you’ll excuse this Show HN when you can’t use it, sorry!), but we’re working hard to open Dark up to more people.

Would love to hear your feedback. I’ll be around all day to answer questions.

[I originally posted over at https://news.ycombinator.com/item?id=20985429, happy to answer questions here until the mods merge them]


Congrats! I'm very interested to see how Dark progresses, and wish you all luck.

I don't have time to write anything, so I'm not signing up for your beta, but I kinda wish I had the time.


Thanks Steve!


I got the email, and read through the post, it seems awesome. I remember the original HN post and am excited to see the progress.

I have a few random questions.

1. What is the support for interop with other languages (e.g., python for machine learning, rust for low level). Or is that even a reasonable question to ask?

2. What is the pricing structure going to look like?

Very exciting! This is great.


1. The "foreign function interface" in Dark is HTTP. So to do machine learning, either use a service that for it, or put your ML stuff in a container with a HTTP wrapper around it.

2. We plan to charge for infrastructure, on a usage basis. If you use only a little, that should fit within the free tier.


Who backs your infrastructure? GCP, AWS, Azure?


GCP.


Good to know! With the approaching FedRamp High certification across all GCP services, this seems like it could be really useful for resource constrained state/local governments and municipal services.


I'm having trouble understanding what this is. Is it supposed to be a competitor to Django/Rails/etc.? or a competitor to ansible? a competitor to docker? Something else?

If I have a Django/Django REST Framework app, can I deploy it with Darklang? How is it better than "git push heroku master" for small apps?


It seems like an elm-lang for the backend -- by that, I am strictly referring to its all inclusive nature. You must use their language, build tools, infrastructure, et cetera. It even seems like you must use their in-browser IDE; though it has advantages they demonstrate in the first video in the post, you're sacrificing a _lot_.

Unlike elm-lang, it's not open-source.

So to answer your question, no, you can't deploy a Django app with their platform.

EDIT: It seems like you're even giving up git for their own particular brand of version control that is tailored for their use-case, e.g. seems to include in its scope database migrations.


Brain dump: Looks very cool. From what I can tell...

pros:

* No tooling to set up, don't have to think about project structure or computation (VMs or cloud functions)

* Don't have to think about databases, connection strings, etc

* Fast deployments

* Perfect for rapid prototyping or hackathons

cons:

* Vendor lock-in at the language and infrastructure level

* Not open source

* Have to learn a new language

Compared to serverless (for a CRUD application), I wouldn't have to write configuration to set up the API endpoints / dynamodb tables. Also, deployments would be super fast which closes the developer feedback loop. I shouldn't have to worry about emulating my stack locally or deploying my stack every time I want to test my code.

The cons make this very hard for me to buy though. My ideal framework would be open source in a popular language (JS / Go), runs on cloud (AWS / Azure / GCP), fast deployments (no cloudformation), low configuration / convention based (like nextjs), and integrates with popular NoSQL data stores (mongo, redis, etc). Basically it would be completely conventional with an opinioned data access and the ability to override features to add more complicated functionality like optimizing data access after the initial prototyping.


I'm excited to see more people get access to this! My cofounder and I rebuilt our project tracking platform on Dark and will be building the rest of our products with it. It makes building simple and makes testing 10x faster and easier for everyone on our team. I've been waiting for it to launch so that I can recommend it to more people.


This reminds me of the way Meteor was hyped up. Except now with vendor lock-in at the language level.


Conceptually, Dark is a game-changer. The question is: can you deliver on the details?

Can apps written in Dark scale to 10k LOC or will the browser UI get jittery? How many concurrent users can Dark apps handle? Do you integrate logging and metrics?

I hope you are making an iPad app. That would be truly next-level.


We hope we can deliver!

> Can apps written in Dark scale to 10k LOC or will the browser UI get jittery?

We've had a number points where there editor became unresponsive and we had to rearchitect parts of it. We feel pretty confident about scaling the UI - not so much that it's perfect but that the problems are tractable.

> How many concurrent users can Dark apps handle?

Many more than our current users need, but not as many as we'd need for general release. One of the reasons we're in private beta is that we need to do a lot of work on scaling to make sure we can support new users without damaging the experience for current users.

> Do you integrate logging and metrics?

We have integrated observability, and we plan to have metrics but don't yet.


Who is this for exactly?

I don't see how the target can be entirely non-technical people, since this still assumes some knowledge around databases/functions/REST/HTTP/Schemas/etc.

Technical people have very little reason to use this, since this platform is a walled garden of proprietary tooling, and there's only so much you can achieve with abstractions and fancy ORM. You won't be able to break out of the mould when the time comes, so why waste your time in the first place? Do it right the first time and maintain your flexibility and freedom later on.

I believe the only remaining target audience here is technically-inclined people that want to build a cheap prototype quickly, just to test ideas. This is a playground basically.


There is a large - and growing - population of technically-minded people who understand the core concepts you're referring to (REST APIs, databases, HTTP, etc) and have ideas or needs for applications, but don't have the experience required to build non-naive implementations of their ideas.

Moving the bar on "high-level programming" up a few notches to remove even more of the plumbing required to build and launch an app is only a good thing in my mind. It provides more options for more people.

Dark definitely won't be for everyone, but it seems to me like it will empower a lot of people to bring their ideas to reality more easily than before.


> "Dark definitely won't be for everyone, but it seems to me like it will empower a lot of people to bring their ideas to reality more easily than before."

I agree.

> "There is a large - and growing - population of technically-minded people who understand the core concepts you're referring to (REST APIs, databases, HTTP, etc) and have ideas or needs for applications, but don't have the experience required to build non-naive implementations of their ideas."

Sure, but one could argue the Darklang approach is actually not that far from a "naive implementation" of those ideas. There's only so much you can do with prefab code and lock-in tooling. There's definitely a market for "Wix for SaaS software", but does Darklang strike the right balance?


To your last point, I think we'll have to wait and see?

Funny that you bring up Wix, I was thinking of that comparison too earlier..

In the early days, we had Geocities, Angelfire and other hosted web publishing sites where people could tinker with the CSS and images and post their content.

Then came Wix and Squarespace and the like, where you could also edit the HTML and start to add some functionality..

Now we have Darklang where you can write code as well..

Each one targetted the level of sophistication of the current generation of digital natives who wanted to build something for themselves on the web.

And each one is likely a stepping stone along the way for those who want to keep learning and have more power and control as they build more sophisticated things.


> Dark definitely won't be for everyone, but it seems to me like it will empower a lot of people to bring their ideas to reality more easily than before.

That is, after they learn a new programming language, error handling concept, a new IDE, and a proprietary data store.

But yes, after that it's almost drag-and-drop!


I don't recall saying it would be easy or trivial..

But those concepts you listed are certainly more straightforward (and aligned with "building an app") than dev ops, hosting, deployment, scaling, database config, etc..


Great to see you unveiled. Best of luck, i really look forward to having a real cloud-native way of developing software.

Do you guys plan to support smart diffs for code reviews? As you work on AST level, it should be possible to detect some more patterns, e.g. an re-arrangement of some pieces of code, refactorings of many identifiers, etc., categorise them and have a diff summary for the review.


We haven't started work on the built-in code review, but that seems like a cool idea, thanks!


Not sure I'd want to be writing services I depend on in a language whose priority is ease of prototyping.

In his post, Real problems with functional languages [0], Paul Biggar creates a false dichotomy: static types help us to write correct programs while dynamic types let us prototype faster. Dark wants to be able to do both.

I believe Haskell allows us to reject outright incorrect programs sooner and allows us to prototype things faster due to its types and inference engine. I don't really see how Haskell is poor as a prototyping language. From experience it's better than dynamic languages as it has allowed me to focus on logic and domain problems instead of mucking up my code with brittle run-time and equality checks... and then chasing down bugs I've made for myself.

No where is it mentioned what type system Dark is using. Will Dark allow a program to be deployed that it cannot reason about? What about higher-kinded types and polymorphism? Does it enforce termination or is bottom a type in every kind? Does the type system enforce linearity in usage? Quotient types? Row types?

This looks like a cool project but I don't think I'd use it for anything without knowing more about how it works.

[0] https://medium.com/darklang/real-problems-with-functional-la...


This may be too ambitious- throwing away control over code, editors, infrastructure, and having a sub-par offline experience seems like a dangerous move.

After watching both videos, Dark just looks like a more managed version of AWS Lambda, with a fancy proprietary editor.


This is really awesome and even if it doesn't "win" is a glimpse of a future where you can build a full scale tech company and nobody needs to know about things like k8s and "service meshes".

This is obviously very early but for doing basic backend stuff there's so many smart things here going on already that it's already 10x better for the use cases they're targeting.

The one thing that didn't get covered in the "Dark in action" video that should have is where do the twilio/slack tokens get stored? I'm sure there's some environment/global variable somewhere UI somewhere but the fact that it's alluded to but never shown is an annoying omission.

If they work on a ton of integrations (which is super annoying work unfortunately) I could see this being a big competitor to Zapier or the whole "glue" type infra work that so many companies deal with. If they take a marketplace approach where people can build "blocks" that are easily shared that would be a big deal. And considering they run the whole stack, monetizing the sharing of blocks would be a cool business model too.


Thank you for the kind words!

> The one thing that didn't get covered in the "Dark in action" video that should have is where do the twilio/slack tokens get stored? I'm sure there's some environment/global variable somewhere UI somewhere but the fact that it's alluded to but never shown is an annoying omission.

We actually just put them in functions. We haven't built a secret UI, and we didn't build global vars because functions do the same thing.

> If they work on a ton of integrations (which is super annoying work unfortunately) I could see this being a big competitor to Zapier or the whole "glue" type infra work that so many companies deal with. If they take a marketplace approach where people can build "blocks" that are easily shared that would be a big deal.

We plan to add a package manager so that packages (which could be wrappers of various APIs) can be shared. So similar to npm, rubygems, cargo, pypi, etc.


This is really cool and very intriguing.

Can we access the data store/our data outside of dark?

What is the datastore build on top of? Is that proprietary?

Also, is there the option to use the raw Twilio API if we want or is the dark version the main one supported?


> Can we access the data store/our data outside of dark?

Yes and no. You can easily put an API in front of it so that you can expose it however you like, download it, etc. But there isn't something like a postgres connection string.

> What is the datastore build on top of? Is that proprietary?

The goal with the datastore was that there is no impedance mismatch between values in the runtime and values in the datastore. The actual implementation is a thin layer over postgres.

> Also, is there the option to use the raw Twilio API if we want or is the dark version the main one supported?

Yes. That Twilio::sendText call is just a wrapped HTTP call, and under the hood it's pretty similar to how we called the Slack API in the video.


The workflow that creates a new request from historical 404 requests is incredibly intuitive. I could see this helping entering the development "flow" zone when jamming on a brand new project.


I'm recalling the disaster that was the Parse framework. What makes this any different?


It hasn't had its incredible journey yet!


This is interesting. Congratulations on your hard work!

What does error handling look like? Do individual cards basically become individual classes with functions and handlers? I would love to see more examples of apps build with dark.

Does anyone know if there are tools in reverse of dark - build API and based on that create front end?


Error handling is done with Results and Options. We have a concept called an ErrorRail to simplify this: https://medium.com/darklang/real-problems-with-functional-la...


How does version management work with dark?

Do I get access to the "raw text files"?


We combine version control, deployment and feature flags, with the intention of simplifying the three concepts into one.

The idea is that you use feature flags to manage versions (my video on the blog post goes through that workflow). We haven't yet got features to support moving back to old versions (apart from undo), but we will.


Thanks for the quick reply :)

A few more questions

# Maintenance costs & agility

You're not just building a programming language, you're also building an IDE, and now a version management system (through feature flags).

Each of these tasks are hard problems individually, what gives you the confidence that a small startup can build all of them? All of this while trying to make your company profitable.

# Ecosystem

If your language is not hosted, how do you plan on building an eco-system around it. (I know you come from a Clojure background so you've probably seen the wonders of being able to re-use Java's ecosystem).


> Each of these tasks are hard problems individually, what gives you the confidence that a small startup can build all of them? All of this while trying to make your company profitable.

For sure it's hard. FYI we're hiring: https://darklang.com/careers. The intuition is that this stuff is way easier when you don't have to support everything under the sun. The editor just needs to support the Dark language, the infra is tied to it. It reduces scope massively.

> If your language is not hosted, how do you plan on building an eco-system around it.

We plan to have a package manager that is easy to contribute to. I think we should be able to grow the ecosystem quite quickly.


So no GitHub integration?


Not planned. We plan to expose the APIs around this so you could build something yourself that syncs to github possibly, but that's not the design for sure.


Ok so I’ve read the linked post (who still uses medium?? ;)) and the HN comments and I can’t think of a reason to consider this product.

Thinking about usage from two perspectives:

As a developer, junior/senior/whatever, I don’t know why I would use this. There are so many tools that accelerate and mitigate the difficulties associated with building services that I would choose in a heartbeat over something like this proprietary, closed source product.

As a manager/leader, I would never support using a tool like this. Again, closed source, lock-in, learning curve are a few concerns.

I hope my tone was not dismissive; I would really like to hear people from the dark team sell me on this.


Paul, first of all kudos on what your team has accomplished so far. And plenty of respect on having the courage to attempt a leap on how backend technology works.

IMHO this as the first time we have improvement in the huge complexity required nowadays to have a backend, particularly for a small company which can not afford a whole Devops or Infrastructure team.

Just a one question: - Given your use of OCaml and Reason ML why did you choose to go with your own language instead of using one of them. Wouldn't it be easier for developers to adopt say Reason ML, and then just use a library you provide?


There aren't any languages that support what we need to do to solve the complexity we want to solve, including OCaml/ReasonML.

Given that, whatever language we'd pick we'd have to hack them to get what we needed, and then we wouldn't have JS (realistically, if we were to pick some existing language it would have to be JS), we'd have some shitty version of JS.

Which is what App Engine did with their early versions: I worked on an app engine project that had a hacked version of Django where nothing worked.


I wish it was possible... as of now Darklang is mostly a language that only runs inside of Dark; that will be a problem in the future, but I understand that it's early days, and this was the sound decision to do now. Godspeed!


I’m not even sure if developers are the target audience here, but rather C levels who will dictate that the developers will use this to lower perceived costs and reduce theoretical development time. What could go wrong?


I still remember how involved pbiggar thesis on compiling scripting languages such as php was

https://paulbiggar.com/research/


Well I watched the videos, honestly what he is talking is exactly all the problems I've been facing for the last 7 years working on web backends. I wish you well and hope I can use Dark at work one day.


Maybe it's just the color scheme, but a lot of that UI reminds me of the Kickstarter-era demos for Light Table (in particular, the "lots of windows each with one function inside" pattern)


Dark looks really cool. When I heard about it before my initial reaction was a huge "nope", but after watching the videos I'm curious to try it out.

It's amazing just how little friction there is for you to get an API endpoint backed by a datastore up and running. That being said, there are a bunch of unknowns. Having my entire application, even down the language it's implemented in, being proprietary is a little scary.

Will definitely be looking forward to playing around with this. Just as soon as I get my signup email ;)


You might want to check out the serverless framework.

It's not remotely as unique as you seem to think, as even that framework is just one of many.

https://serverless.com/


I guess if you wanted to do something similar but open, you can edit code directly on your server, use erlang/elixir's hot reloading, and call it 50ms deploys.


When we were designing Dark, we wanted to be sure that it would actually be a thing that was safe to do, so it isn't just the same as hot reloads. Have a look at my video in the blog post: feature flags and versioning are a super important part of making this safe!


What scares me is that their whole site doesn't mention the word "security" once.

Also "testing" is in the FAQ as a "we're working on it"-item.


The FAQ mentions security. We've been working with a security consultant for over a year. One of the reasons we're in private beta is that we need to get security right before we're generally available.


No, it does not. The word is not used anywhere on the page. There is a mention about privacy, PII, GDPR, Audit logs etc. and how that's not implemented yet. If that's what you meant, fair enough.

Still a bit scared for your initial beta users running their business on this as mentioned elsewhere.


Oh, so it doesn't! Sorry, I meant to check before pressing send but got ahead of myself. We do quite a lot of security work - it's probably the one area we don't cut scope on. Someone reported a security bug today and we fixed it immediately.


Ok cool. Would maybe make sense to create a dedicated page for this outlining how you are keeping my data safe and unwanted people out.


Ugh, why embed tiny videos that can't go full screen.


Apologies, we don't know why this is happening - something with medium and vimeo. The videos on our home page go fullscreen: https://darklang.com.


Looks like fullscreen from iframe embeds has been disabled by Medium.


In Firefox you can right-click and select Open Frame in New Window as a workaround


I don't like the arrogance of such projects. Plus, when I decide to invest into a technology, I do due diligence, and I'm not impressed here.


This would be awesome if node wasn’t around. But I feel like this is a 2D canvas on which you throw node functions.

Node+express is already simple enough...


Agreed about the 2D canvas; we've been cutting scope aggressively to launch this. We have a different metaphor in mind but it will take us some time to implement.


Why invent an entirely new language instead of using an existing popular one such as JS or Python?

It's hard for me to see the benefits being worth the difficulties.

Edit: after seeing the building block like nature of the editor it makes more sense to me. It's ambitious and a really cool concept. Would be great to see wider applications of that editor/language.


I can deploy a Docker-based node backend with basic functionality from my phone's ssh client in five minutes.

Give me a bit more time, a keyboard and I could build you any API endpoint, http server, glue code between DB or even low level proxy server functionalities.

No offense but isn't the 'problem' backend solved years ago?


Am I the only one excited for this tool but with an actual programming language like Python instead?


Node-RED is kind of similar, but for node.js


There are a lot of interesting ideas here. They're two years in, I'd guess perhaps one or two years from the larger vision of supporting real applications with lots of users.

I'm interested to see where this goes, and if they're not able to turn the closed-source version of this into a business, perhaps they'll inspire some community of OSS people to do something like it.

I'll say after having worked on migrations out of proprietary platforms like App Engine, I wouldn't use anything I couldn't run myself all the way down to the bare metal should their company up and disappear. They will have a lot of problems convincing people to bet their business on this platform if it's completely closed.


Congrats on the private beta launch! I look forward to doing some tire kicking when it's in open beta ;)

There has been momentum around this kind of idea (personally I've used WolframLanguage, Anvil) - pros and cons to each approach. I'm excited to see where this goes!


Like all projects hoping to reduce the complexity of software development, this will go nowhere.


How do I work with a team of people on something like this? How does it deal with conflicts?


The collaboration is google-docs style. You can see if you're working on the same code as someone else, see the feature flags they're building, etc, to avoid conflicts.

That said, we haven't tested this with teams of more than two people, so we might need to change how this works.


So what kind of prototype do you have to have to get money to work on this for 2 years?


Honestly, our "prototype" was screenshots from an 800 line demo, and about half the people we spoke to believed that this wasn't actually possible to build.


Can you speak more to the scope of this? I'll be watching the video later - but, I'm curious how this "isn't possible to build"?

Also curious about the reasoning behind a new language (Dark), instead of supporting other languages out of the box. Could've started simple with supporting node / python and worked towards go, rust, etc.


Specifically in the context of fundraising, we said "backends are way too hard to build, we can remove all the accidental complexity of infrastructure, deployment, and APIs". Many people felt that that was not possible.

The "Dark's philosophy" video addresses the language a little - everything that's cool in Dark is enabled by the super tight integration between the language, editor, and infra.


I watched the videos and read the blog post. My response is equal parts amazement and skepticism. They poked fun at Kubernetes but what they have is something less transparent (more magic) and requires you to learn a new language and way of working. I'd be much more receptive if the option was there to peek under the covers and let me use my own language. I'm also curious how this would work in a CI/CD environment inside enterprises that require it. This all being said, I signed up for the beta and look forward to kicking the tires.


Congrats! I have tremendous empathy for your cause. Best of luck.

- Austen @ Serverless Inc.


Thanks Austen, that's so kind!


I fail to see how this is "a holistic programming language". From what I see, I would call it a SaaS for building APIs. Even if I were able to use outside the platform (which doesn't appear to be possible) it looks more of a framework or DSL at best.

The linked post, the videos, and the landing page are good in terms of marketing for non-programmers. But it is not satisfying to me as a developer, especially when trying to convince me to buy in the whole platform + custom editor stuff.


The way workers and events are exposed looks pretty slick, and I think abstracting away infrastructure and dev environments is the future for teams who care about speed to market. One nagging question is, how do you plan to make money? Will you have a free/freemium self-service offering? Any plans to target enterprise? I think some assurance of financial viability would ease the minds of otherwise reluctant adopters. Full disclosure, I'm a solo developer working in the IaaS space.


We charge for infrastructure (that is, we host your infra, so you pay based on usage) - this is also what we did at CircleCI. Small users will pay us very little or fit within the free tier. Huge users will pay a lot.

We plan to support enterprise users too, but that's a little bit down the line.



Really cool idea. Even after being a coder for 4 years, I still don't know internet stack and I'm greatly confused as to what backend/frontend to use whenever building a new product. Looking forward to using it as I have tons of small prototype ideas.

Why didn't you use an already common language like python, with rest of features? Is it difficult technically? I'm just trying to understand your choice.


How much will Dark cost? A >>We're still determining specifics, but Dark pricing will be based on how much infrastructure you use. We will be charging for traffic, compute, and memory usage, similar to other infrastructure. Dark will be free to start, and will gradually scale up with usage. We expect that our free tier will fully cover small projects.

ummm, no


Proprietary language. Proprietary IDE. Proprietary infrastructure. Each is required to take advantage of the others.

NO FUCKING THANK YOU.


congratz!

maybe for the generation which grows up with scratch, new concepts and ideas are needed. not sure if darklang will make it, but exploration in the space will surely help.

writing this from while using emacs as a window manager(exwm), made me realize how impossible it is for me to evaluate change.

best of luck.


Thank you, Jack!


not sure to which spectrum this falls into but: how different is this from firebase? or from any other backend-as-a-service? surely not something for engineers, but for business/product people that want to quickly bootstrap/hack their own backend/api


>"I can serve them whatever I want"

Well, this is the problem with designing backend, knowing what to do. Not actually writing the implementation. The way I see it, no problems are circumvented.

Cool development-environment nevertheless, it'll be really good for beginners.


Any chance of a link that doesn't require a medium account?

Sounds interesting from the comments.


Hmmm, I wonder if it's a growth hack that Medium is doing. In incognito mode, i don't get the registration requirement. I'm told clicking "next" just gets you through it?

Sorry about this, I think medium wasn't the best choice for the blog.


Medium is seriously the most aggressive offender of this. Popups, Google account snooping. It's really ugly. I seriously don't know why anyone uses Medium anymore. There are plenty of better, less creepy solutions to sharing text.


This reminds me of Circa ~2006-2008 3Tera Applogic ... https://en.wikipedia.org/wiki/3tera


From the landing page:

> Speed of developer iteration is the single most important factor in how quickly a technology company can move.

What? "Speed of developer iteration" barely makes any sense, it's poor wording.

In any case that proposition seems dubious. Companies exist to please customers, not its own developers. Too often we (developers) conflate our happiness/productivity with that of the actual stakeholders.

With that said, at scale one tends not to need a faster feedback loop, but greater guarantees around correctness (in logic, deployments, etc). Encouraging us to work in a mindless, iterative manner goes in the opposite direction.


"speed of developer iteration" is a phrase I've heard outside of Dark. Specifically, "developer iteration" is how fast you're able to iterate on ideas with your code. If you can ship stuff faster, you can iterate on your ideas faster.


It's development and not developers the thing being iterated, right?

It's as if I wrote "developer deployment".


Sure, both ways make sense. Do you measure the thing being iterated upon, or the folks doing the iteration? Since they're linked, both make sense.


We've also built tools for guarantees around correctness. My video discusses our deployless tooling, and it's also discussed in the blog post: https://medium.com/darklang/how-dark-deploys-code-in-50ms-77...

We think a lot about how large teams build at scale, and while we don't support everything we'd need for large teams just yet, Dark is designed for this use case.


I've read the blog posts in the past, and it seems quite likely that Dark could be a large conflation of concepts (as opposed to composition), which repeatedly traded off desirable properties for faster deployments.

The opposite is not impossible though, I'm certainly open to see the actual offering and tradeoffs. I'm mostly expressing that Dark's marketing likely won't appeal to people who tend to question things a lot; extensive rationale is needed for us.

Btw, it seems quite possible to hack a vanilla Clojure setup (Reloaded workflow, tools.deps, some CI magic) to offer deployments under 30s. I just don't see it as worth the effort, and also I actively pursue some healthy constraints (slightly slower deployments = more thought put into things).


I’ve been using Dark for the past 12 months and I cannot say enough good things about the product and the team behind it.

Here’s what I like about Dark:

- Build API endpoints in a matter of seconds. As soon as the logic is written in Dark, the endpoint is publicly available on the internet

- Live data: Dark has a feature called traces that shows data as it hits your endpoints. This allows you to quickly manipulate code between your front + backend

- Easy interaction between third-party APIs (for me it handles logic with Stripe, Twilio, and several others)

TLDR: Dark has enabled me to build a backend faster than ever before. If you’re building something new, I suggest you give it a go.


How do you do version control with this? or debug? or test?


Reminds me of how I started with PHP.


Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: