Redis will remain BSD licensed - <AUTHOR> http://antirez.com/news/120 <comment><USER2> Hi, this is Yiftach, CTO and Co-founder of Redis Labs. First, let me assure you that Redis remains and always will remain, open source, BSD license. For avoiding any doubt - commons clause (as defined in commonsclause.com) is applied only to add-ons (modules), on top of Redis (e.g. RediSearch, Redis Graph, ReJSON, Redis-ML, Rebloom) that were developed by Redis Labs .

We initially released these modules under AGPL license but found two major drawbacks (a) AGPL does not prevent cloud providers (such as AWS) from building managed services from these modules, and (b) we got requests from developers, working at large enterprises to move from AGPL to a more permissive license, because the use of AGPL is against their company's policy.

In addition, a few people here (and other threads) have asked why we didn't create a new proprietary license, like those offered by Elastic or MaraiaDB? Well, Commons Clause was created by a coalition of several OSS infrastructure companies, some of which use a different OSS licenses. In order to maintain a standard framework we decided to piggyback the restriction (on creating managed services by cloud providers) on any existing OSS license.

<comment><USER3> Thank you for the explanation. I see no problem with this approach in principle and wish your business the best of luck.

However, you have made a big mistake with how the "Commons Clause" confuses Open Source under the OSD with "source available". You were not well served by those who advised you to do so.

<comment><USER4> The Commons Clause clearly acknowledges this in the FAQ:

