Why Django Sucks, and How we Can Fix it [slides] - <AUTHOR> http://www.scribd.com/doc/37113340/Why-Django-Sucks-and-How-we-Can-Fix-it

<comment><USER2> For those that don't know, this was a keynote at DjangoCon, and was pretty well received. There's a common theme emerging from everyone that there are some warts, and that they can and should be fixed (both code-wise and socially).

Eric's slides should not be taken on their face as a damnation of Django; rather Eric likes Django, and simply wants to make it better.

<comment><USER3> Do you know how long it will be before the actual video is up?

<comment><USER2> Maybe a week or two at the most (I hope) - looking at the slides alone strips ALL of the context off of the talk, and results in serious confusion.

I wish he hadn't posted the slides; instead waiting for the video.

</comment></comment></comment><comment><USER4> The overwhelming dominance of Zope back in the day really held back the Python web development world and I worry the same thing is happening again with Django. Django could really benefit from a Merb breathing down its neck.

The Rails core team and the dev process is totally open and the DVCS-centric model makes it really easy for anybody to jump in and contribute. I can't see why this wouldn't work for Django too.

<comment><USER5> I think there is plenty of other opinionated* people/groups in the Python web developer community to keep the Django community on their toes. For example, Flask which was mentioned in the slides we are currently discussing. Flask is from the same person/group that did Jinja, Werkzeug, and a couple other cool things. Pylons has a good user base and plenty of steam. There is also mavericks like Ian Bicking who wrote Webob and Paste (which Pylons is build on) who prefer the sans-framework approach because it is simple in Python to glue together the various libraries needed for a "framework".

Plus the addition of AppEngine with doesn't play nicely with Django due to BigTable __means people look at other solutions.

Also, the Django community, especially some of the core developers do seem to respect the opinions of these other people and groups. I have seen in mailing lists and IRC where core devs agree that Django to a wrong turn here or there, but correcting that turn is a slow process. Overall, I think the philosophy of "Do it right, not right now" is a great one, and it needs to be considered with correcting mistakes.

 _Opinionated may not be the best term, but it is close. I really mean people that are vocal, that are respected in the community, and groups or projects that great support and communities.

_ *There are ways to use Django with AppEngine but all have issues. Also, AppEngine now has some sort of SQL support, but I haven't looked into it.

<comment><USER6> Zope seemed to have great people behind it, and was very solidly built, but it seemed a lot more monolithic, which ended up polarizing people.

Django really benefits from the ability to swap out everything. People who hate the default libraries just find something better to use.

No migration? Use South. Some people run Django on Twisted or Tornado. There are different template libraries that people use. I'm not sure if the model layer can be swapped out so easily (without messing around with custom user authorization), but there's nothing to stop people using django models for authorization, and a separate database interface (even a no-sql one) for other data.

<comment><USER7> If you're going to swap out everything, are you really using Django to begin with? Why not just use TurboGears[1], which seems based on the idea of swapping out standard components?

[1] <http://www.turbogears.org/>

<comment><USER4> Yeah, you lose the full-stack benefits of Django pretty quickly once you start swapping out components. If I wanted a more customizable Python stack I'd pick one that was designed to work that way from the beginning.

</comment></comment></comment></comment></comment><comment><USER8> I'm surprised at how nascent the Django developer community is portrayed in the slides. I've spent a fair amount of time in the drupal community, which seems to have addressed some of the issues that are presented. (Please -- this is not a "Drupal" vs "Django" question.) I more interested in how we share development processes across projects. Given all that we've learned from the various open source communities (Apache, Plone, MySQL, etc), it would be interesting to develop a "project framework." Not a framework for code,or the management of it, but rather for the community around it. How to set up an event, how to encourage collaboration, etc. Is anyone familiar with anything like this?

<comment><USER9> I think Django was started with that kind of "project framework" in mind. It's evolving and, like any project that breaks new ground (it's a metaproject in that sense) it's bound to hit a couple snags.

</comment></comment><comment><USER10> I pretty much agree with all of the points raised here about Django, and I've been using it professionally for almost 3 years. The core development team is incredibly hostile to improvements that don't fit some fluffy definition of where they see Django going, to the point where some of the best coders I know are incredibly discouraged from contributing patches or improvements, and just release their stuff on GitHub instead. That's the wrong way for an open source project to be, in my opinion.

<comment><USER11> I'm really sorry that you found us to be hostile, and I apologize for any part that I played in that. I hope you believe that hostility isn't at all our intent -- in fact, I try very hard to be open to criticism -- so if you experienced hostility that's a failure.

If you can, could you point to any specific moments -- mailing list threads, blog posts, responses on HN, IRC conversions, whatever -- that you felt to be hostile? I want to learn from my/our mistakes. Please feel free to post 'em here, or if you don't feel comfortable doing private email (email@example.com) is fine, too.

</comment></comment><comment><USER12> I'm so glad this presentation is getting attention. The presentation really nails it, and I can only imagine the well-deserved awkward moments it caused a few people.

All the issues are big, but those that touch on the nature of the closed nature of the Django community are, I feel the most important criticisms. A project like Django cannot scale effectively (in terms of pace of innovation, willingness of people to contribute, mindshare, etc) unless they address the community issues they have.

<comment><USER13> If the Django community is so closed why are over a third of the attendees new to Django? If the community was closed and insular we wouldn't be seeing so many people who are at their first DjangoCon and who are eager to contribute to Django.

The current setup is not perfect. The core team, especially Russel, have been very forthcoming about this. They are openly talking about things that need to change and how to change them.

</comment></comment><comment><USER14> The apps stuff is dead on, even Drupal does this better (but they have their own problems), the "Design decision needed" and "wontfix" attitude is another one of those 'signals to the community', for the most part the community is forced to patch the django core after each release in order to keep going.

It's a pity, django could go a lot faster than it does. I would not be surprised at all to see a mambo / joomla style fork happening to django if the core team does not heed these warnings.

<comment><USER15> There already is a fork (django-experimental), though interest seems to be limited at the moment.

There has been limited work on it. Essentially I just fixed the demented logging system... though I will probably fix the demented templating system, and ORM in due time.

<comment><USER2> Isn't the logging system being fixed in 1.3?

</comment></comment></comment><comment><USER16> I'm glad a talk like this is encouraged. How else are you going to move forward without a little humility?

<comment><USER2> Yes, and I hope more people realize this, the Django community is good at this, and in large part, so is the wider Python community. It's one of the traits that makes me proud to be a member of it.

</comment></comment><comment><USER17> What is the merb for the django world ?

Is it web2py, flask, cherrypy ... maybe even pylons ?

<comment><USER18> IMHO it's Flask.

<comment><USER19> Seconded. Flask is really awesome. The guy behind it (Armin Ronacher) is a beast of a programmer.