[https://commonsclause.com/](https://commonsclause.com/)

<comment><USER5> From that page:

> The Commons Clause is a license condition drafted by Heather Meeker that > applies a minimal-form commercial restriction on top of an existing open > source license

Making it proprietary and failing the Open Source Definition.

You cannot have Commons Clause 'on top' of an existing Open Source license. This is impossible. You can only replace the existing Open Source license with Commons Clause.

The page is a bunch of (insert HN-guidelines-appropriate word for 'very incorrect information').

> This Clause is not intended to be applied against at-scale existing open > source projects, but incrementally on top of commercial counterparts that > need to be transitioned to source-availability to satisfy urgent business or > legal requirements.

Commercial and Open Source aren't opposites - this a very basic mistake made by people who are new to OSS. There are many Open Source commercial projects (your bank runs on Red Hat Linux, which is entirely OSS, with everything but the Red Hat logos allowed to be reproduced) and many non-commercial proprietary projects. It's scary that a company called 'Fossa' whose specialty is 'Modern open source management_' is confused about this.

> The original Open Source Definition represents an immensely important set of > ideals that carried many projects to success during the earlier days. > However, the open source ecosystem has changed a lot over the past 10 years, > and the conditions of the modern landscape has forced change for the > sustainability of many projects.

The project wants to create a new OSD which isn't Open Source.

The 'drafter' of this license seems to have simply re-created Shared Source per Ballmer-era Microsoft.

<comment><USER4> Yes, and right below it acknowledges that it is not Open Source and doesn't try to be:

> It this "Open Source"? > No, at least not by the official definition set > forth by the OSD. Applying the Clause to an open source project will > transition the project to "source-available".

<comment><USER6> > Is this Open Source? No. The source is available for inspection and > restricted use but, because of these restrictions, its licence is not Open > Source per the Open Source Definition.

That's all that needs to be said. Your page reads as though the author is hiding something or that the author is ashamed of the answer. Just come out and say it.

</comment></comment></comment></comment></comment></comment><comment><USER7> This could have been made clear in a few simple sentences:

We have created a new software license which we are calling the 'Redis Labs License' (RLL), by adding the Commons Clause terms as extra restrictions on top of the Apache 2.0 License. We recognise this will no longer be a true Open Source license, but we consider it a fair trade-off between our business needs and our responsibility and commitment to the Redis community.

From now and in the future, work on the following Redis Labs modules will be published under the RLL: Module A, Module B and Module C.

There will be no change to the licensing of Redis core, and we remain committed to supporting ongoing development under the existing BSD license.

<comment><USER8> Redis went out of their way to obfuscate what they were doing with deceptive license names. Now they are struggling to control the damage caused in all the confusion. There's a lesson here...

<comment><USER9> > Redis

Redis Labs isn't Redis, any more than, say, Heroku is Ruby because Matz works there.

</comment></comment></comment><comment><USER10> I'm happy to hear that Redis will remain BSD, but it's a bit weird to play the "fake news" card. Can you really blame people for interpreting this the wrong way?

Especially when the original announcement was specifically targeting cloud providers, who, afaik, are just running vanilla redis.

If there is anything that we can learn from this, is that a little bit of forethought when putting these announcements out there is required, and blaming this on the readers is not fair.

<comment><AUTHOR> Honestly my colleagues did a poor job with such an announcement there, and I did not get a chance to read it (which is actually a good thing, it means that the OSS division, I'm part of, is independent and can work to the Github repositories without caring about what the commercial side does). But it was kinda of a manifest to announce that certain things made inside Redis Labs are now Common Clause licensed. In doubt, why not asking? Also people that follow me and Redis for years getting trapped into this idea is very strange, I would never do that and without explaining, prior notice, and so forth. So yep the Common Clause page at Redis Labs sucked but in doubt ask instead of creating news out of no actual information.

<comment><USER11> It was clear to me from a careful reading that the page did not refer to Redis, but it also seemed deliberately designed to suggest that it did. It seemed pretty scummy.

And the name itself of "Commons Clause" is practically a tiny version of fake news, since it tries to give an "open source" feeling to what is essentially a proprietary license.

As a practical/PR matter, I think Redis Labs have likely shot themselves in the foot. I've been in a low-key debate advocating for Redis Labs over AWS elasticache on an upcoming project; my argument probably just got about 1000% harder, given the anti-RL sentiment I saw on our Slack last night.

(Finally, if you'll forgive me a bit of personal advice, I think for better or worse Redis + your personal brand + RedisLabs are now all somewhat tied together -- I'm not sure how much sense it makes for you to just pay attention to the OSS side of the house...)

<comment><USER12> I'll pile on here as well, we were thinking about shifting from elasticache to RL, but this has made that decision super easy.

<comment><USER13> Elasticache is a totally closed source implementation that does not contribute back to the community. How did this situation change your decision?

<comment><USER11> what would they contribute back? elasticache is just vanilla redis. aws is selling you compute time and ram.

<comment><USER14> > _elasticache is just vanilla redis_

Only at the interface level. Elasticache is a heavily forked Redis. There's a reason it's several versions behind.

<comment><USER11> that makes sense. i guess i had just assumed it was laziness. :-)

out of curiosity, do you have any idea what their mods might be?

<comment><USER14> I never bothered to really look into it -- I suspect it's semi-public information. If I had to guess, lots of internal changes to make Redis behave better in AWS's architecture to do with containerization, EC2, S3/EBS, maintenance automation related stuff, instrumentation, etc.

Oh actually definitely some stuff related to their redis clustering system.

<comment><USER15> They also support encryption in transit. That part was open sourced recently, but hasn't made it into upstream yet (though it most likely will from sounds of it).

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> What I find interesting is all of the comments saying

       "Well, I was going to use RedisLabs.. but because of this, i'll use AWS/elasticache"

Which is just such a weird statement. So instead of supporting the OSS creators and main contributors, who want a way to monetize their "value add" modules, while still giving the core software freely; you rather support a huge corporation that gives almost zero back to OSS ( AWS has a history of extend and embrace, make it a service/black box, with open source, that would make Microsoft of the 90s/00s proud!)

<comment><USER17> "...gives almost zero back to OSS..." This is not true as Amazon not only releases it's own projects but contributes really broadly [0].

I can't speak for others, but I understand the decision to choose ElastiCache over CC software as I understand Amazon's model a lot better than projects that change their license.

So if I'm going to hinge on something non-OSS, I prefer the logical points where a utility that sells cloud compute so doesn't care about software than for software companies that change their license, really substantially.

My org allows AGPL as we can easily comply. But we can't comply with CC. This shift is a big deal and kind of hoses me.

You mention Microsoft in the 90s. They shared source code all the time, but you couldn't use it and there was zero community. So if you want that, CC is way more likely to get us there as community contributions will dry up. I'd rather depend on companies that are explicit (ie, "this is open source, this is not").

[0] [https://aws.amazon.com/opensource/](https://aws.amazon.com/opensource/)

<comment><USER9> > But we can't comply with CC.

Why not? The point of the CC is literally "pay us to use it commercially." You can't just... pay them to use it? Even when that's exactly what you'd be doing by using an AWS service?

<comment><USER17> Part of CC is that it's unclear how it operates with the myriad of other project licenses we use.

But the main issue is that we contribute back to projects, even as minor patches or fixes. Contributing source to a proprietary, commercial code base has legal issues of nonpaid work and contribution.

And finally, "pay them to use it" is very ambiguous. How much to pay them? Is it the same amount today as tomorrow? I pay for support for substantial projects like RedHat, but is support included in licensing CC?

These questions are ambiguous. Perhaps in time they will get easier to answer. But this is exactly why I would rather use AWS with its "so clear its confusing" pricing [0] where I know exactly what I'm getting.

[0] [https://aws.amazon.com/elasticache/pricing/](https://aws.amazon.com/elasticache/pricing/)

</comment></comment></comment></comment><comment><USER18> > However in the fake news era my attempts to provide the correct information > failed

Eww. This actually removes credibility from the announcement, given the way the term "fake news" continues to be used to distract from objective truth.

<comment><AUTHOR> What I mean is that even after the project leader tells you it was just some confusion, the Github project still is marked as BSD, and nothing is written in the original announcement clearly stating that Redis would switch license, it is a bit strange that the information continues to spread _regardless_ of what I continued to say.

<comment><USER19> "Redis is an example of this paradigm. Today, most cloud providers offer Redis as a managed service over their infrastructure and enjoy huge income from software that was not developed by them. Redis' permissive BSD open source license allows them to do so legally, but this must be changed"

Crying fake news (which has been co-opted to mean "real news that I don't like or that you shouldn't pay attention to") completely undermined your statement. Yes, the original announcement wasn't just unclear, it is very clearly drawing a line that "this must be changed".

<comment><AUTHOR> I admit that the communication was not great, but the announcement never said Redis would switch. Maybe I'm a bit biased, because before Redis Labs doing this license switch, we internally even _agreed_ about taking the core BSD, so the goals of the company were always clear, regardless of the fact that this page in the company web site was unclear. But "Redis switching license" was factually incorrect since the start and never stated anywhere.

<comment><USER20> > but the announcement never said Redis would switch

> Redis' permissive BSD open source license allows them to do so legally, but > this must be changed

<comment><USER21> [https://redislabs.com/community/commons- clause/](https://redislabs.com/community/commons-clause/)

It sounds a bit different when not taken out of context:

> Redis is an example of this paradigm. Today, most cloud providers offer > Redis as a managed service over their infrastructure and enjoy huge income > from software that was not developed by them. Redis' permissive BSD open > source license allows them to do so legally, but this must be changed. Redis > Labs is leading and financing the development of open source Redis and > deserves to enjoy the fruits of these efforts. Consequently, we decided to > add Commons Clause to certain components of open source Redis. Cloud > providers will no longer be able to use these components as part of their > Redis-as-a-Service offerings, but all other users will be unaffected by this > change.

<comment><USER22> But Redislabs extensions were AGPL, not BSD beforehand.

<comment><USER23> Yeah, there is literally no way to read that except as a statement of intent to move BSD-licensed Redis into Common Clause, even if that wasn't the first step taken.

While this is being portrayed as a communication error, that strains belief—it sounds a lot more like an after-the-fact effort to deal with massive blowback at the very clearly stated intent.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER24> If you want to ship enterprise modules under a source-is-publicly-available- but-not-open-source license, a sort of limited-commercial-use-source- available-freeware license, I think that is definitely better in some ways than keeping them fully closed source, so should be applauded.

But, I think this "Commons Clause" condition was a poor choice of a way of achieving that end. Having some condition which is added to an existing open source license, and takes away some of the rights that license grants, is horribly confusing. If you aren't granting the full set of rights associated with open source license X, then open source license X should not even be mentioned.

If you had just picked some existing license which had the set of permissions you wanted, or even created a new one, I don't think anywhere near as many people would be complaining. "Commons Clause" is a horrible idea and should be retired.

</comment><comment><USER25> But it _does_ appear to be true that some Redis modules _used_ to be open source software (OSS) and are now proprietary. As I understand it, some modules used to be licensed under the AGPL (an OSS license) and they are now under this new "Commons Clause" (which is a proprietary license). So while the _core_ of Redis is OSS, if my understanding is correct, it's absolutely true that parts of Redis have switched to being proprietary software. That's different than organizations who license the software as "AGPL or proprietary" or "GPL or proprietary" \- such licenses are also unambiguously OSS. Choosing "Apache WITH proprietary-rider" is fundamentally different; Redis has every right to do that, but it's fair to note that this isn't the same thing.

<comment><USER4> Also: there is no longer a source-disclosure requirement built into the license.

</comment></comment><comment><USER26> I've seen saying for years and years that we're going to see a resurgence of proprietary software. Free software was one of those ideas that spread so successfully that people temporarily forgot that life could be otherwise, which means they stopped caring about the idea, which in turn led to a complacency that, at first, shifted software licensing to a BSD-style permissive model, and now, is starting to allow 1990s cancer like this commonscause.com license restriction to come back.

There's nothing new in the software ecosystem driving this.

Well, this commonsclause.com crap is such a move toward proprietary software. We're here.

> The Commons Clause is a first step at starting an important discussion

<comment><USER14> Have you read the Commons Clause license? Do you understand it well enough to back up those absurd claims you're making?

People see "oh it's not OSI-approved" and just de-facto assume it's the end of the world.

Redis is an _amazing_ piece of open source, BSD software and you're taking a huge dump on it and its author for not complying to your wishes. Friend, have you done for open source even 1/10th of what Antirez and the Redis project have?

Honestly, this whole thread. I remember instances of people finding out about major figures in open source burning out, turning to drugs or even killing themselves and being all like "oh, this was so preventable".

Prevent now. Stop behaving like this towards people.

<comment><USER26> Your comment is not productive. It attempts to substitute emotion, misplaced empathy, and ultimately social shaming in place of a discussion of the linguistic and economic issues that this Redis affair is surfacing.

Your post amounts to a ban on criticism, on made on the grounds that it might make people feel bad. It's an attempt to end discussion, not further it. Much like proprietary software licensing, this approach has been tried many times before and has seen limited success.

<comment><USER14> Nonsense. I don't have a problem with people criticizing Commons Clause, I have a problem with people acting like Antirez & redis labs are the worst people on earth for choosing it, when they've in fact contributed so much to open source.

You know what's not productive? Lacking empathy. Lacking tact. Lacking decency. You wanna have a discussion on Commons Clause, there's a perfectly respectable thread two posts over on Drew DeVault's blog post.

<comment><USER26> > I don't have a problem with people criticizing Commons Clause

Okay, but...

> You wanna have a discussion on Commons Clause, there's a perfectly > respectable thread two posts over

... you _do_ , evidently, have a problem with discussing the Commons Cause: you want to sequester this discussion into its own thread despite the Commons Clause very much on-topic here. You are attempting to smear critics of Redis's use of the Commons Clause by claiming that criticism amounts to treating CC's proponents like "the worst people on earth". This tactic does not lead to the kind of discussion that enlightens or convinces. It lacks tact and has no place here.

<comment><USER14> My post meant to say that there's reasonable discussion out there I don't have a problem with. Your post however, I have a problem with, as with the tone of many people in this thread.

It's inappropriate and it is the tone I've seen of people who have driven various open source maintainers to burnout and much worse. So yeah, I have a fricking problem with that.

</comment></comment></comment></comment></comment></comment><comment><USER27> If a project is licensed "BSD + antithetical_term" or "Apache + antithetical_term", then the names of BSD and Apache should not be invoked.

They are free to make a RedisLab license though.

<comment><AUTHOR> Redis core is just "BSD", nothing attached.

</comment></comment><comment><USER28> Best to check the source, license unchanged: [https://github.com/antirez/redis/blob/unstable/COPYING](https://github.com/antirez/redis/blob/unstable/COPYING)

Thank you Salvatore for Redis, it has benefited so many projects.

<comment><USER29> This should be the top rated comment.

I wish people would put the pitchforks away, and acknowledge the challenges of funding a successful Open Source project.

</comment></comment><comment><USER30> > An example of such module is RediSearch: it was AGPL and is now going to be > Apache + Common Clause.

Sounds to me like the right thing to do here for Free Software proponents is to download the latest AGPL RediSearch, fork it and continue development.

<comment><USER31> HN needs a feature to say, "Hey! We haven't talked in forever, wanna catch up?" when we notice comments from people we worked with many years ago but haven't talked to in forever.

</comment></comment><comment><USER32> Closely related: "The Commons Clause will destroy Open Source" [https://news.ycombinator.com/item?id=17818407](https://news.ycombinator.com/item?id=17818407)

<comment><USER33> As the author of that article, I want to clarify that I was aware that Redis core was going to continue to be available as BSD and incorporated that information into my article. antirez, if you have any comments or corrections I'd be happy to include them in the article.

</comment></comment><comment><USER34> Even if Redis were to change license, the ones who would be to blame are the big cloud providers that re-package OSS products and rent them without giving anything back. They are milking the work out of these projects, taking only the opportunity to make money out of it.

I remember talking to Elastic and they had a similar issue where AWS would take their product, package it and not give anything back (money or patches).

Obviously it's permitted by the license, it doesn't mean that it's right.

<comment><USER17> Why would this tweak the developers. Isn't this precisely what the license they chose was made for to include and allow?

In this case Amazon functions like a hosting company. So would you be surprised if a hardware vendor automated the install and patching of Elastic? They're basically just installing OSS for end users.

</comment></comment><comment><USER35> I think that this clears up questions about redis itself, but doesn't address the concern than future development will be focused on new modules rather than the core - akin to Google Play Services vs. Android.

<comment><USER36> > doesn't address the concern than future development will be focused on new > modules rather than the core

which is a very valid thing to do, since dev costs money.

<comment><USER35> I'm not arguing that, and am personally not outraged by it, but in that context I do understand what seems to be a sense of betrayal on the part of OSS stalwarts, even as redis remains BSD licensed.

</comment></comment></comment><comment><USER37> IMO people in the original thread had a pretty good understanding that Redis core was going to have the same license, and some of the modules RL developed would be proprietary (sorry, "source-available").

I think many people are just plain unhappy with that situation, no misunderstanding. I read comparisons drawn between android, taking more and more out of the open source core into proprietary modules, among others.

</comment><comment><USER38> It was pretty clear to me on reading the RedisLabs page that Redis itself would be BSD licensed.

And, FWIW, I totally sympathize with the motivations behind their decision. I suspect we'll see variations of this in a variety of projects (if not module licensing, then enterprise-only features, reduced work in the open-source version, etc.)

<comment><USER32> > It was pretty clear to me on reading the RedisLabs page that Redis itself > would be BSD licensed.

The page has been updated since the original announcement.

</comment></comment><comment><USER39> The underlying clarification makes sense, sort of. Is it correct to say that, "These specific modules were developed solely by Redis Labs and are free of any open source contributions."

I understand that the previously licensed versions of the modules will retain there old license and people can choose to contribute or not, on a go forward basis (based on the common clause). However, if FOSS contributions were made (in mass), it still seems a little unctuous.

</comment><comment><USER40> Isn't this what Google pulled with Android? First it was open source. Then there were closed source Play Store Services. Then Google products required the Play Store services. Then third-party Android distributions stopped working. Now you do what Google tells you to do and pay them what they want to be paid to use Android.

</comment><comment><USER41> This still doesn't sound good. Even I don't like the fact that AWS is extremely bad at giving back to the community but it is not like doing things like this will make people use RedisLabs. Infact, I will be wary of using these modules for the fear of getting locked with a vendor.

I have used both Elasticache and RedisLabs and can say both have their advantages and annoyances. Elasticache is way easier to set up and configure. RedisLabs puts a lot of artificial restrictions which you have to work around. Also, their pricing model is kind of screwed up. The only major problems I have seen with Elasticache are: Locked APIs, no way to scale instance once created with live traffic, A-Z failover sucks and no persistence.

</comment><comment><USER42> >We at Redis Labs are sorry for the confusion generated by the Creative Common page, and my colleagues are working to fix the page with better wording.

So I'm not the only one mixing up "Creative Commons" with "Commons Clause".

</comment><comment><USER43> Small nitpick: the "most permissive license ever" is the FPL/0BSD: [https://opensource.org/licenses/FPL-1.0.0](https://opensource.org/licenses/FPL-1.0.0)

</comment><comment><USER44> Seems a severe case of "we tried really hard to obfuscate our words with marketing bullshit speak and then it backfired and we got a shitstorm instead, because noone understoond what we were really trying to say".

</comment><comment><USER45> RedisLabs needs to clearly mark which of the following versions of these modules are freely redistributable as part of a larger project or service.

      neural-redis BSD
      RediSearch AGPL
      rediSQL AGPL-3.0
      ReJSON AGPL
      Redis AGPL
      redis-cell MIT
      Redis-ML AGPL
      redis-timerseries AGPL
      cthulhu BSD
      rebloom AGPL
      redis-cuckoofilter MIT
      redis-roaring MIT
      redis-tdigest MIT
      Session MIT
      countminsketch AGPL
      topk AGPL
      ReDe MIT
      commentDis MIT

</comment><comment><USER46> Just as a curiosity, Redis Labs is offering a hosted Memcached service, so they are a cloud provider profiting from open-source software they did not significantly contribute to. Just saying. (More seriously, I think the only mistake they made was communicating this license change badly, and with too much whining about how unfair it is that people do what the license explicitly allows them to do.)

<comment><AUTHOR> It's a proxy that targets Redis actually.

</comment></comment><comment><USER47> BSD: Freedom for the developer

GPL: Freedom for the user

You've made your choice.

</comment><comment><USER48> This Redis-compatible alternative is also BSD licensed:

[https://github.com/ideawu/ssdb](https://github.com/ideawu/ssdb)

And it doesn't require the dataset fit in RAM.

</comment><comment><USER49> antirez: I understand your frustration and don't mean to take away from the message, but please consider removing "fake news" from the wording. It unnecessarily politicizes the post and really leaves a bad taste.

"Fake news" is the term of art that politicians are using to criticize _true_ stories that they don't like.

In this case, you're trying to correct an actual falsehood. The spreading of falsehoods and their being difficult to correct is as old as time and nothing new to this era.

Thank you for listening, and for Redis, as always.

<comment><AUTHOR> Thanks, I removed fake news because I've the feeling that in US it is used by right-wing people, here in Italy it's the current government that is the master of fake news and is used by our left-wings to criticize what they do. In the doubt I changed the wording. I did not expect the term to be political.

<comment><USER50> _I 've the feeling that in US it is used by right-wing people_

No, both sides love using the term about anything the other side says.

<comment><AUTHOR> Ok, good reason to avoid this term. Indeed here it's happening as well... instead of understanding that the point is always to verify the information and their sources, "fake news" is becoming a quick way to dismiss what other people are saying, without actually bringing any more source.

<comment><USER50> Its actually getting pretty hard to write anything these days without someone getting offended (witness the message you are replying to).

In a lot of ways, I really don't blame the current political climate, because the US has seen way worse (read up on the US 1800 Presidential Election). I actually blame poor applications of algorithms to what folks view. The bias caused not only by the beliefs of the person training the box and the professional poster's ability to learn how to manipulate the results (the next generation of SEO) has increasingly made twitter and facebook painful to use. Add a large bit of tribalism that is baked right into humanity and you have a lot of fun. Further strain through the idea that a lot of companies won't even just let the users pick accounts they always want to see regardless of the beliefs of the provider, and you get a added bit of helpless feeling in the populace.

Which makes writing a pain. I've seen some folks take offense at grant applications that are basically some of the most dry reading you will find. It once was a don't use this era's forbidden words (e.g. the word "empower" had a very strange evolution in grants). Now its memes.

</comment></comment></comment></comment></comment><comment><USER51> (What I want to know is how does that #$%^ing page hijack the font even in Reader Mode!? WTF! I want serif body fonts goddamnit.)

<comment><USER52> The body text is contained in a <pre> tag with newlines for paragraphs instead of the correct <p> tags. You can force Firefox to respect your font choice by adding a font:inherit to the <pre>'s css with the developer tools. This will break pages with correctly used <pre> tags.

<comment><USER51> Thank you! You're too kind.

</comment></comment></comment><comment><USER53> > I think that Redis Labs Common Clause page did not provide a clear and > complete information, but software companies often do communication errors

In their defense, many programmers can be so spiteful and cynical that basically nothing could've been done to change this "communication error."

It's helpful that Salvatore clarified, but I suspect that there are many who won't care or won't be convinced. The headline is all they needed to trip their "GTFO" line.

Personally, I think the move was fine. There are much worse companies out there.</comment>


Adventures in Parsec - Making it go faster with attoparsec - <AUTHOR> http://variadic.me/posts/2012-02-25-adventures-in-parsec-attoparsec.html

<comment><USER2> shintoist, I'm glad to read these. Your target audience is not just people who know haskell but have not built anything yet. Plenty of stuff can be built without using a parser, and of course that tends to evolve into code that should probably be using a parser here and there, but isn't. :) Add to that RWH documenting only parsec, and barely being published in time to show applicative use of it, and there's some need for newer examples.

I wish your types were more expressive. Using "" to cover up a failure, rather than using Maybe is somewhat of a code smell for me. Similarly, if I were parsing these logs I'd want numeric byte sizes, not strings.

Finally, I was personally thrown for a loop when you talked about using Data.Map, but threw in a Data.HashMap, apparently for performance reasons. Particularly because you continually insert values into the map, which is bad news for Data.Map (should use fromListWith when using it), but is apparently ok with HashMap, although no better than just using Data.HashMap.fromListWith.

<comment><USER3> It's probably worth augmenting the tutorial to mention that you're using the Hashmap (Data.HashMap.Strict) in the Unordered-Containers package, rather than any other ones, as its the most performant of the versions available and thus the one folks should use (amongst the hashmap implementations)

<comment><AUTHOR> Absolutely, I did experiment with <http://hackage.haskell.org/package/hashtables>, but did not notice enough of a difference in performance to decide it was worth using in this case, especially with the extra visual overhead of the state monad. I had expected it to be much faster, but I would probably chalk that up to me making mistakes in how to use it (iirc I wrote my own insertWith).

<comment><USER3> I think the hashetable package has a bit of a different performance / use case profile than the functional hash map data structure. Also I believe you need to spend more effort tuning which type of hashtable and your choice of hash function based upon your use case/ blend of operations. Some of the hashtable options regress to linear time insertions and lookups under certain use cases and load factors

</comment></comment></comment></comment><comment><USER4> On some of the simpler functional programming articles, people are always complaining that the examples are trivial. It's nice to see a nontrivial article on the front page :).

</comment><comment><USER5> Ah, attoparsec is such a nice package! Some minor quibbles:

Why aren't you using the various combinators from Control.Applicative to build your parsers?

Could your log files possibly contain non-ascii characters? In that case, use the attoparsec module specialized for Data.Text values.

<comment><AUTHOR> The reason I didn't use applicative is because I wasn't comfortable with it at the time. You can write some pretty nice looking code with applicative, but you also have to get used to it first. My hope is that by sticking to do- notation more people will be able to read it =)</comment></comment>


VueJS cheat sheet - <AUTHOR> https://medium.com/@christopheragnus/vuejs-cheat-sheet-part-1-b30f772ed72 <comment><USER2> Hard to represent certain ideas in a cheat sheet.

One thing I saw was showing how on a button click you can pass an object as an argument. I've personally trended away from that pattern and towards always avoiding method calls with arguments in template code. This means creating a sub component which takes in the object in question.

One ends up with a lot more components, but code is really well isolated and it's incredibly easy to reason about what's happening.

<comment><USER3> I'm having a hard time wrapping my head around the problem. Could you elaborate with some examples of how it looks before and afterwards? Wondering whether I'm doing this stuff for my own projects.

<comment><USER2> I put all the code in a single gist to make it easier to reason. This example (b/c it's basic) looks like more-code that's just generally unnecessary. In practice though, I've found those-sub components, even when it's just a button, tend to benefit from splitting out. You end up doing some styling to them, having them inherit from a parent button component, etc.

[https://gist.github.com/wjossey/0d7ca1a3c2040e1c376a914941b8...](https://gist.github.com/wjossey/0d7ca1a3c2040e1c376a914941b83ffb)

<comment><USER3> Thanks, I haven't realized I could pass a method to a child, which acts on the context of the parent (that's what's happening here, right?).

<comment><USER2> What I showed you is just a callback chain. Vue recommends all changes flow UP. So, you can imagine a button is a leaf node that when pressed calls a function passed to it. That function belongs to the parent component in this case.

If you ever did traditiona JavaScript programming earlier in this century, you'll be familiar with this pattern which is referred to as "callback hell" by some.

If you ever go to use a third party library like Vuetify, the components you use in essence follow the same pattern.

</comment></comment></comment></comment></comment><comment><USER4> Consider contributing this to [https://learnxinyminutes.com](https://learnxinyminutes.com)

</comment><comment><USER5> Yikes, stay away from directives if it's possible unless you really need that functionality. I wouldn't add that as a `cheat sheet` as that should be a rare use case / component extension.

<comment><USER6> Directives like "v-if" and "v-model" are core to Vue and used regularly in every Vue project I've seen. What's your reasoning for avoiding them and what would you use instead?

<comment><USER5> Ah, let me clarify. I meant creating new directives. Using the core directives is needed the best use of Vue directives. Creating new ones should be used sparsely as it obfuscates your code.

We have 1 directive in our entire application and it's pretty complicated however the use of it is pretty amazing it allows our app to have a straight forward approach to permission allowing to hide/disable elements with good performance.

Honestly I must be super tired since I just re-read it and I see that it's using existing directives instead of creating new ones...

</comment></comment></comment><comment><AUTHOR> Thanks for the feedback guys! I'm going to write a part 2 of the cheat sheet of the most common features of VueJs. Hope you guys are enjoying it.</comment>


Using the Mobile Phone as a Medical Diagnostic Tool - <AUTHOR> http://www.economist.com/science/displaystory.cfm?story_id=11367989&fsrc=RSS

<comment><USER2> The Economist glosses over many of the details. You can find more technical information, and a link to the paper, here: <http://blogs.zdnet.com/emergingtech/?p=908></comment>


'X' Marks a Curious Corner on Pluto's Icy Plains - <AUTHOR> http://www.nasa.gov/feature/x-marks-a-curious-corner-on-pluto-s-icy-plains <comment><USER2> Reminding us once again how cool it would be if we could "easily" send robotic probes to go and stay on various solar system "places of interest."

Something I hope that comes out of SpaceX's reusability of boosters is a way to put a mission package into orbit, then launch a boost unit with the necessary engine and fuel that then docks with it, and then puts it into the necessary orbit to get to its destination.

<comment><USER3> Pluto in particular would be a problem, though, because it is a) very small, and b) very far away. In order to get there in a realistic time, your probe has to be going _very quickly_; in order to stay in Pluto orbit, the probe has to be going _very slowly_.

So, unfortunately, to stay in Pluto orbit, either you carry a lot of fuel with you to slow down (which makes launch incredibly difficult, because you need more fuel to accelerate the fuel you need to slow down, and then you need more fuel to accelerate _that_ fuel, and so on), or you wait a long time to get there.

The bigger, closer planets and planetoids, though, will see a lot more exploration as the cost of launch decreases.

<comment><USER4> Or you send some self replicating stuff on the moon, build some factories and solar panels, and build and launch robots from there. We have the technology to do this right now if we are willing to put the money. And if we polish the moon we could beam excess energy to earth.

<comment><USER5> What do you mean by "polish the moon"?

<comment><USER6> Colonize it with Polish people, of course.

<comment><USER7> Just make sure to send the government up there first.

</comment></comment></comment></comment></comment></comment><comment><USER8> I think the "snail" in the middle of the picture is more curious than the x. What is that?

<comment><USER5> > The darker patch at the center of the image is likely a dirty block of water > ice "floating" in denser solid nitrogen, and which has been dragged to the > edge of a convection cell.

I love that we (the public) are still getting regular updates about what scientists are finding from the Pluto flyby.

</comment></comment><comment><USER9> It isn't really a capital 'X'. It looks more like the stylized, more wide than tall, X of a spaceX landing pad.

Compare with this:[http://i.space.com/images/i/000/045/531/i02/spacex-rocket- la...](http://i.space.com/images/i/000/045/531/i02/spacex-rocket-landing- drone-ship.jpg?1423529560)

</comment><comment><USER10> Looks to me like conditions ripe for life. Not necessarily life we're familiar with, mind. And maybe not necessarily clicking all of the check boxes of "Life", but structures far more interesting than dumb rocks.

</comment><comment><USER11> Okay, as expected, Pluto is a very cold rock. No surprise.

What the heck is NASA looking for out there, some evidence of trash left by ET, a big, black, rectangular parallelepiped with some strange audio and electronic signals pointing to Jupiter? Don't think they will find it.

We have to expect that in the universe, both near and far, there are a lot of really cold rocks orbiting a lot of stars, "billions and billions". To get something "curious" on one of those will be really rare.

Want to see what one of the really rare ones looks like? Okay, three guesses, the first two don't count. Hint: Look at where you are standing.

IMHO, NASA needs to find some more important questions to ask.

Mars? Okay, if there is good reason to go to Mars, then, first, do a lot in robotics: Net, send robots that can build a colony, make rocket fuel from whatever is there on Mars, fuel a rocket, sent it back to earth successfully. Iterate several times. Build a bigger and bigger colony that is more and more capable. The colony should be really good, and safe for humans -- food, water, heat, comforts, safety, etc., and a rock solid, highly reliable, very well tested way home. Then test a lot more -- much, much more testing.

Then maybe send some humans.

<comment><USER12> Let's review some history for the moment. Back in the 19th century "egghead" scientists conducted numerous lines of research into several subjects which were at the time considered to be extremely esoteric, the essence of pure, "blue sky" research. Some examples from that century would be: electromagnetism, particle physics, quantum mechanics, and gas laws.

As it turned out, understanding such things lead to lots of innovations which had not been anticipated beforehand. Everything from electric motors and lightbulbs to micro-processors, cell phones, internal combustion engines, fertilizer, and AIDS drugs. Those innovations built on the back of once pure scientific research have resulted in billions of years of human lives lived that would not have been other wise, and billions of years of lives lived in improved conditions (due to more food, cleaner water, greater wealth, and so on), literally tens of trillions of dollars per year of added economic activity due to those innovations and _quadrillions_ of dollars of added value and increased wealth to human civilization. All due to egghead scientists studying stuff just because they were curious.

What will be the next set of breakthroughs? Where will it come from? How much value will they add? We don't know, that's why we continue to sustain and support our curiosity across such broad ranges of subjects.

Not only might breakthroughs come from surprising directions, but I think the scientists have more than earned it. Not everything we do needs to have some tangible return-on-investment back to some concrete bottom line on Earth in the near term.

<comment><USER11> Sure, but you left out some crucial parts: "Often we find that a good question is more important than a good answer" \- Richard Bellman. IMHO pictures of Pluto do not answer good questions.

Commonly, one of the most important steps in good research is good problem selection. IMHO, getting pictures of Pluto is not good problem selection.

Mars? It's closer in. There we might get some clues to the formation of the solar system. And we have a chance of setting up a base on Mars for astronomy or whatever. Pluto? As we have long known, it's really 'out there'.

Pluto? Wild guess: There is so little going on there, and it's so darned cold, that maybe we could use it as a source of a _preserved_ record of some of the major events in the galaxy over the past 5 billion years or so Pluto has been going around out there. For this guess, maybe look at the justification NASA gave for the Pluto effort.

<comment><USER12> You seem to be missing it. Let me try to break it down again.

First off, plain and simple, we don't know what we don't know. So straightforward it's tautological. It makes sense to expand our knowledge in every direction possible.

This is the MO of a curious species. And curious species are vastly more successful than incurious ones. To paraphrase Randall Munroe, the legacies of incurious species are carefully discovered, studied, and remembered by curious ones. Curiosity is a survival trait.

Dedicating less than 4 parts per million of our country's enormous economic activity toward studying an important part of our stellar neighborhood seems a worthwhile entry in the activities column of a sufficiently curious people. Moreover, the return-on-investment on unbounded curiosity is so close to infinite that it's hard to view complaints about such comparatively tiny expenditures in regards to their practicality or short-term tangible returns as anything other than laughably myopic.

<comment><USER11> > It makes sense to expand our knowledge in every direction possible.

Not quite: Instead, for any amount of money, there are, or, as we start spending the money on research, soon will be, more candidate research projects than money. So we have to pick and choose our research projects.

IMHO we have better candidate research projects, including just in investigating the solar system, than getting fly-by pictures of Pluto.

Maybe NASA has some longer term ideas for research on Pluto where the recent pictures, and maybe also just the trip there, are just the beginning. Okay, land there, in a bunch of nitrogen snow. Take and analyze some samples and radio the data back to earth. Maybe get some data unique and valuable data on the formation of the solar system, maybe on some gamma ray bursts or super nova explosions, etc. Maybe. But just the pictures? IMHO, not so good.

</comment></comment></comment></comment></comment><comment><USER13> kind of OT but, "Its surface is separated into cells or polygons 10 to 25 miles"

reminds me of glimmervoid: [http://magiccards.info/mma/en/223.html](http://magiccards.info/mma/en/223.html)</comment>


Show HN: Chrome extension to make writing content scripts easy - <AUTHOR> https://github.com/mashlol/chrome-scripts

<comment><USER2> why can't you just do this in chrome console? f12

</comment><comment><USER3> Umm...so its Greasemonkey?</comment>


The Senate just passed the decade's biggest public lands package - <AUTHOR> https://www.washingtonpost.com/climate-environment/2019/02/12/senate-just-passed-decades-biggest-public-lands-package-heres-whats-it <comment><USER2> "The package is crammed full of provisions for nearly every senator who cast a vote"

      Funny, that.</comment>


Carbon: Create and share images of source code - <AUTHOR> https://carbon.now.sh/ <comment><USER2> I learned about Carbon maybe three years ago. Back then the README example looked like this: [https://user- images.githubusercontent.com/10369094/30791512-...](https://user- images.githubusercontent.com/10369094/30791512-cb001438-a167-11e7-952b-f0f0e5c4499e.png)

Now it looks like [https://user- images.githubusercontent.com/8397708/63456416-b...](https://user- images.githubusercontent.com/8397708/63456416-b27d1a80-c403-11e9-9572-105b089be885.png) complete with weird cursive font and all.

IMO this niche obsession with cursives, ligatures and stuff in programming fonts actually hurts first impression for a significant percentage of people landing on this README.

<comment><USER3> Obsession with dark, unreadable text colors are much more destructive to my eyes than cursives. Whoever came up with the idea that blue on black was a good color for displaying code on a screen, or dark green on black was a good idea for comments should just stop using computers together with everyone who installs and uses those themes.

<comment><USER4> I mean, everyone should be able to use themes that they are comfortable with, right? I don't think there is any evidence for dark themes "destroying" anyones eyes. And even if there was, I think you'd be able to survive looking at a Screenshot for some trendy JS project.

<comment><USER5> For me, dark themes help reduce eye strain, particularly at night or if I've been staring at the screen for a long while already. But I don't judge others for picking color themes which are comfortable for them. Your screen, your rules.

</comment></comment></comment></comment><comment><USER6> I'm of the opinion that showing window controls (the top left/right buttons) and the window chrome on a code snippet is poor form. The focus of the screenshot is to be the code itself, there is no need to highlight the crud around it which is distracting to users coming from different OSes. It is reminiscent of of various sites that showcase their products on specific phones and laptops. You're wasting valuable space on something that appears dated and cringey just a few months down the line. A well put-together div, font and background will last longer.

<comment><USER7> It's an affordance - it signals immediately to the reader that the block of text is source code

[https://en.wikipedia.org/wiki/Affordance](https://en.wikipedia.org/wiki/Affordance)

Best example of affordance is handles on doors: horizontal spanning the whole door for push to open and vertical for pull to open.

<comment><USER8> No, it's the opposite.

> "In 1988, Donald Norman appropriated the term affordances in the context of > human–machine interaction to refer to just those action possibilities that > are readily perceivable by an actor."

Putting a door handle on a door is an affordance: you can see how to open the door (action).

Putting window controls on something that's not a window and can't be controlled as such is not an affordance: it's misleading. There's no action to be perceived here.

<comment><USER7> ... these code screen caps are inserted into presentations not demos?? As far as I know no audience member expects to walk up to the projector screen and minimize a window. The point is to prime someone's perception for how they should interpret something. Good try being completely literal though.

edit: i can't believe i have to explain this. the window serves exactly the same purpose as offsetting code blocks in text in a different font, in a different color, with a different background: it's to indicate that there's something meta-semantically distinct about this block of text from other blocks of text. to contextualize the code even moreso accomplishes the same goal - implicitly communicating distinction.

<comment><USER9> > The point is to prime someone's perception for how they should interpret > something.

And what perception is that?

The macOS semaphore controls make the square look like a macOS window. Not all windows are text editors: people still have to look at the content of the window in order to understand it. Not all text editing is source code editing: people still have to read the text in order to realize it's source code. The Carbon twitter contains images of error logs and ASCII art.

Monospaced typefaces and syntax highlighting of the text are the design features that truly denote source code. A container with contrasting background color distinguishes the source code from the other elements on the page or slide.

> the window serves exactly the same purpose as offsetting code blocks in text > in a different font, in a different color, with a different background: it's > to indicate that there's something meta-semantically distinct about this > block of text from other blocks of text.

They don't have the same purpose. The information conveyed by all of those elements are completely different. Monospaced, syntax highlighted text looks like source code to any programmer. Placing that text inside a container allows it to be quickly distinguished from the surrounding prose.

Adding macOS controls to this design makes it look like source code _that 's being edited in macOS_. Why convey those additional bits of information? Does the code not work outside of macOS? Are users of other systems not part of the target audience? Is the author subtly signaling their use of macOS to other macOS users in the audience?

</comment></comment></comment></comment></comment><comment><USER10> I've been using Carbon more frequently lately in some development documents in my current team.

We have a MediaWiki and, for some reason, the administrator wouldn't be bothered to set up syntax highlighting correctly. So, after asking a number of times, I thought I would just use Carbon and be done with it and have the docs looking a bit nicer.

Immediately, I thought about the issue of having code as images. You put an example in the docs but the developers can't just copy and paste it into their code. But then I realized I actually _wanted_ this. I didn't want them to continue copy&pasting code without understanding a single thing they do, like they have been doing for the last twelve years.

I have it set up to remove the window frame and background, and use Iosevka. It's much less noisy that way.

<comment><USER11> The corollary of that though is that your code is also not accessible. I've been struggling with this myself, I don't find it fair that my snippets, no matter how beautiful, aren't readable by screen readers. The only solution I found is to keep providing actual code as a snippet or gist next to the image.

<comment><USER10> I understand that, and in a different setting I wouldn't use images for code no matter what.

In this case though, as I said, the setting is very controlled (internal, temporary docs) and I explicitly did _not_ want it to be easy to copy.

<comment><USER11> Not saying you're doing any evil :). Those might not be yours to fix, but one could argue that if copy/pasting is such a problem in your current environment there are deeper issues at hand. Nothing that carbon will fix, and nothing that accessibility will helps with in any case. Good luck!

<comment><USER10> Oh, sure. There _are_ much deeper problems in that project.

Thanks.

</comment></comment></comment></comment></comment><comment><USER12> I'm glad that this gives better results than screenshots of code but, to be honest, a bit saddened that it has to exist at all. Twitter, I get a little: it's meant for short thoughts and can't really work well for code, but Medium (for example) not supporting code is hard to understand.

<comment><USER13> AFAIK, Medium does support embedded Gists from GitHub etc. At least it did when I last wrote a programming guide in it.

Update: Still seems that it does (scroll down) [0]

Edit: Oops, I just remembered that HackerNoon moved off Medium to their own CMS, but those Gists _did_ used to work on Medium too, complete with code formatting.

[0] - [https://hackernoon.com/building-a-face-recognition-web- app-i...](https://hackernoon.com/building-a-face-recognition-web-app-in-under- an-hour-345aa91487c)

<comment><USER2> Supporting embedded gists is hardly "supporting code". We're talking about fetching one additional iframe plus a third party script per code blob, for what should be inline HTML plus ~30 lines of CSS (check out pandoc rendered HTML with syntax highlighting, for instance). The page you linked also demonstrates visually broken embeds with extraneous white space on the bottom; hardly a glowing endorsement.

I get embedding Codepens and stuff for rendered code. Embedding gists for static, verbatim code is just sad. (Not saying it doesn't have its uses, but _having to use it_ is another matter.)

But this is far from the most annoying thing about Medium, so meh.

</comment></comment></comment><comment><USER14> This site should warn us the code posted to public [https://twitter.com/carbon_noreply](https://twitter.com/carbon_noreply)

Looking for a way to copy the code, eg. [https://carbon.now.sh/#code- ID](https://carbon.now.sh/#code-ID)

<comment><USER10> As far as I know, it is not posted there unless you actually do it yourself, pressing the "Tweet" button.

You can also get a link if you choose "Export -> Open". It will open a new window/tab with the URL of the generated image.

</comment></comment><comment><AUTHOR> So an unfortunate reality of the world today is that sometimes you need an image for a post that doesn't need a photograph, if only for better exposure with embeds. This is great for that. It's also great for posting code on Twitter.

I see a lot of people complaining about not being able to copy-paste code. That's a legitimate issue. As chrisma0 pointed out, the URLs can have a one- to-one correspondence with gists, so in blog posts you can just link directly to gists with little loss of convenience. Also note that it seems to use Twitter's alt text correctly at least.

An even better option would be to use a steganographic technique like pico-8 carts do to embed the text and then use an extension (or oembed or something) to surface that where appropriate.

pico-8 cart details:

[https://pico-8.fandom.com/wiki/P8PNGFileFormat](https://pico-8.fandom.com/wiki/P8PNGFileFormat)

</comment><comment><USER15> I have created a similar tool [https://codekeep.io/screenshot](https://codekeep.io/screenshot), which has pre made templates for code screenshot , for eg: notes - where you have description , title and code, good/evil - which can be used to distinguish between good and bad coding practices, and it can be used along with the service of codekeep, you can store your snippets on codekeep and instantly create screenshot from it. a short description of codekeep below,  CodeKeep, Combining features from Google Keep to better organise your code snippets by tagging them with labels and categorising into folders.Tagline: Organize , Discover and Share Code Snippets. [https://codekeep.io](https://codekeep.io) let me know your thought

<comment><USER16> Does anyone actually buy the paid version of your tool?

</comment></comment><comment><USER17> For VSCode users: I've been using the CodeSnap [1] extension which lets you do similar code screenshots without leaving the editor.

[1] [https://marketplace.visualstudio.com/items?itemName=adpyke.c...](https://marketplace.visualstudio.com/items?itemName=adpyke.codesnap)

</comment><comment><USER18> Inspired by Carbon I made a tool that I think complements it to obtain the same effect but on screenshots rather than text.

[https://graphite-shot.now.sh](https://graphite-shot.now.sh)

You can see how it works in the Tweet where I announced it.

[https://twitter.com/Duiker101/status/1241657523825934338](https://twitter.com/Duiker101/status/1241657523825934338)

<comment><USER19> This is _very_ cool. You should make it more obvious that you match the background colour automatically, I don't think I would've even tried it if I hadn't seen that comment on twitter.

<comment><USER18> Thanks for the suggestion! I'll add it to the page!

Now that I think about it I should probably have some example or something to see what it's about because I am realising it's not really clear when you open the page

</comment></comment></comment><comment><USER20> Super love the design of this, @searchableguy does have a point though. Would be great if there is a way to add copy-paste to something like this.

Maybe through some accessibility feature it's possible?

</comment><comment><USER21> I don't use Carbon, but I would say I endorse using images to help prevent copy/pasting of source code. My last research paper [1] studied the results from students that completed optional typing exercises while learning Java. In summary, students labeled as "Completers" of typing exercises earned higher final course grades, "Completers" that also scored below the median on their first exam showed the highest learning gains on their final exam, and practicing typing exercises reduced the number of build failures these students saw in programming programs.

If you are looking for other methods for creating images, you can always go simple screenshotting. For my research, I use a combination of Dom-to-image [2] and CodeMirror [3] so that I can generate images from the CodeMirror interface which students also use to retype the code.

[1] [https://go.ncsu.edu/typing-exercises](https://go.ncsu.edu/typing- exercises)

[2] [https://github.com/tsayen/dom-to-image](https://github.com/tsayen/dom-to- image)

[3] [https://codemirror.net/](https://codemirror.net/)

</comment><comment><USER22> how can I have windows' window buttons? I can choose between 3 combination but all of them are on the wrong part

</comment><comment><USER23> Is there a good free equivalent of SF Mono with which I could use this? I believe the license for SF Mono restricts usage to non commercial iOS / macOS work.

It's my favourite typeface for code by far. I enjoy the sort of 1980s "Unix Manual" width of it. Sort of like the writing on architecture plans, which in the last would have been drawn by a plotter.

The face in _Carbon_ is close but had too many distracting letter forms for presenting content.

<comment><USER24> Perhaps not suuuper alike, but I found the jetbrains font to actually be awesome:

[https://www.jetbrains.com/lp/mono/](https://www.jetbrains.com/lp/mono/)

<comment><USER25> Surprisingly, setting JetBrains Mono to 13px in the editor is still way more readable than any other font. Especially on Windows.

</comment></comment></comment><comment><USER26> While I felt highly sceptical at first, I have now learned that this is an amazing sales preview tool for source code tutorials.

Inside the article, all source code is posted as images using Carbon. That way, your readers can follow along and understand what you're doing.

But you didn't have to give away the source code, so you can still ask people to sign up for your $5 monthly membership which grants access to all source code projects as downloads.

Of course, your dear readers could also manually type in all the source code shown in the Carbon images, but at that point lazyness kicks in and they pay the $5.

My personal opinion is that knowledge should be shared, so I'm not sure if I consider such an approach good for our craft. But I can understand the business model that is created by having a tool such as this, which allows indie developers to earn a passive income from tutorials.

The next logical iteration is then to put your source code screenshots into a video, e.g. [https://gorails.com/](https://gorails.com/)

<comment><USER27> Next HN post - UnCarbon: easy bulk OCR of source code. Ligatures would be a bit annoying to deal with, but shouldn't be too hard to get around... and once one person uploads the code as text everyone has access.

<comment><USER26> Probably that would get an amazing success rate, because source code has both a limited vocabulary and a formal grammar.

</comment></comment></comment><comment><USER28> For me it would be worth more if the tool would make sure it would always have line breaks at places which enhance readability instead of only responsive to screen size. The single feature I would want from a tool as carbon is making captures of source code that would aways be super readable, no matter which device my audience reads it. The sample on an iPhone is completely the opposite breaking at my small width making a single line stretch over 4 rows, broken at random points where my screen ended.

It should smartly take my screen size into consideration and find a optimal balance between font size, line breaks and readability. I'm fine doing some small horizontal scrolling if that would improve readability. Kind of a "prettier" for sharing code automatically running when a reader reads it on any device.

</comment><comment><USER29> I can't understand why a screenshot tool would generates the macos window UI.

</comment><comment><USER30> Neat! So this is the kind of tool all those hip programmer folks on Twitter use :)

I especially like that it works directly with GitHub gist IDs ([https://carbon.now.sh/c4ad9e84088d867a2b4670c3dc50e67a](https://carbon.now.sh/c4ad9e84088d867a2b4670c3dc50e67a)) and that the tool considers making the image accessible for people through image descriptions: [https://help.twitter.com/en/using-twitter/picture- descriptio...](https://help.twitter.com/en/using-twitter/picture-descriptions)

<comment><USER31> And I hate it because you can't copy paste code from a picture. It's going backwards unless it's just a few lines. I cry because all those medium, blogs, devto etc articles are using it.

<comment><USER32> Perhaps it could be output as an SVG with an embedded image in the background? That way you could still have the image _and_ copy-able text.

EDIT: Seems to output SVGs, they just aren't well supported right now: [https://github.com/carbon-app/carbon/issues/943](https://github.com/carbon- app/carbon/issues/943)

</comment></comment></comment><comment><USER33> [https://carbon.now.sh/](https://carbon.now.sh/)

For a demo.

Wasn't clear from readme on quick blush that there was a live demo.

</comment><comment><USER13> Been using Carbon for quite a while now when illustrating code in my blog posts or on Twitter etc. It is even on my Chrome shortcuts bar.

Copy and paste aside, it is ideal for showcasing important bits of code such as variable or function names that you want to stand out for illustrative purposes. It is a wonderful teaching tool.

In any case - who wants to be a copy and paste programmer?? </wink>

<comment><USER34> Who wants people with visual impairments to read their posts?

<comment><USER35> It's called ALT text. If you don't paste the same source in the alt attribute, that's the problem. Not having a nice image for sighted folks.

<comment><USER34> Alt text certainly wasn't intended for this kind of use. Screen readers don't cope with newlines in alt text particularly well, most just stop at the end of a line[0]. Also more care has to be taken when escaping the contents of the attribute, it's something people will definitely get wrong.

[0] [https://developer.paciellogroup.com/blog/2015/09/short- note-...](https://developer.paciellogroup.com/blog/2015/09/short-note-on- coding-alt-text/)

</comment></comment></comment></comment><comment><USER36> For people who find the default padding too big(I did), you can control the presets with the Settings button - and if you want pixel-level control, you can export the carbon-config.json file from the Settings > Misc > Export config, edit in your favorite editor, and import it. I use a padding of 12px, instead of the (IMO) super big 56px.

</comment><comment><USER37> Wish there was an HTML export option for blog posts.

</comment><comment><USER38> Ok. This is what the cool folks of Twitter use I guess. Thank you for sharing.

</comment><comment><USER39> So, this is for people unable to take a proper screen cap?

</comment><comment><USER40> Url changed from [https://github.com/carbon- app/carbon](https://github.com/carbon-app/carbon), which points to this.

</comment><comment><USER26> How useless.

1\. With the current design standards, "beautiful code" just means lots of useless whitespace everywhere. Code should be compact and functional, not airy.

2\. It breaks copy & paste, so this is really only useful for showing off, but not for actually communicating about code or writing tutorials.

3\. This tool has lower contrast and lower readability than black text on a white background.

Combined, it's a tool for bragging about the wrong metric while excluding the elderly.

<comment><USER41> >Code should be compact and functional, not airy.

Airy and functional seems better for readability.

<comment><USER26> If I had to choose between 2 screens full of source code with lots of whitespace, or half of a screen condensed, I'd always choose the variant that fits on my screen.

So my personal preference is strongly against airy and more like "cram what you can into one line".

But given the quick downvotes to my parent post, it seems I'm in the minority with my view that source code should be first and foremost useful.

<comment><USER41> >cram what you can into one line

This is how code gets thrown away and rewritten. Fixing bugs in dense code is a nightmare, if the code was written by someone else.</comment></comment></comment></comment>


30 productivity hacks - <AUTHOR> https://www.twine.fm/blog/productivity-hacks-business-owners/ <comment><USER2> Slack or Loop Email. To the point solutions for good collaboration among a team or remote working ppl.

</comment><comment><USER3> Interesting points!

What about the right collaborations tools. Which ones do you usually use?</comment>


UK technology Start-ups to be given £1bn fund  - <AUTHOR> http://www.guardian.co.uk/business/2008/dec/07/nesta-plan-technology-startups

<comment><USER2> Who's going to make the investment decisions? Civil servants? Ouch. Instead of setting up their own fund, the government should just be an LP in a good VC fund. If they'd take the money.

<comment><USER3> But does the government have right skills to actually be a limited partner? Again it may come down to their inability to decide on the right funds to be LPs in.

On the other hand if it choose to go through a fund-of-funds that may help. But are there many FoFs that actually invest purely in tech?

</comment></comment><comment><USER4> Why not 2bn or 10bn? I wish people would understand that this money will come at the expense of someone else, probably through inflation and a greater debt burden.

</comment><comment><USER5> This is absurd. Perhaps they can also publish a 5-year plan.</comment>


Radiohead & other pioneers sour on 'pay what you want' music - <AUTHOR> http://www.theverge.com/2013/3/4/4054634/musics-pay-what-you-want-pioneers-sour-on-giving-away-songs

<comment><USER2> "Ironically, the large labels are very supportive of Spotify and some of its rivals."

There's nothing ironic about this at all. Large labels have a great deal of pricing power when dealing with the streaming services. Individual artists do not.

<comment><AUTHOR> Not to mention that they wield large marketing budgets.</comment></comment>


Placeholder names in different languages - <AUTHOR> http://en.wikipedia.org/wiki/Placeholder_names_in_different_languages <comment><USER2> It's funny to read it in English about your own language (German). Some of the literal translations are a bit off, though.</comment>


A picture of change for a world in constant motion - <AUTHOR> https://www.nytimes.com/interactive/2020/08/07/arts/design/hokusai-fuji.html <comment><USER2> I love this visual technique. I appreciate that the New York Times is slowly moving the needle on digital storytelling with their different incarnations of "scrollytelling." This is a technique I feel like I haven't seen yet.

<comment><USER3> There seems to be at least 10 years history of people trying to create the "Ken Burns" effect in browser. This article seems to use it really well. It's a reminder how a much more interesting web experience is right in front of us, but we hardly ever see it because everything is just SEO optimized look alike designs. [https://amp.dev/documentation/examples/visual- effects/ken_bu...](https://amp.dev/documentation/examples/visual- effects/ken_burns/) [https://www.kirupa.com/html5/ken_burns_effect_css.htm](https://www.kirupa.com/html5/ken_burns_effect_css.htm)

</comment></comment><comment><USER4> > A serpentine passage cuts through an ordinary little marsh, on a highway > that connects Kyoto to Edo (now Tokyo). No graceful landscape, this. We're > somewhere commonplace, undistinguished.

It's hard to say if the author is trying to bring a western audience along for a story, or has misunderstood the grace of an ordinary little marsh (if in fact this is a marsh, and not a farm).</comment>


U.S. balance now less than Apple cash - <AUTHOR> http://business.financialpost.com/2011/07/28/u-s-balance-now-less-than-apple-cash/

<comment><USER2> There are only two things that a company can do with its profit:

1\. Invest the proceeds back into the company. 2\. Pay profits out to the shareholders.

That is it.

These days, companies tend to do more of #1 and less of #2 -- they define "investing the proceeds back into the company" as increasing the salaries / benefits of the company's top executives.

Historically, the US government foresaw this problem of too much power in the hands of too few people, both in the government itself, and in the private sector.

When the Federal Income Tax was originally implemented it stated that all businesses would be liable for taxes, and only the wealthiest people (read == the "moguls", back in the day) would be responsible for paying taxes (<http://news.ycombinator.com/item?id=2783480>). Think about the underlying brilliance of this plan: income taxes are tiered, based on profit (the more you make, the more you pay). If a company was making excessive profit, it could do one of two things to "decrease" the tax burden: hire more people, or create a "market" for stocks that can reward the common Joe. The original income tax laws laid out would have allowed a company to pay someone $100K (in 2011 dollars) tax-free. However, that $100K, if kept as "profit" for the company would be subject to Corporate income tax.

(Q: Guess who voted NO on letting shareholders vote on executive compensation? (Jul 2009)) Hint - <http://www.ontheissues.org/> ) (A: the speaker of the House).

When shareholders aren't allowed to regulate their "ownership" of a company (especially when it's just tiny percentage), they don't get a say on how those profits are used, and executive salaries continue to bloat. Those at the top whine, complain that they are the "job creators", and should not be subjected to such taxation. But this is exactly what is supposed to happen: their salaries would not be so high if the companies they controlled were not doing so well. If they're doing well, they should be either hiring more people (people with jobs would be less reliant on government assistance), OR gradually increasing the well-being of shareholders by paying out dividends to those who own only a tiny fraction of the company.

But, it's not working out like that. The checks and balances that the founding fathers put into place to prevent the notion of absolute power corrupting absolutely have become weighted down by the greed of a few.

<comment><USER3> _If a company was making excessive profit..._

I don't recall ever seeing this concept of "excessive profit" in any of my econ text books.

Must just have been my lousy books. Care to define it?

<comment><USER4> That's easy: Credit Default Swaps and investment executive bonuses.

</comment></comment></comment><comment><USER5> Dude, _I_ have more cash on hand than the US Government.

<comment><USER5> NB Not strictly speaking true, but ask me again next week.

(Also, my net worth is positive, whereas theirs is negative to the tune of thirteen figures.)

<comment><USER6> Not exactly -- does the Federal govt even keep a balance sheet that shows assets - liabilities?

How do you value the Federal assets? What's the going rate for a second hand air craft carrier?

<comment><USER7> > What's the going rate for a second hand air craft carrier?

Whatever an African dictator's willing to pay for it?

<comment><USER8> More likely a European middle power that doesn't have the capacity to build one. France has a single usable active aircraft carrier. The United Kingdom has no usable aircraft carriers at the moment. HMS Invincible was decommissioned years ago, HMS Illustrious was modified recently so that it can only handle helicopters and Harriers except that Harriers have been decommissioned and all the helicopters are busy in Afghanistan. HMS Ark Royal has been decommissioned. HMS Queen Elizabeth won't be ready before 2020. Germany has no aircraft carrier.

The problems caused by the lack of aircraft carriers in Europe were clearly demonstrated during the recent conflict in Libya. I wouldn't be surprised at all if one of the European countries would be interested in purchasing or leasing a carrier. The United States would obviously never sell such a ship to a random third world dictator but I don't see why wouldn't they sell it to one of their allies.

<comment><USER7> > The United States would obviously never sell such a ship to a random third > world dictator

You might be surprised by the lengths that the United States (covertly) goes to to please third world dictators in its quest for global hegemony.

</comment></comment></comment></comment></comment></comment><comment><USER9> The United States government does not need cash on hand. It can just make money out of thin air. It's called quantitative easing.

</comment><comment><USER10> Who needs cash when you have large numbers of nuclear weapons for leverage?

</comment><comment><USER11> I wonder what would happen if a country like U.S. would say "Ok, we failed, f __k democracy, from tomorrow we hire Steve Jobs (or any CEO of that caliber like Jeff Bezos) to run the country. Senate and House can go home, we don't need them."

<comment><USER12> It'd be nothing new.

<http://en.wikipedia.org/wiki/Julius_Caesar>

Edit: That article has a few appropriate quotes, actually.

 _During his early career, Caesar had seen how chaotic and dysfunctional the Roman Republic had become. The republican machinery had broken down under the weight of imperialism, the central government had become powerless, the provinces had been transformed into independent principalities under the absolute control of their governors, and the army had replaced the constitution as the means of accomplishing political goals. With a weak central government, political corruption had spiraled out of control, and the status quo had been maintained by a corrupt aristocracy, which saw no need to change a system that had made its members rich._

<comment><USER13> This actually had been done a couple times before. The person who actually did it most completely was not Caesar, but instead Sulla (the generation before Caesar).

<http://en.wikipedia.org/wiki/Lucius_Cornelius_Sulla>

They were called the Cornealian Laws.

[http://en.wikipedia.org/wiki/Lucius_Cornelius_Sulla#Dictator...](http://en.wikipedia.org/wiki/Lucius_Cornelius_Sulla#Dictatorship_and_Constitutional_Reforms)

[http://en.wikipedia.org/wiki/Constitutional_Reforms_of_Luciu...](http://en.wikipedia.org/wiki/Constitutional_Reforms_of_Lucius_Cornelius_Sulla)

Caesar did similar things, but in the other direction, and less like the guy specified.

<comment><USER12> It certainly has a rich tradition!

Although I don't think it's accurate to say Sulla took power more completely than Caesar did... Remember that Dictator was an actual office in the Republic, normally time limited, and that Sulla voluntarily resigned the post where Caesar took it all the way to Dictator for Life.

<comment><USER13> He didn't do really the same thing at all: I just think he did more of a "Yo Steve, go Run this Country" sort of thing. Also Sulla's dictatorial term was notably NOT time limited.

</comment></comment></comment></comment></comment><comment><USER14> Apple is killing it. It's insane how much money they're making now. Not only that, I think they're half valued.</comment>


AWS year in review - <AUTHOR> https://cloudonaut.io/aws-year-in-review/ <comment><USER2> Any word on when Lambda will play nice with VPC-s ? Was supposed to be by the end of 2015.

<comment><AUTHOR> It was announced ( [https://aws.amazon.com/blogs/aws/aws-lambda-update-python- vp...](https://aws.amazon.com/blogs/aws/aws-lambda-update-python-vpc- increased-function-duration-scheduling-and-more/) ) to available in late 2015 but it's not yet released. As soon as this feature is released you can do cool things with RDS, ElastiCache, ...

</comment></comment><comment><USER3> Lambda is indeed really cool and I'm excited to see where it goes. He also touches on the IoT service and it can directly interact with Lambda too; cuts out a lot of layers if you're looking for speed or simplicity.

</comment><comment><USER4> Missed a huge one - Elastic File System was announced and is (still) in preview.

<comment><AUTHOR> that's why it's missing: is not available</comment></comment>


Ask HN: Social Network for Engineers? - <AUTHOR> IMO, stack overflow is becoming a Google for devs.
Is there a facebook/linkedin for devs or technical people?
What would it take for you to join one? <comment><USER2> [http://teamblind.com/](http://teamblind.com/) is a strong anonymous network but enter at your own risk

<comment><USER3> What risk would that be ?

<comment><USER4> It's a toxic community that equates TC to self-worth.

<comment><USER5> TC == Technical Competence?

<comment><USER6> Total compensation, includes salary, bonuses, stock, etc. Check www.levels.fyi for more details.

</comment></comment></comment></comment></comment><comment><USER7> That is what github is heading towards.

<comment><USER8> I couldn't figure out how to use github anonymously, so it CANNOT be a social media for me.

I want most of my online interactions to be anonymous. That's why I like reddit and HN. That's why I never write anything on facebook.

But it's tricky on github. You can only have 1 account. I want _some_ of my side-projects to be linked to my professional persona. I wrote a really good program, I want my interviewer to about this. The other 99% of the code I write outside of work is just fucking around. I don't want to be associated with it. I don't want my employer to know my comments on random PRs on github, because it's none of their business. It's my social life.

But github only allows you to have 1 account. My solution to this was to... have an anonymous github account for socializing and a gitlab account under my name. I still haven't done this since I have some code on github under my name, so not quite sure how should I proceed. Export repos, close github, delete account and open a new acct with anon username?

I wish github gave more opportunity to anonymize interactions on github. Or at least they allowed 2 account per real-life person.

<comment><USER9> Just make a github account with a second email address

<comment><USER8> I know I know. I'm just talking about their _official_ policy. Github, gitlab and bitbucket all allow 1 account per person.

[https://help.github.com/en/github/site-policy/github- terms-o...](https://help.github.com/en/github/site-policy/github-terms-of- service)

> One person or legal entity may maintain no more than one free Account (if > you choose to control a machine account as well, that's fine, but it can > only be used for running a machine)

<comment><USER10> Seems like a ridiculous requirement unless you also require you use your legal name as Facebook does. Also, in my experience, it doesn't seem to be enforced.

<comment><USER8> I don't think it's enforced, but it's easily enforcable. If github sees the same IP address consistently uses 2 accounts they might ban you. Well, maybe they won't, but they can.

Do people have multiple github accounts?

<comment><USER10> There may be more than one person using GitHub from the same residence.

I dont't, but I know people who make a new one for each company they work for.

<comment><USER11> Alternatively you could have a paid professional account and a free account for your personal stuff.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> I try to use social media to improve myself. Which means improving others and writing something up to be criticized.

But social media is used mostly for "personal branding" these days, which is someone writing material consistently, several times a week, to make themselves look good. There is no genuine discussion - it's either praise or putting people down. You end up with arguments on why concatenation is stupid and how template literals are the only way to do things.

DEV.to is a nice implementation of a social network though. Github was good until it became a resume item, after which a lot of fake/flexing behavior started to appear. Codepen is also nice if you're into CSS and programmer art.

</comment><comment><USER13> I'm very interested in building an anonymous social n/w or community where you share what you're currently working on/solving —- while being careful not to disclose confidential stuff. There's so much interesting discussion that can happen around it.

</comment><comment><USER14> I think fosstodon.org is trying to be a social network for tech people, but it federates a lot of non tech stuff, so it's a mixed bag in that regard. I recently joined it so still figuring it out, social media isn't my strong suit.

</comment><comment><USER15> What would one do there that isn't already covered by HN or a subreddit?

<comment><AUTHOR> HN and subreddit is great for uploading posts and having a discussion. It's not as great for finding like-minded devs with similar tech stacks for example.

</comment></comment><comment><USER16> I enjoy devrant.com

<comment><USER17> That's an interesting app, thank you.</comment></comment>


Authentically Curious Founders - <AUTHOR> https://medium.com/@utekkare/authentically-curious-founders-c0ab3d55e9a2 <comment><AUTHOR> A treatise on why founders need to "scale" with their startup.</comment>


Show HN: USched – A command-line scheduler with a "natural" language and an API - <AUTHOR> http://www.usched.org/

<comment><AUTHOR> Currently on its first public beta release: v0.1-beta-01. Contributions in any form (ideas, code, testing, bugfixes ...) are very welcome.</comment>