<comment><USER20> Thirded(? Sorry, that's probably a bit too reddit-ish for HN.)

I've been developing with Django for the last two years (a screencast series by ericflo is actually what got me started), and I just recently started work on a major Flask project. Flask is _terrific._

What Armin is doing with his curated extensions gallery is one of Flask's biggest strengths. You get all the awesome flexibility of a no-batteries- included architecture, but with a great set of fallback tools if you just want to get up and running fast.

Not to mention SQLAlchemy is just a ridiculously awesome piece of software, and it integrates with Flask very well.

<comment><USER17> I'm kinda confused - from the homepage, it looks like Flask is Werkzeug plus some extensions. Is Armin, the great thing about Flask ?

<comment><USER19> I and a lot of people trust his judgement and understanding of the problem domain. Flask uses Jinja2 and Werkzeug (both awesome libraries, and again by the same author and display an amazing understanding of what and what not to do for the respective solution).

</comment></comment></comment></comment></comment></comment><comment><USER21> Great slides. As a relatively new and inexperience Django user, the points I found most troubling are the points on Apps, and the points on the Auth model.

I also think that getting started with Django is harder than it could be. There are a lot of things you're forced to do, and decisions you're forced to make about how to structure your code, that should be made for you. For example, reading thedjangobook, several times the authors tell you "you can put that code in this file, or in this other file, or maybe do it like this". As a new user, you want there to be a consensus on code structure, and for that consensus to be forced on you: one less thing to worry about.

One point I would like to mention: I haven't taken part in the Django community at all, but if jacobian's comments to this thread are any indication, it looks like it's a great community. Seems to be a really helpful and open person.

<comment><USER22> It really is a great community. The django-user mailing list and #django on freenode are very newbie-friendly. I would recommend lurking on both and picking up a lot of best practices by osmosis, then asking questions when you get in a bind.

</comment></comment><comment><USER23> PDF link: [http://dl.dropbox.com/u/277867/37113340-Why-Django-Sucks- and...](http://dl.dropbox.com/u/277867/37113340-Why-Django-Sucks-and-How-we- Can-Fix-it.pdf)

</comment><comment><USER24> Anyone have any idea if the roadmap is going in the direction of smaller more focused apps? Maybe easier configuration of them as the way they are configured now is a bit awkward.

<comment><USER2> If you want this, you have to get involved either on the dev or the users list, and advocating this. Eric was setting forth a set of suggestions to make things better; but it still takes manpower, which is more than likely missing right now.

<comment><USER12> Based on the presentation - and the evidence is pretty compelling - it seems the manpower is there; it's just that the core developers don't want it.

<comment><USER2> I don't think it's that cut and dry - especially talking to all of the core people (and near-core) here at DjangoCon, and even Django core is well aware and willing to change, it's just not as easy as adding commit bits.

</comment></comment></comment></comment><comment><USER25> Django people should really look how it's all (configuration, reusability) done in Zope/repoze.bfg. The problems, mentioned in keynote was solved 4-5 years ago there.

<comment><USER26> And what's happened to Zope since then ?

<comment><USER25> It's all ok with it — there are two successors — bluebream and repoze.bfg. I prefer the latter. ;-)

<comment><USER26> I like repoze.bfg as well. My point was that Zope has dropped in usage and mindshare in the last 5 years, and the community was unable to prevent that (for technical reasons, the Zope2/Zope3 confusion, easier frameworks like Django, etc).

<comment><USER25> The problem with Zope is that it's not scale down to simple tasks. Repoze.BFG can do that, but it's Django-time now, sadly...

<comment><USER26> I think this is a major problem with Python (and Ruby, for that matter). Why does it have to be an all or nothing ? Why "Django-time" to detriment of all else ?

The PHP community seems to be happy with a rich ecosystem of frameworks offering different approaches to problems - from Drupal and Wordpress, through Symphony, Zend, CodeIgniter etc. Maybe it's because Python is such a smaller community, but it's a shame there has to be one-framework-to-rule-them-all (yesterday Zope, today Django).

Different frameworks offer different approaches and suit different projects. As Python developers we should be much more open minded.

<comment><USER2> Actually, we're far from "one framework" - just because one has a lot of mindshare doesn't mean we have like 30 of them floating around. Web.py, Django, Repoze, Flask, on and on and on.

I think writing a python web framework is a rite of passage.

<comment><USER26> I was referring to mindshare, and related jobs market, rather than the number of frameworks.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER27> I really feel what they said about the community and core developers:

Reading the correspondence on the following bug really turned me off to the project. <http://code.djangoproject.com/ticket/5172>.

Specifically: "Please do not reopen a ticket that's been marked "wontfix" by a core developer;"

I'm not sure how the issue jives with the whole Django philosophy, but with that much interest in changing the templating language, I found that a bit harsh...

<comment><USER28> Someone has to make a decision and since here that person is a django-core developer, I'm not sure there's much to argue with. If they don't want to do that, bug will get marked "won't fix" every time it's created.

What else do you propose developers should do? I may disagree with this decision, but someone has to lead the project.

</comment></comment><comment><USER29> Major reson Django sucks much less than Zope3: There's "only" one way to do things.

Less is more. Choices lead to confusion. Let's continuing making the less even better.

</comment><comment><USER30> As someone who just very recently began to use Django extensively, it seems like the issues mention do carry some weight. While Pinax is a great help in avoiding to reinvent the wheel, I have had to copy the app out of the package into my own to customize it. I'm not sure if this is prevalent in other frameworks but it didn't seem to be too much of a hassle. But of course, maintenance-wise it might create more problems.

</comment><comment><USER31> I guess a lot of the initial slides are in terms of reusable django apps out there. While what Eric is saying is not wrong, I just think that its hard to enforce certain programming style on these app developers. Some of the apps are coded to be generic enough and can be plugged in easily, others not so much.

None the less, I dont see how / why this is django's fault ?

<comment><USER32> I think his point is that, together with settings issues, the structure of apps makes it hard to make them generic.

</comment></comment><comment><USER33> Are they finally fixing their nomenclature?

<comment><USER33> C'mon really? That's one of the most broken parts of Django ... a view is a controller, a template is a view?

<comment><USER34> I suspect some people think it's more problematic to force web apps into a MVC pattern that was meant to describe conventional desktop apps.

<comment><USER33> By calling it something different, even though it's the exact same thing?

</comment></comment></comment></comment><comment><USER35> Is there a non scribd version of this pdf? Scribd says "all download limits exceeded from your ip" and won't let me download or read anything beyond slide 26.

<comment><USER36> I have downloaded it from Scribd and put it on Google Docs publicly:

[https://docs.google.com/fileview?id=0Bwm9XbY0OR2wZjc1YjQ3Mzg...](https://docs.google.com/fileview?id=0Bwm9XbY0OR2wZjc1YjQ3MzgtYmNhYy00OTgyLWFjMzQtYWFmNTI5NDE2ZjAw&hl=en)

<comment><USER35> Thanks!

</comment></comment></comment><comment><USER37> I like how the author keeps mentioning Flask - I've used flask and liked it a lot.

</comment><comment><USER38> Aside from the title being a bit on the link-baitish side, this isn't too bad a set of suggestions.

<comment><USER2> Well, that was the talk name, so I don't think it's linkbaitish :)

<comment><USER39> Wasn't there a keynote at Django-con a year or two ago with the same title even?:)

<comment><USER18> Close. It was "Why I Hate Django" by Cal Henderson in 2008. He is way funnier than I am: <http://www.youtube.com/watch?v=i6Fr65PFqfk>

</comment></comment></comment></comment><comment><USER40> I dumped django for rails after a brief foray, and even participated in the Pinax group at Pycon in Atlanta. This presentation hits all the major issues, and is particularly strong regarding community. Incetuous communities support personal interest over quality, and that's reflected in the mess of django core.

That said, the framework is not a terrible choice, just not mine.

<comment><USER2> From some Rails/Ruby guys (who are also Django people) Rails, and the Rails community gets the same criticism, or at very least the same themes. Python core gets it too, etc, etc. Sooner or later Node.js will get it, and so on.

I think accusing the Django core as being incestuous attributes a lot more malice to what they say and do then is warranted. All communities have scaling issues, and all open source communities have growing pains.

The sad part about this is that people who didn't get "their thing" into core is going to use this as self-validation, _even if the idea really was bad to begin with_.

<comment><USER14> It's a lot easier to get the 'top stuff' from the community to the top if it the core team is inclusive rather than exclusive.

The examples you give are from communities that have for the most part learned how to deal with those issues (python itself especially, in the talk GvR is actually quoted as having reversed his position on specifically that point).

Communities tend to be one or more orders of magnitude larger than the core team of most projects, and to disregard such an enormous pool of talent is a loss. So what if 90% is junk, let the community sort it out and come to a consensus on which things deserve to be part of contrib or core, and then respect that decision, unless there are _really_ earth shattering reasons not to.

<comment><USER2> I know, I'm a member of python-core, and I was happy with the change. And Django core _is_ here, and listening, and was in the audience of the talk.

It's growing pains - and even python-core, despite guido's recent change of mind, is still learning, and finding ways to reduce friction. Django core is listening, and will change. There's nothing much to worry about.

And if they don't, they die, and we move on (see, past python web frameworks, and other things which wander into the woods to die).

</comment></comment></comment></comment><comment><USER41> Some big Django shop like Discus could create a team and sponsor the development. Something called Django2 Django-ng.

Without hype and stimulation individual developers are passive.

<comment><USER2> Why not just have Disqus sponsor the DSF/Django core. Forking it is exceedingly short sighted.</comment></comment>


Facebook, Instagram, WhatsApp Down Globally - <AUTHOR> http://facebook.com <comment><USER2> I like how this is just a link to facebook.com --- the proof is in the pudding? Here's a link to downdetector though: [https://downdetector.com/status/facebook](https://downdetector.com/status/facebook)

</comment><comment><USER3> Just noticed this, wondering what is the cause behind a downage this serious - they rely on being constantly up and have huge investments in infrastructure to avoid this. Possible attack or a large change gone wrong?

<comment><USER4> Reminds me of the YouTube outage a few months ago. You never notice that these sites are never down until they're down

</comment></comment><comment><USER5> Why are people upvoting this? It's just a link to facebook.com and it's not even true. All 3 services are working for me in Germany, so it's definitely not "global". A quick check on isitdownrighrnow.com tells me facebook and instagram are up and running.

<comment><USER6> Sure, "works for me" == everybody is lying. Great logic there

[https://downdetector.com/status/facebook/map/](https://downdetector.com/status/facebook/map/)

<comment><USER5> I never said that.

</comment></comment></comment><comment><USER7> Having problems getting FB messenger, Facebook.com and Whatsapp to load/connect/deliver messages from the east coast of the US using both my mobile data plan and home internet connection

</comment><comment><USER8> Nope, in EU its working fine

<comment><USER9> Working in the UK.

<comment><USER10> Not for me it isn't.

</comment></comment></comment><comment><USER11> WhatsApp is Working being much more distributed.

</comment><comment><USER12> Ghana. Whatsapp is fine but Facebook is down.

</comment><comment><USER13> Down for me here in the UK.

<comment><USER14> Works fine in UK over EE and Virgin

</comment></comment><comment><USER15> WhatsApp is down in Prague</comment>


Is negative reputation abused on HN? - <AUTHOR> http://pastebin.com/u9aUqtxH

<comment><USER4> As a fairly frequent downvoter, I should probably explain my rationale so that others may retaliate accordingly. These are the main types of comments I tend to downvote:

1\. _" This."_ Unless you're adding something substantive, please don't say it.

2\. _Piling on._ If you're saying exactly the same thing that your only sibling comment said 2 hours ago in a single sentence, please don't say it.

3\. _This website 's design sucks._ Not everyone on HN is a web developer. If you don't like the font choice on a blog about Galois theory, kindly inform the author directly.

4\. _Useless side-tracking from the main point._ Some side-tracking is interesting. If you teach me something about 14th century linguistics while commenting on an article about peanuts, I'll probably upvote you. But if you want make a snarky aside about Americans buying too much bottled water when the article is about life in Egypt, please consider not saying it.

5\. _Unnecessarily rude or dismissive._ "Your design fails on so many levels."

Even though this describes a lot of comments, I'd estimate my upvote/downvote ratio at about 5:1. Finally, I don't view a downvote as necessarily a negative thing. It simply means, "This particular comment does not contribute to this particular discussion." I've been downvoted before, usually rightly so. I still manage to feel warm and fuzzy inside and you should too.

<comment><USER5> I don't really see 4 as a problem, at least not on a threaded forum. Subthreads are supposed to go on tangents, that's what they're for - <USER2> deeper you go, the further away you get from the abstract subject involving everyone to more and more context-specific conversations between fewer and fewer people. It is a discussion forum after all, you can't expect everyone to play for the crowd.

Although - this fact doesn't really work to Hacker News' benefit at the moment, since it doesn't support folding threads by default (though apparently that's coming) so side-tracking can be more of a bother than it probably should.

</comment></comment><comment><USER6> The purpose of downvotes is ill-defined; some people use it as a spam-control button, some people use it as a "this post doesn't contribute to the discussion" (which is itself subjective, and is a subset of:), some people use it as a "your opinion is wrong" button. All are valid use cases, IMO.

The third case is the most controversial one, but...we use the upvote arrow to say "your opinion is right", and nobody complains about it. In a scenario where it's invalid to say "your opinion is wrong", it's also invalid to say "your opinion is right", at which point we might as well just remove the up/downvotes and replace them with a single "flag" button, which will still get abused to minimize opinions people disagree with.

Really, what I think you're experiencing is just the growth of the readership, your own aging and the perspective that comes with it, and the natural tendency of online communities to trend towards middle-of-the-road, safe discussion. That can't really be fixed democratically, IMO, because it is the democratic nature of the system which enables those problems in the first place.

Unless you can figure out how to make the _upvote_ button always mean "this post empirically contributes new thoughts or ideas to the discussion", and nothing else, then attempts to fix the downvote button will be half-measures at best.

Out of idle curiosity: Is anyone aware of a zero-sum karma system, where the total sum of karma in the system is roughly a function of the active userbase, and granting reputation to someone else costs you some of your own? That might make for a fun little economy-in-a-bubble.

</comment><comment><USER7> I'm starting to experience this personally [1] [2]. in the past two weeks, my posts are getting systematically buried by people that disagree with me. In response, I've been trying to make more controversial posts. I have a decent amount of karma to burn (lost 10 points in 2 days), but I'm definitely seeing a trend. Politically unpopular opinions have been downvoted to all hell, but I am unable to be sure if this isn't just the people in the conversation with me downvoting my posts.

I have, however, been scraping the bottom of the comment barrel, and have found quite a few gems that were clearly buried due to disagreements with the premise of the post, rather than the HN guidelines.

my basic rule of thumb is: upvote everything I reply to, whether or not I disagree. if I see grey text, and it isn't an obvious troll (or meets the criteria kevinskii talks about), I upvote.

1\. [https://news.ycombinator.com/item?id=8434094](https://news.ycombinator.com/item?id=8434094)

2\. [https://news.ycombinator.com/item?id=8417226](https://news.ycombinator.com/item?id=8417226)

<comment><USER8> I would guess that in [2] you were downvoted for incomprehensibility and then, in the reply posts in that sub-thread, for tone.

It does seem a bit odd to say that you have been experimenting with bad postig style and to then complain that people have downvoted you because of it.

> rather than the HN guidelines.

Please could you link to the bit of guidelines that you're talking about?

<comment><USER7> > you were downvoted for incomprehensibility

see, that's the funny part. it was a thread about the right to remain silent, and I was explaining that Silence = consent/agreement. when I brought the other poster's silence up as agreement, I was buried to -3.

Did you have a problem comprehending my post, with the point of the discussion in mind? do you believe the moderation was fair (main post was at 0)?

I fully accept that I am attempting to be controversial. I usually don't state my actual opinions for fear of being downvoted. But now that I have sufficient karma to avoid hellbanning (for at least a while), I figured I could give experimenting with moderation habits a try by speaking thing I believe.

> Please could you link to the bit of guidelines that you're talking about?

see my other reply to you. You were absolutely correct about there being no regulation for when/when not to downvote.

EDIT: tried to explain controversial opinions a little

<comment><USER7> also, seeing as you're paying attention, here's[1] another one I'm watching get downvoted due to disagreement. Do you think the moderation is appropriate?

1\. [https://news.ycombinator.com/item?id=8434094](https://news.ycombinator.com/item?id=8434094)

<comment><USER4> In this comment you offered the same theory about "pump and dump" that many others had over an hour earlier. It wasn't anything new. And the idea that Apple's demise would lead to the rise of Ubuntu is, well, let's just again say that I didn't (and won't) downvote you.

<comment><USER7> that's a very polite way to disagree. :)

I'm not very concerned about non-interested parties (such as yourself) downvoting. mainly, I'm interested in how much sockpuppetry is actually going on. it's relatively trivial to make a bunch of posts using a myriad of nicknames (I have 5+ abandoned accounts with more than 500 karma each - <USER3> the password to all of them), so I'm fairly certain that if a random sociopath had enough time, he could easily game the comments of a thread.

</comment></comment></comment></comment></comment></comment><comment><USER9> IMO this is one of the major problems with HN these days. Any mildly controversial or unpopular viewpoint get downvoted, even if factually correct.

I think that you should be forced to leave a comment if you downvote, explaining why you downvoted and giving the OP a chance to respond.

<comment><USER8> Forced comments on downvotes is a suboptimal idea. I would far rather someone drops an "I disagree downvote" and ignores a post than have pointless "I downvoted you because I disagree with you" threads.

<comment><USER9> I looked through your comments, and you don't seem to have many downvotes. In fact I didn't see a single one in two pages of your comment history. Perhaps we all just need to do whatever you're doing :)

</comment></comment></comment><comment><USER10> I've actually done an analysis on all Hacker News comments: [http://minimaxir.com/2014/10/hn-comments-about- comments/](http://minimaxir.com/2014/10/hn-comments-about-comments/)

The arguments in this submission are mostly anecdotal, and the plural of anecdote is not data. What the data shows is that the average comment karma is decreasing in 2014, but that could be from a combination of downvotes and people making new comments which aren't engaging enough to score an upvote, and therefore it would bring the average down.

In retrospect, I should have made a chart of "How has the proportion of downvoted comments changed over the years?"

</comment><comment><USER11> Couldn't have agreed more. I was burnt couple of times either by moderators or other HN'rs last few posts which were totally legitimate but received bunch of down votes. The commenting system seems to be broken in this case. If there was another website like HN, I wouldn't mind switching over in a minute :)

</comment><comment><USER12> I think the real problem being highlighted here is that of aggressively enforced cultural conformity. there are some things that the HN community does not permit to be said. its censorship. that's how the system was designed of course. it does create an echo chamber and its supposed to.

</comment><comment><USER8> If you downvote too frequently the software detects it and stops your downvoting from having any effect. (I think?)

Downvotes for poor reasons are often corrected.

Some topics attract a disproportionate amount of downvoting. This is a good thing because those topics are intensely but shallowly interesting and the downvotes should be training people to avoid those threads. (Except people seem to say "the downvotes prove me right")

I can't think of an example where I received a "bad" downvote. I'm kind of surprised I haven't got more.

<comment><USER5> > This is a good thing because those topics are intensely but shallowly > interesting and the downvotes should be training people to avoid those > threads.

This is not an objective fact, though. This is just your personal taste (and obviously, that of downvoters who would agree with you.)

It's entirely possible (and I would argue, preferable) to avoid threads you don't find interesting without having to 'train' others to agree with you. Just don't read them.

<comment><USER8> But then /new has more of those submissions, and the site attracts more people who enjoy reading shallowly but intensely interesting articles and people who enjoy heat not light in threads.

Communities need to be careful about what they accept otherwise they get destroyed.

</comment></comment></comment><comment><USER13> Could the author of this post offer some specific examples that they would consider abuse? My feeling is that while what he describes happens, on average, good comments survive and bad/unhelpful ones are buried.

The hard problem is keeping the benefits of the current system while also improving it. Perhaps a 'worstcomments' list that could be periodically reviewed for abuse, alongside 'bestcomments': [https://news.ycombinator.com/bestcomments](https://news.ycombinator.com/bestcomments)

<comment><USER10> There is no "worstcomments": all comments which hit -5 are autokilled.

The -4 comments are pretty terrible, though. [https://docs.google.com/spreadsheets/d/1IfbSDYVBXiHZCuMdHXgp...](https://docs.google.com/spreadsheets/d/1IfbSDYVBXiHZCuMdHXgprhmeCVc4XDtOGizF9CSGyUo/edit?usp=sharing)

<comment><USER14> > all comments which hit -5 are autokilled

That's not true. What made you think that?

<comment><USER4> I remember one of my comments that was downvoted to oblivion. I think I lost about 11 points on it, and yet the lowest it ever showed was -4. Is that by design?

<comment><USER14> No; it's an accidental consequence of a change we made earlier this year, and is temporary, i.e. we intend to change it back.</comment></comment></comment></comment></comment>


Show HN: Created My First Admin Dashboard Kit - <AUTHOR> hey everyone,i just created my new admin dashboard design hope you will like it http://atmos.atomui.com <comment><AUTHOR> light version [https://atmos.atomui.com/light/](https://atmos.atomui.com/light/) default version [https://atmos.atomui.com/default/](https://atmos.atomui.com/default/)

</comment><comment><USER2> It seems almost every admin dashboards looks like this nowadays. What makes this one unique?

</comment><comment><USER3> What is the license? How would it work if someone wanted to use it in a commercial product or open source project?

<comment><AUTHOR> we've a commercial licencse for $15 you can purchase on [https://themeforest.net/item/atlas-admin-next-generation- adm...](https://themeforest.net/item/atlas-admin-next-generation-admin-panel- design/23250069)

<comment><USER4> the $15 license says

"Use, by you or one client, in a single end product which end users are not charged for."

would I need to purchase the $350 license for a commercial product like a SaaS?

<comment><AUTHOR> Q:would I need to purchase the $350 license for a commercial product like a SaaS? A: No you just need single license for $15

</comment></comment></comment></comment><comment><USER5> This is really nice. Is there a way to contact you for some freelance work?

<comment><AUTHOR> Thanks for the feedback, Yup, I'm available for freelance drop me a mail at firstname.lastname@example.com

</comment></comment><comment><USER6> Wow... Very nice!

That's a ton of work you did on this. Well worth the price.

<comment><AUTHOR> Thanks Man!!

</comment></comment><comment><USER4> looks great.

is the chat app functional, and if so what backend/api does it use? The documentation doesn't mention the apps so I assume they are just front-end html/css?

<comment><AUTHOR> No its just HTML and CSS. no backend. purpose is to serve as a starting point for designing dashboard

</comment></comment><comment><USER7> Cool, big font, clean elements, nice contrast. Using bootstrap?

<comment><AUTHOR> yes, we've used BS4

</comment></comment><comment><USER8> Looks good but the dark version is not really dark mode.

<comment><AUTHOR> i have to rename to default, thats my mistake

</comment></comment><comment><USER9> Admin dashboard for ... what?

Who is the target audience here, and what would they be doing that they might be able to put this dashboard to good use?

<comment><AUTHOR> Admin Dashboard is UI Kit for backend dev to make admin panel for their own systems</comment></comment>


Laravel 7 - <AUTHOR> https://laravel.com/docs/7.x/releases <comment><USER2> I've worked with Laravel in the past few months. Having never worked with PHP, I went from _eew PHP?!_ to a delightful, fast-paced development model. It shows that good documentation and listening to your user-base will get an Open Source project really far.

It just gets even small things right, nice testing support, database migrations, request validations, events and broadcasting, you name it!

</comment><comment><USER3> One of the most interesting things about the Laravel ecosystem is how an open source project has allowed multiple independent businesses spring up around the core project that facilitate things like management, deployment, etc. I know laravel is not unique in this respect, and that lots of the tooling around it is from Taylor Otwell (founder) but there are lots of others as well.

I've always been impressed by how developer quality of life is such a high priority goal of Laravel. I think much of its adoption, and the successful businesses that have sprung up around it is a validation that they've done that right.

<comment><USER4> do you work with Laravel ... it has not advanced dev quality of life. It has great marketing and has grabbed a % of the dev base so lots of people work with it. It has done nothing better than symfony, codeigniter, Zendframework.

I feel it breeds bad coding habbits, many coders like it simplicity but when they use it they implement many inefficient functions, mostly around querying the database. Laravel has this robust query builder api so you have many novices accessing the database through it without understanding what they are doing.

I dont really know what "quality of life" is provided by Laravel. Its just another MVC.

<comment><USER5> Quality of life is better because you can build so much, so quickly with laravel. There is a ton that laravel can bootstrap for you out of the box and then add to that the very large ecosystem of plugins that has come out of the community.

</comment></comment></comment><comment><USER6> Laravel is great - makes getting routine things done in PHP a lot less bothersome with the ol' convention over configuration philosophy that Rails introduced.

I've used it for several web applications running in production and have always been very pleased with what it has to offer. The documentation is pretty good too.

</comment><comment><USER7> I love Laravel and used it for several projects. My only issue with it currently is its landing page. Where I can't easily distinguish Free parts of the ecosystem and Paid parts. And have to go over each component landing page to see the pricing.

For example they show Passport which is a free OAuth2 library exactly the same way as Nova which is a pay-per-project admin dashboard.

</comment><comment><USER8> I've stopped using since Laravel 5.4, switched to Symfony 2.8 up to now (5.0) and recently also Flask or Django (at least for back end).

My biggest pains were the facades and also I wasn't a big fan of the Active Records (with the empty classes and only doing autocomplete by regularly generating loads of annotations).

Being a freelancer and the increasing popularity, I suppose it's worth taking a look again.

Though I'm still a bit hesitant to use it for my own long-term projects, especially since there are so many breaking changes and there are some side projects I won't be able to update for 3 to 12 months while I work freelance or build up new projects.

Can anyone share their experience using + updating a Laravel-based website which is at least 2 years old, especially regarding maintainability?

<comment><USER9> I was turned off of Laravel from a bad experience of the very reason you're afraid of it. Back in 2017 I was hired to take over a large Laravel 4.2 project, which included upgrading it to 5.0+ version. The upgrade was a very long, extremely painful experience, and Laravel itself progressed from 5.0 to 5.2 during our upgrade so it was like trying to hit a moving target.

I know there is a lot of capability wrapped up in the framework which enables rapid development, but for long lived applications, you're going to spend a not-insignificant amount of your time keeping up with upgrades. So in a sense, the framework itself becomes technical debt. That makes it a bad framework from my point of view.

Your code base should not be forced to be so tightly coupled to the framework that you have to spend time updating it to keep up with the framework versions (or get stuck on an old version).

<comment><USER8> Yeah, my first Laravel application (actually my first use of a framework) was Laravel 4.2 because my personal project was getting more and more complex.

When I wanted to upgrade, reading this did make me wonder a bit: "The recommended method of upgrading is to create a new Laravel 5.0 install and then to copy your 4.2 site's unique application files into the new application. This would include controllers, routes, Eloquent models, Artisan commands, assets, and other code specific to your application."

My worry was: "Do I have to do this with every version??!"

Fortunately not, but the updates did take some time; I still updated a few minor versions before moving to Symfony.

</comment></comment></comment><comment><USER10> We are ever grateful to Taylor otwel and the team for developing and maintaining Laravel, ever wonder why most of us African web developers use Laravel as a web framework? Because it works and fast without much need for fancy tweaks (here a decent internet is still a luxury in most parts of the continent), Laravel allows you to spring up a decent web app fast without much hassle, you can easily set it up in the cloud and it will be up and running with need for maintenance and site reliability issues. More grease to your elbows Taylor and the rest of the Laravel team.

</comment><comment><USER11> > Major framework releases are released every six months...

Two major versions with breaking changes per year? This seems a bit too fast paced for my taste.

But I haven't used the framework and would love the input of someone that had to maintain a Laravel project for more than a year.

<comment><USER12> The changes in each major version are pretty small. They're sticking to semantic versioning now so if there is a major version bump, it's likely a small change to some internal library that would only be breaking in the technical sense.

Plus, this is the pace the framework has adopted for a long time now so most of the devs in the ecosystem are used to doing an upgrade once or twice a year. Generally they're very quick. < 15 min.

<comment><USER13> > They're sticking to semantic versioning now

I will believe that when I see it.

edit: to clarify, historically they've bumped the minor version number whenever they had major changes in the API, and now the major version bumps are usually non-breaking changes. I don't think the team fully understands Semver.

</comment></comment></comment><comment><USER14> Great work going in this framework, along with Symfony are a driving force for PHP. This is no-bullshit tool for making web sites where most details are thought out. It may be opinionated but if you learn and follow it instead of working against it you can have a super quick turnaround from concept to production.

</comment><comment><USER15> Laravel seems to be doing great. The number of improvements in DX and the ecosystem is moving at a nice pace. I often compare it with Ruby On Rails framework (my primary stack) which is unfortunately not focusing much on DX anymore.

For instance, Laravel has been consistently improving authentication by providing official packages right into the framework. Whereas, Rails still doesn't have an official gem backed into the framework. The recent change of hands of "devise" gem would have been a great opportunity for Rails to take it over.

<comment><USER16> What is DX?

<comment><USER17> I guess: developer experience

</comment></comment></comment><comment><USER18> Laravel Airlock is my favorite thing about this release. I already started using it for one of my sites, it makes API authentication so much easier than it used to be with Passport.

</comment><comment><USER19> As a long-time PHP developer, I love Laravel, all of its features, and how the community has built around it, but there are a couple of pain points I felt when I used it last year, not sure if these have improved:

1\. Very difficult to get running in shared hosting.

2\. Feels a bit heavyweight for a SPA (Single Page Application) where the Javascript front-end framework (e.g. Angular, React) is doing most of the work, and the PHP Laravel backend is just processing the CRUD APIs in REST.

<comment><USER20> For the SPA case they have a slimmed down version called Lumen.

</comment></comment><comment><USER21> two things I noticed: 1) the great majority of features were authored or contributed by Taylor Otwell - in any cases he was the only name next to each feature. How this is sustainable in the long term? 2) it is still using a lot of singletone/static methods and so on, how they can promote some solid testing culture?

</comment><comment><USER22> kudos for Taylor Otwell</comment>


Clever Algorithms, Nature-Inspired Programming Recipes in Ruby - <AUTHOR> http://www.cleveralgorithms.com

<comment><USER2> I just pressed "publish" on this book only hours ago. I'm happy to answer any questions.

From the back cover:

Implementing an Artificial Intelligence algorithm is difficult. Algorithm descriptions may be incomplete, inconsistent, and distributed across a number of papers, chapters and even websites. This can result in varied interpretations of algorithms, undue attrition of algorithms, and ultimately bad science.

This book is an effort to address these issues by providing a handbook of algorithmic recipes drawn from the fields of Metaheuristics, Biologically Inspired Computation and Computational Intelligence, described in a complete, consistent, and centralized manner. These standardized descriptions were carefully designed to be accessible, usable, and understandable. Most of the algorithms described were originally inspired by biological and natural systems, such as the adaptive capabilities of genetic evolution and the acquired immune system, and the foraging behaviors of birds, bees, ants and bacteria. An encyclopedic algorithm reference, this book is intended for research scientists, engineers, students, and interested amateurs.

Each algorithm description provides a working code example in the Ruby Programming Language. Source code and additional resources can be downloaded from the books companion website online at <http://www.CleverAlgorithms.com>

EDIT:

Forgot to mention the book is in paperback, free PDF, and free online as a webpage. You can also fork the content on github at <https://github.com/jbrownlee/CleverAlgorithms></comment>


Our Never Ending 'Scam Season' - <AUTHOR> https://www.nytimes.com/2019/01/30/arts/fyre-festival-billy-mcfarland-elizabeth-holmes-anna-delvey.html <comment><USER2> Well, since years ago, I think I have read thousands of reports regarding these scammers at social media and some sites like [http://whycall.me](http://whycall.me). There's nothing we can do to stop them. I think the authority should really think about this problem. Phone scammers have become #1 enemy for us since few years ago.

</comment><comment><USER3> I was wholly expecting this to be about the endless robocalls that I receive. This was... different but fascinating. I had no idea that people were faking sponsorships like this.</comment>


New York Streets Are Nearly Empty, but Speeding Tickets Have Doubled - <AUTHOR> https://www.nytimes.com/2020/04/16/nyregion/coronavirus-nyc-speeding.html <comment><USER2> Understandable. In DFW, the Dallas North Tollway has always been a pretty fast North/South artery but these days I would say the average speed is around 85-90 MPH. It's obscenely fast now that there's no traffic.

Also, I believe since it's technically a private road only Texas State Troopers patrol it and there's only so many of those guys to go around.</comment>


Groupon Gets A Hefty $30 Million From Accel For Local Offers Service - <AUTHOR> http://www.techcrunch.com/2009/12/02/groupon-gets-a-hefty-30-million-from-accel-for-local-offers-service/

<comment><USER2> Groupon epitomizes simple, useful and profitable ideas. Sell things and services that are usually sold individually in bulk. Increase volumes for retailers, reduce prices for buyers, profit!

I have personally used Groupon thrice in the past three months. I think Amazon is the only online retailer I buy from more frequently.</comment>


"What's the website number for your startups?" - <AUTHOR>

-My Mom, yesterday, on the phone. <comment><AUTHOR> Ahh yes, as we discuss and create the future, it is so easy to forget that some of us haven't even it made it to the present.

Love ya mom!</comment>


The Zen of Missing Out on the Next Great Programming Tool (2016) - <AUTHOR> https://dev.to/ben/the-zen-of-missing-out-on-the-next-great-programming-tool <comment><USER2> Modern ui is a mess and frameworks + stackoverflow make it messier. Old desktop APIs , even Win32, were at least built around a model that made some sense and allowed you to use correct abstractions, and there was a logical path to a working solution. Today you try to glue together some random SO answers and some ugly jquery plugins, with no idea why it has to be done this way or how to approach a task in a correct way. Look at basic things like drag&drop, keyboard shortcuts, menus, tab order, field focus management and all stuff that's important in application ui - why it's always an ugly and painful hacking with messy and half-baked js , we already had much better tools and replaced them with something that only pretends to be general purpose ui runtime

<comment><USER3> It's a breath of fresh air when I get to get away from our "modern", overwrought JS web stack and go bang out some internal tools with good old WinForms. So much less friction and magic all around.

<comment><USER2> Maybe this is the only reason why new js ui frameworks are created- to run away from the mess and unintentionally find yourself in even bigger pile of junk

</comment></comment></comment><comment><USER4> Couldn't agree more as a manager for ~25 years. Engineers, and I am one, a decent one, love the new shiny stuff. Me too.

As a manager who has to ship product that works? Not so much. That made me switch gears. My team used to joke that if it happened in Unix after 1980 I don't like it. That's not true, we used mmap, and a bunch of other stuff that happened later but the docs I used to program were old. I let new stuff in grudgingly.

I think it worked. We're dead so there is that (BitKeeper) but we had an almost 20 year profitable run with no VC in the valley so there is that too. Our support was over the top, I would challenge you to find a company that had as many users as we did and had the support that we did. Our 24/7 average response time was something like 22 minutes and the only reason it was that long was we went to bed. When we were awake the response time was measured in seconds or single digit minutes.

I credit the response time to being boring. No shiny stuff, just stuff that works, be boring. The mantra was "drive towards zero support costs, that's how we scale". That didn't mean not support people, it meant make the product so good that there were no support issues. We didn't get there but we got closer than a lot of companies.

tl;dr: don't beat your management / leadership up so much for not wanting the shiny new stuff. You are in this to make money or change the world or something. All of those somethings are not well served by unproven new stuff. If you have to use new stuff choose very very carefully and think about the costs.</comment>


99designs Beats DropBox & Tumblr, Creates Video - <AUTHOR> http://blog.99designs.com/2010/05/20/thanks-for-voting-99designs-webby-award-winner/

<comment><USER2> I think the last thing I want to start seeing on here is a FUNNY tag.

<comment><USER3> Relax, man. The content on HN is probably one of the best on the web. So when someone posts a story with a funny tag, specially when it's related to startups, we can just let it be.

</comment></comment><comment><USER4> Is it me or do they have a lot of employees for what they are doing? Especially when all the work is outsourced.

<comment><USER5> "Investors in 99designs include the founders of the successful online media and publishing company SitePoint, namely Mark Harbottle and Matt Mickiewicz, along with internet pioneer and entrepreneur Leni Mayo, and MelbourneIT Non- Executive Director and previous CEO of Hitwise, Andrew Walsh."

</comment></comment><comment><USER6> Really surprised by the number of employees for 99designs.com - I would have figured 4-5 max.

<comment><USER3> Maybe, it includes the Sitepoint employees.

</comment></comment><comment><USER7> I thought lip dubbed videos went out of style a few years ago? Still, it was ok.

</comment><comment><USER8> FUNNY: exploitsourcing isn't.</comment>


Y Combinator Holiday Gift Guide 2017 - <AUTHOR> http://www.ycgiftideas.com/ <comment><USER2> Alright. That Hykso MMA punch velocity tracker would make an ideal gift for the fitness minded in your life ;)

Definitely noticed increasing frequency of electric bikes and motorcycles spotted in the wild. Maybe they will become the hoverboards of this holiday season...

[http://www.zeromotorcycles.com/](http://www.zeromotorcycles.com/)

[http://www.bullsebikes.com/](http://www.bullsebikes.com/)</comment>


After Growing to 50 People, We're Ditching the Office Completely - <AUTHOR> https://open.buffer.com/no-office/ <comment><USER2> > Yes, there were bunk beds in the office. And they got a lot of use!

Glad they got rid of the office, maybe it will allow people to have a better work life balance.

</comment><comment><USER3> Maybe I have a weird client setup, but when TFA loads I have to hit "stop" really quickly to prevent the page from navigating to some little widget.</comment>


LinkedIn Profiles for (uemployed) Engineers - <AUTHOR> https://medium.com/@steyblind/effective-linkedin-profiles-for-engineers-74f31336a1a5#.oejr7jw4k <comment><USER2> > Endorsements tell a good story, too.

To a clueless manager, maybe. To somebody who have seen how they work, they're useless. I have endorsements for languages, tools, and platforms from people who have never had a chance to see my work, let alone my work with endorsement subject.

<comment><AUTHOR> FWIW, this was in a section highlighting "things recruiters like".

Your LinkedIn profile hints at what you're good at. It doesn't replace a whole job interview.</comment></comment>


The Return Of The Broadcast Treaty - <AUTHOR> http://www.techdirt.com/articles/20110622/02575214801/return-broadcast-treaty.shtml

<comment><USER2> This is frightening. There is absolutely no rhyme or reason for this behavior aside from greed. As someone just getting into the broadcast industry, I can't personally think of any reason for this behavior. They claim it has something to do with IP, but here, it seems like they're trying to claim rights got something they didn't even create (and that it would be OK). There is absolutely no reason a broadcaster deserves "special" rights to content. This is the sign of an industry that's too resistant to change and not intelligent enough to respond to it properly. Sad.

</comment><comment><USER3> I followed the links and got to a fuller explanation: <http://importance.corante.com/archives/002925.html#more>

I am confused by both the perceived need and the perceived damage. I assumed that the broadcast received copyright protection because of the production artifacts other than the public domain original source. The treaty itself seems to protect the specific broadcast, but does not prohibit other broadcast of the same source material.

Am I missing something? I must be, otherwise why create such a treaty? Of course, the mere existence of an organization such as WIPO means that they have to create law, otherwise everyone would have to give up the high living of Geneva and go home.</comment>


The initial commit of CoffeeScript — its file extension was '.jaa' - <AUTHOR> https://github.com/jashkenas/coffee-script/commit/8e9d637985d2dc9b44922076ad54ffef7fa8e9c2#commitcomment-3439435

<comment><USER2> I for one welcome the return of the `aint` operator.</comment>


A monoid is a category, a category is a monad, a monad is a monoid - <AUTHOR> https://graphicallinearalgebra.net/2017/04/16/a-monoid-is-a-category-a-category-is-a-monad-a-monad-is-a-monoid/ <comment><USER2> For anyone wondering how this is useful outside of programming and/or looking for an easier introduction, check out Category Theory for the Sciences [1]. There are free digital versions on Github, too [2]. Here's the reasoning given by the author:

"Information is inherently dynamic; the same ideas can be organized and reorganized in countless ways, and the ability to translate between such organizational structures is becoming increasingly important in the sciences. Category theory offers a unifying framework for information modeling that can facilitate the translation of knowledge between disciplines."

[1] [https://mitpress.mit.edu/books/category-theory- sciences](https://mitpress.mit.edu/books/category-theory-sciences)

[2] [https://github.com/mmai/Category-Theory-for-the- Sciences](https://github.com/mmai/Category-Theory-for-the-Sciences)

</comment><comment><USER3> For anyone interested to start on this subject, Philip Wadler's Category Theory for the Working Hacker [1] is an excellent introductory lecture for building an intuition.

[1] [https://www.youtube.com/watch?v=V10hzjgoklA](https://www.youtube.com/watch?v=V10hzjgoklA)

<comment><USER4> just to note this talk briefly alludes to another subject, the Curry–Howard isomorphism, something Philip Wadler had similarly given a talk about at Lambda Days (2016) titled 'Propositions as Types'[1] (slides [2] and the video recording[3]).

[1]: [http://www.lambdadays.org/lambdadays2016/philip- wadler](http://www.lambdadays.org/lambdadays2016/philip-wadler)

[2]: [http://www.lambdadays.org/static/upload/media/14562260715188...](http://www.lambdadays.org/static/upload/media/1456226071518855propositionsastypeskrakow.pdf)

[3]: [https://youtu.be/aeRVdYN6fE8](https://youtu.be/aeRVdYN6fE8)

<comment><USER5> That youtube lecture was really interesting.

The very ending was awesome as well!

</comment></comment></comment><comment><USER6> Are there really that many people on NH that can understand this?

I'm not trying to be snarky, I'm legitimately interested. It seems like this class of knowledge is highly specialized, yet I see posts like these high up on NH frequently.

<comment><USER7> I work at Target and we have a weekly class on algebra, category theory and Haskell because people are interested. It's a mix of programmers learning some of the math and mathematicians learning some of the programming :).

It's actually a lot more accessible than it seems at first—these ideas are not _complex_ , just abstract. Thinking at a high level of abstraction is very much a skill which requires specific training, but it's a skill _worth_ training and, when you have it, learning things like this becomes much easier.

The same thing is true of programming, by the way: once you start "thinking like a programmer", it becomes much easier to learn a new programming language or to understand some low-level programming concepts. And thinking like a programmer is, in the grand scale of things, not _that_ different from thinking like a mathematician!

<comment><USER8> Is this at the HQ in Minneapolis? I hope to move back to MN someday (to raise the younglings) and you make Target sound awesome!

<comment><USER7> Currently we're a small team mostly based in Sunnyvale, but we're also partly distributed and have some people in Minneapolis. This has been a bit awkward for the class specifically because teaching people over Hangouts turns out to be _hard_ , but there is certainly some cool work going on in Minneapolis.

<comment><USER9> As someone in the Twin Cities, BAH, I was hoping to find more haskellers around. Oh well, I'll keep trying to get more FP stuff in where I work at least.

</comment></comment></comment></comment></comment><comment><USER10> For those want a great intro and overview of category theory aimed at programmers, Bartosz Milewski's lecture series on YouTube [0] is worth the time investment. It covers the topics this post discusses and more, but crucially with plenty of context to help understand why any of it matters.

0: [http://www.youtube.com/playlist?list=PLbgaMIhjbmEnaH_LTkxLI7...](http://www.youtube.com/playlist?list=PLbgaMIhjbmEnaH_LTkxLI7FMa2HsnawM_)

<comment><USER11> Was checking to see if anyone has posted this. Am in the middle of the lectures and they are absolutely fantastic.

</comment></comment><comment><USER12> I recently started going through Bartoz Milewski's Category Theory lectures [1]. I think they are a very nice place to start learning these things.

[1] [https://m.youtube.com/watch?v=I8LbkfSSR58](https://m.youtube.com/watch?v=I8LbkfSSR58)

<comment><USER13> Watched 1.25 videos (basically, where he drops philosophy and ought to get into real explanations), and am starting to feel dissatisfaction I always feel when try to learn about this stuff from programmers. What I always expect is mathematics, explained informally for easier understanding. What I get is not mathematics, I can even say he is starting to sound mystical. For instance, he says "bunch of objects". He understands, that "bunch" is a weird term (actually, not a term at all) and it might seem he could use word "set" instead, but he can't. Why he can't? He doesn't really explain, he just starts delving into some weird narratives of "set-theorists everywhere see set-nails, because they have a set-hammer" and "because paradoxes". But if you actually studied set theory (and I guess every programmer does at some point, or at least should to) you know ZFC was basically created to help to get rid of these paradoxes, so it still isn't clear why a "bunch" isn't a "set".

So you go to the Wikipedia and learn there is a word "class" (no more complex than a word "bunch" at all, in my opinion) and there exists simple, very much set-theoretical explanation of what is (or might be in different set-theory systems) a class, and why it might be not a set sometimes.

Then he starts with arrows, and again, from the explanation it isn't immediately obvious why he can't use a word "function" instead (and it is immediately obvious when you read definition of category on Wikipedia — and I got used to the fact Wikipedia isn't the best source by far when trying to learn math).

So, my real complaint is these guys are consciously not using mathematics (because math texts are "scary" — and, yeah, I agree, they often are) when essentially explaining mathematics. Category theory isn't some different discipline, it isn't "superset" of mathematics — it _is_ mathematics. Informal is good when it isn't "imprecise", otherwise it's just useless and harmful. I sometimes think it might be easier to actually get used to (once more all over again) all math-talk and read something like "Categories for a working mathematician", instead of trying to decipher all these "simpler" informal explanations.

</comment></comment><comment><USER14> I've been studying Leibniz recently and I'm excited to get to his treatment of Monads. The following is a little irrelevant to this post, but the title of this post stirred a relationship.

So to Leibniz, in the conception of an entity's identity, he posits that one must include all propositions related to that entity. So when we try to consider a property of an object of our mind, we are basically saying "it is what it is." Saying that Einstein is German is like saying "Einstein is Einstein." Where this conception of including propositions in identities gets weird is that his formulation also includes future propositions. In this respect, only God can truly understand anything fully, because only he can tell the future and can get the full identity of things.

So "x is x" shows up a lot.

Edit: As mentioned, Leibniz Monad != the Monad of category theory. I suppose I'm just looking for any excuse to talk about Leibniz. Also, I did say I didn't even get to that topic yet. Consider this a peep about the duality of that term.

<comment><USER15> If god was all powerful, he could create a rock he himself could not lift.

If god was all knowing, he could create a cryptosystem he himself could not break.

God is a bad measure of physical properties. Some things are just unknown.

<comment><USER16> Chuck Norris could create a rock so heavy he himself could not lift it ... and then he would lift it.

<comment><USER17> It's not funny anymore.

</comment></comment></comment></comment><comment><USER13> There's interesting table on wikipedia's Category[0] page, listing group-like structures. It is easy to find useful example of Abel group and useful example of Group which is not Abel group (say, string concatenation with negation defined as ab - b = a), but while I clearly understand definition of monoid, I cannot think of any useful example of monoid which is not group.

Can somebody help with examples for the rest of structures? Additionally, it seems I don't really get concept of totality. I get what "total function" is, but what does this column really constraint in the context of different structures? I mean, what is a structure that lacks this "totality" thing?

[https://en.wikipedia.org/wiki/Category_(mathematics)](https://en.wikipedia.org/wiki/Category_\(mathematics\))

<comment><USER18> The natural numbers {0, 1, 2, ...} under addition are an example of a monoid which is not a group. Another example is natural numbers under multiplication.

An example which may speak to a programmer more: the set of functions which take a 32-bit int as argument and return a 32-bit int, where the operation is composition of functions. The identity is the identity function. Since not all functions are invertible, this monoid is not a group.

<comment><USER13> Oh, silly me, of course, negation must be defined for _every_ pair of elements. Ok, it's pretty clear about monoids (even though actually it would be better if there was an example, where no "natural" inversion exists at all). But what about everything else in the table? Especially I'm interested in magma which is not a semigroup and groupoid which is not a group.

<comment><USER19> Binary trees, with the operation being to join two trees at the root, form a magma which should quite clearly be non-associative (and thus not a semigroup).

There are of course other examples of sets equipped with non-associative binary operations (for example, 3-dimensional vectors with the cross product), but those typically have extra structure that you will want to exploit which "non-associative magma" cannot capture, and talking about them as magmas will probably feel somewhat artificial unless you have a good reason for ignoring all that structure.

</comment></comment></comment></comment><comment><USER20> The author's (eponymous) series on Graphical Linear Algebra is well worth reading, and has some interesting parallelisms to boolean functions & their manipulation.

</comment><comment><USER2> In most of the category theory posts on HN I've seen, there's at least one person asking ahead this stuff is useful for. This comment is about why I find it useful.

Why I learn this stuff: to more effectively change things about myself.

Category Theory is an abstract math of relationships. I use it to better understand how my mind and body work. How parts of me are related in the moment and/or across time. Understanding how things in me are related is essential to me dealing with PTSD & recovering from addiction, both of which can color every aspect of a person. Untangling them is insanely hard and has gotten much easier through CT.

I apply my programming intuition to my brain & body through CT. There exists a path from neuroanatomy to theoretical computer science that passes through category theory. I've been experimenting on myself for 6 months with the goal of changing my mind and body. I've been doing it by developing an intuition for category theory, developing an intuition for how neutral networks learn, adapting machine learning models with concepts from neuroscience and psychology, and mixing it all with my intuition for programming.

So far, I've:

• changed how I walk through a handful of sessions lasting a few minutes and no longer experience back pain I'd been seeing a chiropractor (saw him weekly for 3-4 months with little improvement, ending about 10 months people changing my gait)

• began learning how to identify and stop believing anxious thoughts

• accidentally started developing the ability to focus and direct my attention (way beyond anything I've ever experienced on my ADHD meds)

• accidentally stumbled on the Buddhist practice of deity visualization, which created a second conscious voice in my head. She helps me learn how to embody more than one new personality trait at a time easier than if I simply focused on being those things. It's weird/complicated, and I'm willing to go into more detail if people have questions.

Here are some of the few bits supporting my claims about neuroanatomy and category theory:

[https://www.researchgate.net/publication/280219255_Conciliat...](https://www.researchgate.net/publication/280219255_Conciliating_neuroscience_and_phenomenology_via_category_theory)

One of the coauthors wrote the only book on the brain and category theory:

[http://tierra.aslab.upm.es/documents/PhD/PhD- JGomez.pdf](http://tierra.aslab.upm.es/documents/PhD/PhD-JGomez.pdf)

If you understand a good bit of CT and would like to help me flesh out my framework, my contact info is in my profile.

I live in the Seattle area and would love to meet up with anyone interested.

<comment><USER2> Does anyone have constructive criticism to go along with the downvotes?

<comment><USER21> The downvote button should be banished is my only constructive criticism.

As far as the rest, I'm largely right there with you. I also use what you call the "second conscious voice" as well, and agree it's extremely helpful if not abused, plus some of the other stuff too.

I used to live in Seattle btw but back in Europe for a while at the moment otherwise would have loved to chat.

You sound to be on a good path. Best.</comment></comment></comment>