I'd Rather Watch Instagram Than A Movie - <AUTHOR> http://techcrunch.com/2012/01/23/the-attention-wars/ <comment><USER2> Maybe I'm just a stick in the mud but I'm not particularly inspired to follow the current direction and trends of consumer entertainment myself. Before I lean into my rant I'll say social networks serve a purpose - I do use them.

But in terms of entertainment, I really don't think social networks such as FB, Twitter, Pinterest or Instagram are really all that redeeming, entertaining or engaging on any personal level. What do I get out of them? - small hits of dopamine that don't impact me on anything more than an artificial level. So after 2 hours on Facebook, what have I come away with - honestly usually nothing.

I'm not going to argue that all movies are better - Hollywood can put out some real bullcrap at times but I think there is a much greater opportunity with movies as a medium to create an engaging story that can educate, move and inspire. A social network feed has never made me laugh to the point of tears, cry to the point of tears or made me think about things completely differently.

What makes me sad is that I've realized the general US audience is not so much like me - people will trend towards cheap things that require short attention spans which I think will result in an overall lowering of the number of high quality stories told through films and novels.

Sucks for me I suppose.

<comment><USER3> Agreed.. how is Instagram suppose to replace "The Lives of Others", "Lord of the Rings" and "Star Wars"?

Movies (and books etc.) can tell so many different stories. Social networks can, at best, tell the stories of people very much like yourself.

</comment></comment><comment><USER4> This is a horrible and depressing post for an old guy like me... but fortunately the great video of Louis CK provides the necessary contrarian view. (The presence of this video makes one wonder if it was all in fact tongue-in-cheek?)

<comment><USER5> I had the same thoughts as you, "is it for real?" as I've read this part:

"nd, why even bother spending two hours of your time sitting and absorbing a complex narrative that isn't connected to you, when you can pop open your iPhone and get a quick hit of rarefied entertainment from people you actually know — who you can actually relate to as opposed to just project on."

"absorbing a complex narrative"? Of a Hollywood film? Yes, that's "demanding."

</comment></comment><comment><USER6> This written by the same person who did the infamous piece on "dull companies" recently? Why is she still allowed to write when, again, the ignorance (arrogance?) prevails?

</comment><comment><USER7> To think that just a few years ago, groans could be heard for miles if some relative/friend invited you for a "fun evening" involving a slide projector… Yes, sure, you can do it on your own time and skip the less interesting parts (and, well, probably more cat pictures now), but it probably has even less of a narrative. To me, this makes it even more passive, some kind of disjoint idling stream-of-consciousness obsession with killing time…

</comment><comment><USER8> I think what's going on here is how instagram and social media in general appeals to a shorter span, in the same way that many people will happily knock back four 45 minute Breaking Bad episodes, but the thought of sitting down and getting emotionally attached to a whole new group of characters, for a whole 100 minutes?

It just seems like a huge investment of time.

</comment><comment><USER9> I watch movies much less these days due to this. I wonder whether this is good or bad. These days I am way more conscious of my information diet. I don't want to sit around waiting for my next piece of information dopamine.</comment>


Announcing NetBSD 7.0.1 - <AUTHOR> http://www.netbsd.org/releases/formal-7/NetBSD-7.0.1.html <comment><USER2> Does anyone runs NetBSD on desktops or laptops? How it is the experience, compared to Linux?

<comment><AUTHOR> I've run it on desktops before, but currently, I run it inside a VMWare Fusion virtual machine</comment></comment>


The 68000 Wars, Part 3: We Made Amiga, They Fucked It Up - <AUTHOR> http://www.filfre.net/2015/04/the-68000-wars-part-3-we-made-amiga-they-fucked-it-up/ <comment><USER2> Obligitory links as they are not on the page...

      Part 1: http://www.filfre.net/2015/03/the-68000-wars-part-1-lorraine/
      Part 2: http://www.filfre.net/2015/04/the-68000-wars-part-2-jack-is-back/

</comment><comment><USER3> I sometimes like to escape into a fantasy daydream world when I'm at work, where the British government of the 80s realized the importance of controlling your own destiny, and just bought a million Acorn Archimedes for the entire civil service, military, universities etc, enough that it became a no-brainer for everyone else in the UK. We could be 10-20 years ahead of where we are now. Same if the Germans and Dutch had just bought Commmodore and Atari outright and moved their production over.

Of course if they had they would probably have been tricked into buying Amstrad shit.

<comment><USER4> I live in a similar fantasy land, however I think Acorn had ample help from the UK government. After all, pretty much every secondary school in the UK purchased them. That and free national TV advertising from the BBC.

The problem was that platforms that were limited to a single nation were not viable, Acorn never really broke into the US market. I don't believe there was even much adoption in Europe. You can see the same story in Japan with MSX.

That said, I agree that RiscOS was far superior to many competitors. But as we still see, it is adoption and the ecosystem around the platform which is often the deciding factor in success than the superiority of the basic technology.

Still more than a little nostalgic though... and wish it was able to address international markets better. Anyone have some cash to buy the rights to RiscOS and open source it? I think it only take 30K GBP or so. :)

<comment><USER5> If just the cash were the problem I'd be happy to do it but I think RiscOS's time has past.

QnX now, that would be another matter but I suspect RIM will want more then 30 K for it. I already approached Quantum when they still owned it but there was absolutely no way to get them to even respond. Which is a pity because I think something like QnX in open source form would absolutely rock.

</comment></comment></comment><comment><USER6> This is a great series. I can also really recommend the book the author wrote, which presents a more technical view of the Amiga:

[https://mitpress.mit.edu/books/future-was- here](https://mitpress.mit.edu/books/future-was-here)

<comment><USER7> Are they complementary? As in, is it worth to read the book after reading the blogposts, or do they tell the same story?

<comment><USER6> Yes, very much so. The book contains some quite technical walkthroughs of the Amiga, both software and hardware. In enough detail that a technical person will be able to understand more or less exactly what's going on, but without requiring any knowledge about the Amiga.

<comment><USER8> Conversely, the blog posts tell the story of the Amiga's origin in more detail than the book. So they do complement each other.

<comment><USER7> Thank you both. I'll definitely have a look at it, I'm fascinated by computer history.

</comment></comment></comment></comment></comment><comment><USER9> I'm still wondering why the Amiga didn't become ubiquitous. I had one and I kept getting called a liar about its price - for the performance compared to PCs of the time, surely I omitted a zero.

<comment><USER10> My parents insisted on buying a PC for home use. It was mainly so they could do accounting for their business at home. I had a friend who had an Amiga and I spent pretty much as much time as possible at their house using it. We even had an Amiga only store in our local mall (in the U.S.!).

I think that, in the way that Apple products are now showing up in work places due to people preferring them at home. The reverse happened in the 90s. People wanted or needed to bring work home, and their offices supplied them with PCs.

The productivity situation on PCs was always just a bit better or standardized than Amigas.

What mystified me more was that, during this time period, the Apple Macintosh took over the creative market -- especially in visual arts. The Amiga always came across to me as a far better creative machine, with better tooling, than the stuffier Mac. Again it may be due to better support for WYSIWYG output during printing and pre-press, better color matching etc. But the Amiga just felt more creative and fun to me.

Also, by the time the 68040 came out, it was starting to become clear to everybody that Motorola wasn't going to be able to keep the performance edge up. Apple switched to PowerPC but Commodore couldn't afford to. There was a whole plethora of PowerPC cards for the Amiga, to try to keep them going, but it was really obvious by then that it was game over, and people started to hunt around for the next system.

<comment><USER11> "Again it may be due to better support for WYSIWYG output during printing and pre-press, better color matching etc."

Basically that. Whenever you wonder why something "odd" gets a foothold, look for the money trail.

One thing to note is that there was a couple of Amiga variants that lived on in broadcast media, as it was very capable of doing video work.

BTW, the BYOD kinda happened back in the day as well. There is a claim that accountants brought their personal AppleII to work so they didn't have to fight for mainframe time.

Edit: oh, and i wonder how much the dock connector had to say for the long term uptake of iPhone in the corporate world. Never mind that Apple was quick to offer a WSUS like service to handle app rollouts.

<comment><USER12> The old saw goes VisiCalc sold more Apples than Apples sold VisiCalc. Of course then Lotus 1-2-3 came on to the market and even MultiCalc struggled to compete with that.

</comment></comment></comment></comment><comment><USER13> My favourite computers of all time were my A500 and A1200. I learned the most about how a computer works and how to program it. I learned how to create and control sound and graphics and how these are represented inside the machine. I made my own games in a mix of high-level languages ( Amos! ) and 68000 assembly. I made 3D animations assembled frame by frame onto a VHS tape deck. I even used the Amiga to VJ at clubs and student parties.

Really loved those machines.

</comment><comment><USER14> The Deathbed Vigil: The Last Day At Commodore [https://youtu.be/jvJjFYHGTnU](https://youtu.be/jvJjFYHGTnU)

</comment><comment><USER7> I just realized that the Amiga story is exactly what would have happened to Apple in an alternative timeline where the company had filed for bankruptcy without Jobs. Or the other way around, if they had succeeded we all may be wearing Amiga Watches on our wrists right now.

It's very interesting to see how good/bad managerial decisions or tiny details can totally sink an advanced technology and change the course of the future. Can we imagine a present with a current technology without the advances that, for example, Apple has brought? Maybe we'll all be still using Nokia phones or Palm PDAs.

</comment><comment><USER15> The Sharp X68000 was more successful and powerful than any other machine in the "68000 wars." It came a few years later, but outsold both Atari and Amiga (the number I heard was 15 million units sold). However it sold only in Japan, and really only for games -- despite having higher spec'd multimedia and even having video input that could have made a "video toaster" type app like the Amiga possible. Just shows you how massive the Japanese gaming market was in the 80s/early 90s that that niche machine sold only there could outsell them.

</comment><comment><USER16> My favorite 68k machine is the 3b1. It had a windowing system with mouse, but never any apps that would be interesting for the desktop user. Funny that Apple switched to UNIX fifteen years later. If they had started with it, instead of that stupid system where half the OS was in ROM, it would have been so far ahead.

</comment><comment><USER17> I had an Amiga for a while. You couldn't hook up standard keyboards and monitors to it, everything was just different enough to be incompatible. It didn't bode well for Amiga's future.

<comment><USER18> A "standard" keyboard here means "a keyboard made for IBM PC AT clones". When you put everything in context (and consider the Amiga predates the first 386-based PCs by a couple years), it made no sense for the Amiga to have a PC keyboard connector any more than it would make sense for an Apple II to have one.

<comment><USER19> The monitor issue is/was more serious, though not really an issue early on. The problem there was that the Amiga graphics modes would not work with many cheaper PC monitors, so we had to spend extra on expensive multisync monitors or Commodore branded monitors. And unlike the keyboard, that was something people wanted to upgrade.

<comment><USER15> Yep same nonsense on the Atari. Computer vendors back then really did frustrating things around peripherals. It was bad enough they were so expensive, but external disks, monitors, mice, RAM everything was proprietary, which made it worse. Eventually things settled on SCSI, then IDE, but there were many years there where it was wild west on standards for all of the above.

I just bought an Atari TT off eBay. It will nicely drive a VGA monitor, but not for its highest resolution (1280x960), for which it needs a special ("ECL") monitor. An adapter from that to VGA is $175 from a hobbyist -- almost as much as I paid for the computer.</comment></comment></comment></comment>


Do 1x Programmers keep 10x Programmers down?  - <AUTHOR> http://blog.mathgladiator.com/2011/03/do-1x-programmers-keep-10x-programmers.html

<comment><USER2> i tried to post this comment on your post on religion:

i get where you're coming from, but you've convinced yourself you're smarter than others and that makes you less happy, probably because other people (rightfully) view you as a dick... if i were you i'd consider giving some thought to big issues of international coordination our governments face, things like what if someone such as yourself were in control of a big red button to drop a nuclear weapon</comment>


175 rejections while fundraising and we were considered successful - <AUTHOR> https://unsupervisedmethods.com/175-rejections-while-fundraising-and-we-were-considered-successful-85eebe97fd65#dsgh42r <comment><USER2> You submitted this _three times_ in a seven hour span.</comment>


Be lucky - it's an easy skill to learn (2003) - <AUTHOR> http://www.telegraph.co.uk/technology/3304496/Be-lucky-its-an-easy-skill-to-learn.html

<comment><USER2> So boiled down to its fundamentals, lucky people are really those who open more doors to opportunities, notice the opportunities, and then take advantage of the opportunities. By increasing the possibilities, the probability rises that you will find good opportunities. To increase your ability to recognize opportunities rather than doubt and ignore them, you must be willing to fail many times in order to succeed the really good times. This is where the optimism and self-confidence come into play.

We see this same philosophy preached in other threads here with regard to successful businesses.

</comment><comment><USER3> Reminded me of the quote by Seneca: "Luck is what happens when preparation meets opportunity"

</comment><comment><USER4> You should add a "2003" to the title - I was wondering why it looked familiar.

<http://news.ycombinator.com/item?id=878039>

<comment><USER5> Strange that the HN duplicate-checker missed this one. The urls look the same to me.

otoh, I found it an interesting read and missed it the first time around so I'm glad it made it to the front page today.

<comment><USER6> The duplicate checker only checks for duplicates in the last x months (3 IIRC). I believe that this is deliberately so that "oldie but goody" posts can be reposted.

</comment></comment></comment><comment><USER7> "Chance favours the prepared mind." (Can't remember who said it, but it is the crux of this article in many ways.)

<comment><USER8> "Dans les champs de l'observation le hasard ne favorise que les esprits préparés." \- Pasteur

(Various versions of this are available in English at <http://en.wikiquote.org/wiki/Louis_Pasteur> )

<comment><USER9> My best literal-ish interpretation "In the fields of observation (testing?) chance favors only the prepared spirits." It's interesting to me the explicit "only" construction, as opposed to the implied version in the typical English versions.

<comment><USER10> I'm not a native English speaker, but isn't "minds" more appropriate than "spirits"?

<comment><USER9> I'm not a native French speaker. It's quite possible that minds would be better here. I don't really know; I think the distinction can frequently be subtle, at least in my conception of the two. Depending on the situation, I might consider either to be a strict subset of the other, which means I'm sometimes equivocating.

</comment></comment></comment></comment></comment><comment><USER11> Luck is essentially a common interpretation of the stochastic nature of the world. I agree with the author of the article in that people could increase their luck by exposing themselves to random events. I disagree that counting all pictures rather than stopping when the note is found implies a "lucky" personality-- that is more like a rational/logical personality. Luck would be that in fact, the number of pictures was different than the number in the note, and the person's curiosity helped them discover this fact by continuing to count regardless of having seen the note.

I tried to describe this in one of my blog posts, but I am still missing the second part, if interested, take a look at: <http://bit.ly/b0SjZq>

<comment><USER12> I don't think the author was implying that stopping when the note is found implies a "lucky" personality. I think Dr. Wiseman was looking for personality traits that are common amongst "unlucky" people. The newspaper test demonstrated that unlucky people are more tense and anxious than normal, and this could explain why they may not spot new opportunities.

<comment><USER11> I agree. But does this actually follow the definition of lucky? A person could deem herself lucky without that actually being the case-- it might just be that she has personality traits that make her successful. Luck, by definition is not dependent of one's actions. I guess the article is saying that we can make ourselves feel lucky by working on certain personality traits-- but does that make us actually lucky? I am just being philosophical here.

</comment></comment></comment><comment><USER13> "unlucky people miss chance opportunities because they are too focused on looking for something else."

Or, those who are too focused looking for something else generally consider themselves to be unlucky.

Self-reporting on if you are "lucky" or not is a reflection on the positiveness, motivation and optimism of the person. Not if you are actually "lucky" or not.

This study for me draws conclusions about people's outlook on their lives and how it effects their ability to concentrate on given tasks. Involving 'luck' in this is just for the headlines.

<comment><USER14> Self reporting that you are lucky is probably positively correlated with optimism.

Optimism has a whole host of benefits that probably account for the "luck" that these individuals are enjoying.

<comment><USER15> I would hope so -- lucky is a magic property. Luck itself may be chance, but lucky is nonsense.

</comment></comment></comment><comment><USER16> The description of the unlucky person sounds more like me than the the lucky description. I try to avoid using intuition as much as possible and I always make the rational choice as best as I can judge it. Yet, I feel neither lucky nor unlucky.

Partly, of course, that's because I don't believe in a person being "lucky". And, to the extent that concept is meaningful, I've always believed in "making your own luck", which I seem to do just fine.

You don't need to be a superstitious person to gain all the benefits of "luck".

</comment><comment><USER17> Take the poll. <http://news.ycombinator.com/item?id=1129321>

I think it'd be interesting to see whether HNers consider themselves lucky or unlucky overall. I have a guess, but don't want to reveal it for fear of prejudicing the answers.

</comment><comment><USER18> I like the end of the article where the author offer _three easy techniques that can help to maximize good fortune_ which can be boiled down to:

1\. Trust your intuition 2\. Seek variety to invite chance and new opportunities 3\. Look to the positive side of your situation

</comment><comment><USER19> I don't see a case they describe where luck as a factor has been isolated.

<comment><USER15> Luck doesn't exist. It is essentially a magic enchantment that provides its recipient with an ability to gain a positive outcome of chance events at a frequency above those provided by normal probability. Sure, there are some people who will 'beat the odds' on a regular basis, probability provides for this, however more people report being lucky than the probability suggests as well. Further, luck has a social connotation roughly equivelent to fortunate, but when the term lucky is used there is a nod to vague supernatural forces controlling outcomes, a la the Fates.

As such luck really cannot be isolated as a factor. Instead tho, people who claim to be lucky can easily be isolated. They can be studied for what makes them "lucky". In this case it seems to be at least somewhat correlated with openness to unexpected outcomes.

<comment><USER20> I'm not sure I quite agree with that. As I see it, the term "luck" is regularly applied to two categories of events. As you've said, there are the chance events (such as winning the lottery or rolling a 6 on a die), and in that I quite agree with you.

The other case, which is what I thought the article was about, is more of an "opportunity" type of luck. For example, if you happened to find a £10 note while walking home. That would be called "lucky" but it is not simply the result of chance: it is the result of you being more observant than everyone who didn't notice the money before you. And in that sense, people can easily be "luckier" than others, as the article describes.

<comment><USER15> Good point. In fact, I suspect we are saying the same thing, but lack some common language/terminology.

</comment></comment></comment></comment><comment><USER21> You don't have to learn to be lucky; billions of years of evolution have bred lucky right into you.

<comment><USER22> Teela Brown? So lucky that she got to go see and save the Ringworld as her first and last mission.

<comment><USER23> Actually 'unlucky' if I remember correctly.

The 'lucky' ones were unreachable.

Didn't Teela end up as the protector?

<comment><USER24> Based on the first book, lucky is probably right. She needed the experience of danger in order to broaden her horizons and to grow as a person.

Clearly, I haven't read enough of the series to comment on the last statement .... and they could easily alter the perception of the events in the first book.

</comment></comment></comment></comment><comment><USER25> Lucky beats smart!

<comment><USER26> Amen!

</comment></comment><comment><USER27> "Luck favours the prepared." Edna Mode - The Incredibles - 2004</comment>


Ask HN: What you use for task scheduling in Python + Flask? - <AUTHOR>

Celery seems too heavy for doing causal scheduling like calling APIs every hour and doing some database based calculation.
How promising "Advanced Python Scheduler" is, have you used it?
Are there any good libraries available for Python + Flask? <comment><USER2> Redis Queue: [http://python-rq.org](http://python-rq.org) [https://github.com/mattupstate/flask- rq](https://github.com/mattupstate/flask-rq)

<comment><AUTHOR> I already have PostgreSQL, so having Redis would be additional pain. But, thanks, will check it out.

</comment></comment><comment><USER3> There's a pythonic scheduler here - [https://github.com/dbader/schedule](https://github.com/dbader/schedule)

you could also use cron

</comment><comment><USER4> \- cron

\- Orto (cronjob editor)

\- oddjob

\- SOS Jobscheduler</comment>


Show HN: Election Lie Graph - <AUTHOR> http://liegraph.com/

<comment><USER2> What does "weighted lies" mean? What is the weighting? The bottom graph splits close to 50-50.

<comment><AUTHOR> I explain the weighting in the right-side. Each lie is on a scale of 1-5, based upon the source, where "true" is a 3. So, a weighted lie means that a 5 is worth more than a 4. Whereas, an unweighted lie means that a 4 and a 5 are the same.</comment></comment>


Winamp's woes: how the greatest MP3 player undid itself - <AUTHOR> http://arstechnica.com/business/2012/06/winamp-how-greatest-mp3-player-undid-itself/ <comment><USER2> Back in the day I used WinAMP (and X11amp) as a simple front end to my web- based Linux jukebox server that I had ripped all of my CDs on to. Those were the days of AudioGalaxy and Red Hat 6 and WindowMaker. It was a marvelous time, for a couple of years anyway.

Then WinAMP 3.0 happened, and it was buggy garbage.

Then I discovered what iTunes could do for me as far as organizing my music. It put WinAMP 3.0 in a new light, and I decided to give it another shot. Nope, still garbage. Then I tried the newly-released WMP 9. That was garbage too.

So I retired my Linux Jukebox and migrated to iTunes. Then I got an iPod. Then I got a PowerBook. Later I threw out my beige boxes, learned Cocoa and iOS development, and now that's what I do for a living.

So if WinAMP 3.0 wasn't such a mess then I might still be a Windows developer. Thanks, WinAMP, for inadvertently putting me on a new path.

<comment><USER3> You're not the only one.

I moved to iTunes from WinAmp when I got tired of meticulously organizing my mp3s into folders. That was the feature that sold me on Windows iTunes.

Then came iPods, MacBook Pros, iPhones, iPads and now maybe $10k+ later I'm hook line and sinker into the Mac Eco system.

<comment><USER4> Unfortunately, WinAmp so indoctrinated me into manually managing my mp3 folders that even after I switched to iTunes, it was still years until I finally let it manage the library structure for me.

<comment><USER5> You're not the only one.

I finally gave in and let iTunes start managing my files for me about 2 years ago - it's one of the best computing decisions I've ever made.

If you're still manually managing your music files' folder structure, I strongly encourage you to let iTunes start doing it. What you lose in fine- grained control (I never liked 'Artist/Album/songs' subfolders, I preferred a big list of 'Artist - Album/songs' folders) you make up in a much better listening experience.

</comment></comment></comment></comment><comment><USER6> > _"There's no reason that Winamp couldn't be in the position that iTunes is > in today if not for a few layers of mismanagement by AOL that started > immediately upon acquisition," Rob Lord"_

Then why did you sell it for <$100MM?

This is nothing against the software. In fact, I _still_ use WinAMP on my PCs (no lie).

But it annoys me when people pile on about what happens to their companies after they are acquired. If the legacy of your company is important to you (and no one says it has to be) why are you selling out? AOL isn't to blame for WinAMP going down hill, Nullsoft is for _selling_ to them.

I'd have taken the money too, but I wouldn't sit around and say "Look what they did to my company!" We seem to get that a lot around here. Big Tech Corp always takes the blame, never the entrepreneur. Well, big companies ruining acquisitions is practically a meme...what did you expect?

<comment><USER7> Did Winamp ever have a built-in music store? I was under the impression that people basically stopped caring about Winamp mostly because the newer versions of Windows Media Player (7 and up) were "good enough" that mainstream users didn't see any need to go hunting down an alternative player.

Nobody really likes iTunes as a player, it's only notable because of the store and the device lock-in.

<comment><USER8> I like it.

<comment><USER9> Well, few do then.

To be honest, iTunes a kind of bloated, it is a memory hog and it could be easier to use. But they have the store and the connection with the i-devices and are shipped with the macintoshes, and I believe that is their greatest feature.

<comment><USER8> I don't use the store (except a few promotional tracks I downloaded for free) and I don't own an iDevice (though I used to). I use iTunes _because it's easy to use_ and offers features that make listening to music more enjoyable (smart playlists, etc).

</comment></comment></comment></comment></comment><comment><USER10> Sometimes I think I'm the only person who never liked Winamp. I always found it awful. Why do I need fancy skins for a media player?

I found Foobar2000 and never looked back. I know you can customize the hell out of Foobar...but I personally loved the default "giant list of searchable songs" format.

<comment><USER11> Winamp had tons of skins, but I only ever used two. One was the default, the other looked like an old wooden jukebox.

But that wasn't the reason to use Winamp. I started using it when it was basically the only game in town, but for a long time there was no reason to switch. Winamp had a few things going for it:

1\. It was amazingly small, and consequently it was terrifically fast. The tiny window also gave you all the information and controls you needed, hogging preciously little of your 800x600 or 1024x768 display.

2\. I could use it efficiently. My favorite feature (which I still miss sometimes) was you could bring up a box and start typing a song name and jump straight to playing it. I think it was the J key. When you got in your mind "Hey, I'd like to hear X", you could do it in a second or two.

3\. The ecosystem was huge. There were thousands of skins (most terrible, some looked pretty amazing) and tons of plugins. People made visualizers, ways to control the software with external interfaces, all sorts of neat stuff.

It still amazes me how small Winamp was. I didn't like Winamp 3. I tried it for a while but it felt bloated and the jump feature was gone. Despite the near universal unhappiness, the developers defended version 3, making them seem out of touch. After a while I downloaded the previous release again (2.95?) and used it for years. I eventually moved to iTunes shortly before I got an iPod.

The last I heard about Winamp was a few years ago when Winamp 5 came out. My reaction then was amazement that it was still around. I'm amazed it's still around now.

<comment><USER12> No substitute, but in iTunes on OS X, cmd+option+F with the song/artist/album you are looking for, and then, [Tab][Space] accomplishes the "Select a song / album / play list and the PLay" - it takes about a second as well (particularly as the [tab][space] gets ingrained in your finger DNA.)

With all that said - iTunes has grown into a bloated beast that I hope Apple gets around to fixing ASAP.

PS: If anybody knows how to remap something other than the awkward cmd+option F to "Search Music" - and for mega-bonus points, do so globally, I would be forever be in your debt - unfortunately "Search Music" doesn't appear to be one of Spark's (<http://www.shadowlab.org/Software/spark.php>) actions.

<comment><USER13> You will want to do something like:

        defaults write com.apple.iTunes NSUserKeyEquivalents -dict-add "Target Search Field" "@F"

(more info at [http://lifehacker.com/5822633/add-a-search-keyboard- shortcut...](http://lifehacker.com/5822633/add-a-search-keyboard-shortcut-to- itunes) and/or [http://www.mactipper.com/2008/02/add-keyboard-shortcuts- from...](http://www.mactipper.com/2008/02/add-keyboard-shortcuts-from- command.html) and/or <http://www.google.com/search?q=NSUserKeyEquivalents>)

And aside: I do not find command-option-F that bad. I move my left thumb or middle finger to the left command, left ring finger to the left option key and press F with my left index finger.

<comment><USER13> Did I write only half that line, or did it get silently chopped of? Here is another attempt:

        defaults write com.apple.iTunes NSUserKeyEquivalents \
            -dict-add "Target Search Field" "@F"

</comment></comment></comment></comment></comment><comment><USER14> I will always remember Winamp as providing one of the 'wow' moments in my tech life - the first time I downloaded an MP3 from a BBS and played it (only 4MB a song!)

Also remembered for one of the greatest release slogans after the mess with the later versions:

> "ALMOST AS NEW AS WINAMP 2 Nullsoft Winamp3" [1]

[1] Archive version: <http://web.archive.org/web/20030920142516/http://winamp.com/>

</comment><comment><USER15> The greatest thing I remember from winamp was the visualisation plugin. It was a high performance graphics processor really. You could draw a couple of lines oscilloscope-style (plot based on volume in each band), throw in some blur, surface transformation, etc. and you could get amazing 3d-looking "textured" models moving around. It was an amazing framework for playing around with generated graphics. There were some great authors too who could make really nice visualisations effortlessly (or at least it looked like that) - I saw a "rendered" insides of menger sponge done in just a couple of lines of Dynamic Distance Modifier layer. Mind-blowing experience trying to figure out how it worked (like watching demo scene stuff).

I remember actually that once AVS got keyboard control, we tried to use it for a presentation in maths class. That's right - a music visualiser was easier to use for some high-school guys than other frameworks to do a 3d graphics presentation!

</comment><comment><USER16> The original, lean Winamp was a fabulous piece of software--I can't think of many other products I've used that made me so happy, or seemed so much like magic. I still remember feeling awed by the idea that your computer could play, and Winamp was the face of the revolution, managing somehow to seem both nerdy and hip.

I stopped using Winamp a bit after the acquisition, so I really enjoyed the article - it filled in a lot of gaps for me. I guess now I know why it started sucking, eventually. Thanks to Frankel and the rest of the team for their hard work - what a cool time and place to be alive.

</comment><comment><USER17> The most often overlooked, but technically best, music player of the late 90's was Kojofol. It's a shame it was never released as open source, but I'm fairly sure it couldn't be. The author had no license for the patented audio compression codecs it used, and it even contained an mostly unknown variant called "Astrid AAC". It's the last bit that has always had me fascinated, and no, it's not AAC as you know it. It was actually a variant of the VQF format with some MPEG-ish bits thrown in there for fun. It always sounded just gorgeous compared to other codecs at equivalent bit rates/sizes.

I have a copy of Kojofol around here somewhere along with some old "Astrid AAC" formatted files. I've always thought about reverse engineering it, but there's really no point when you'd just end up in a lawsuit.

<comment><USER18> Looks kinda like Audion for Mac:

<https://panic.com/audion/>

(at least in terms of skinning).

Also, looks like Winamp hired the K-Jofol team and released a skin aping it:

<http://www.winamp.com/skin/k-jofol-v5/142308>

</comment></comment><comment><USER19> "the company insisted on using its own indigenous billing system"

This is something I have a hard time understanding. Why do companies always seem to insist that everything in their operations is within their full framework? I mean, sure efficiency on paper (and only on paper as we see in this case), and probably a certain kind of clarity to the organization, but still. The right way to do this would be to have the support functions, such as billing be services that business units use if they think they are beneficial, and otherwise not. It would force support functions to be efficient in a whole different way, market driven, rather than "make executive happy"-driven.

<comment><USER20> > _This is something I have a hard time understanding. Why do companies always > seem to insist that everything in their operations is within their full > framework?_

There might be actual reasons of efficiency and using synergies and if you ever have to comply with regulations, you have one central unit to work on. But I think usually these decisions stem from either a positive will of organizing - because if you have two billing units or systems, things might get out of hand or control and having one just seems more neat and organized and people fear that chaos. Or they stem from nothing but cold, cut-neck, selfish political reasons. Evil-business-guy doesn't want another fish handling money in his pond because just imagine if that little fish turns out to be bigger than evil-business-guy's own billing system? On top of that, even smart-business-guy VERY likely gets a bonus on how much his billing system billed and how well it performed... you think he will let that bonus slip just because it MIGHT be the right thing for winamp? And as a unit helping to bring in the cash, billing typically has a lot of natural influence.

And of course we have a lot of 20/20 hindsight in this case.

This is a typical example of how difficult it can be to set really good, beneficial goals in an organization and how many natural conflicting interests there can be - and all that in a humongous giant like aol on top of that.

<comment><USER19> I understand that this "positive will of organizing" is related to legibility in the sense of James C. Scott (see e.g [http://www.ribbonfarm.com/2010/07/26/a-big-little-idea- calle...](http://www.ribbonfarm.com/2010/07/26/a-big-little-idea-called- legibility/)). But this failure mode is so common, that one would think that it would be in mergers and acquisitions textbooks already!

As you say incentives may play a role as well, but I think it is very common that large organisations never actually consider the option of not organizing something, in this case, letting Nullsoft do their billing whatever way they wanted at first, and integrating it later once it is stable enough to allow a complex development project.

To lead an organisation, one has to know what is happening in it - This has a complexity cost, which should be explicitly managed. New acquisitions would need to be treated differently, and full assimilations into the acquirer may not be a good result at all.

<comment><USER20> > _To lead an organisation, one has to know what is happening in it_

I agree with you but reality shows us different a thousand times over and still these companies exist... even AOL is still around.

</comment></comment></comment></comment><comment><USER21> Here's an interview/behind-the-scenes piece that Rolling Stone did with the creators of WinAmp in 2004 [https://docs.google.com/document/d/1Ou8YIbH0j_3qSpepPy1VruHe...](https://docs.google.com/document/d/1Ou8YIbH0j_3qSpepPy1VruHeyliYWI2zvjbZk_pn8W8/edit) I thought it was funny how the Rolling Stone author comes across as a drooling fanboy :)

</comment><comment><USER22> I must have missed something huge because I've been using Winamp for as long as I can remember and never ever seen a need to change. I don't see what's been undone. Missed opportunities to expand and become some big evil money scraper, sure, but what I see today is still a product that does what its supposed to do, and that's that.

What's the problem here?

<comment><USER23> > _What's the problem here?_

The tiny US userbase means most people disagree with you. That's the problem.

</comment></comment><comment><USER24> Winamp is a great start up success story that's for sure. Homegrown, self taught developer learns Windows programming just because he wants to play mp3 files. Amazing success follows. Three cheers to Justin for that.

</comment><comment><USER25> All I can say is winamp is open on my computer playing my music as I write this. Are there really other players out there that do a better job? Seems like a lot of people use iTunes but I've always found it to be a very slow media player. But maybe things have changed I need to reevaluate the current offerings?

<comment><USER26> I find Quod Libet to be my tool of choice, now. The query language is a bit ridiculous, but Mutagen is great for cleaning up crappy tags from my mp3 purchases. Despite being a PyGTK app, it has been fairly responsive and snappy despite my ridiculous media-hoarding habits.

<http://code.google.com/p/quodlibet/>

</comment></comment><comment><USER27> What ever happened to Sonique?

<comment><USER28> For years it was the only player that could also handle digital tracker (.mod, .s3m, .xm, .it, etc.) files more or less correctly. In those days, downloading a 100k .mod file over my dial-up or a 5MB mp3 was a big deal and being able to find lots of cheap music that was also light on the bandwidth was invaluable.

I _loved_ Sonique.

<comment><USER29> In addition to trackers, didn't Sonique sound better than Winamp?

In my very hazy memory, Winamp used less memory, but Sonique sounded a lot better.

<comment><USER30> _In addition to trackers, didn't Sonique sound better than Winamp?_

Same thing with XMPlay [0]. Much better sound (me thinks).

[0] <http://www.un4seen.com/xmplay.html>

</comment></comment></comment></comment><comment><USER31> One word, AOL.

There are many more in this startup's cemetery, see:

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

Let alone the total acquisitions value which is grater than AOL current valuation in order of magnitude.

</comment><comment><USER32> Not mentioned, Dimitry Bolyrev, author of MacAMP and one-time roommate of Justin Frankel, who got cut out of the deal by Frankel's lawyer-scum father.

</comment><comment><USER33> First time I launched visualizations via Winamp in my dorm room was a very happy moment. Some serious app nostalgia there. And, Wesley Willis:

<http://www.youtube.com/watch?v=JntDcqOxMsM>

<comment><USER34> +1 for Wesley and his personal zoomorphic hellscape.

</comment></comment><comment><USER35> Back around 2000 I took an old full-tower PC I had laying around and built a MP3 jukebox for my 1993 Volkswagen Fox. It ran Winamp with a plugin for a X10 Mouse Remote. I had a power inverter in the glove box and a fancy new stereo that had a 1/8" jack on the front. With a few bungee cords I secured the tower in the truck and the PC would boot every-time the car started. I skipped school for two days to build it. Without Winamp, I probably wouldn't have been able to do it. Kind of crazy that I can now hop in my car and play pretty much whatever I want using my iPhone & Bluetooth.

</comment><comment><USER36> Is there any other music player with a media library organizer as excellent as Winamp's? I don't mean that contentiously, but rather I just haven't enjoyed any other. Enter text into the search box, and it will filter simply massive playlists as you type. The instant feedback is great in filtering, especially if I forgot what an album was called but knew some other esoteric detail.

But I don't use it as a Swiss-Army chainsaw anymore. I just use it for listening to music in Windows. It's pretty good at that. (And version 5 isn't that bad - it's just version 2 plus 3 after all!)

<comment><USER37> As other people have pointed out here, foobar2000 pretty much embodies the feel people had about Winamp in 2000. Though there's some large philosophical differences, like the total lack of skinning, and a much better API.

<comment><USER38> well, when on linux I use: mplayer

mplayer /path/to/folder/*

can't beat that for simplicity

</comment></comment></comment><comment><USER39> That was a shame. I'm still using Winamp 2.81 (from 2002, 10 years ago). As long as it continues to work on Windows, I'll never let it go. Never could get used to the later versions.

<comment><USER40> I'm using v5.623. With the lite install and classic skin, there's almost no difference (for my use cases).

<comment><USER41> Same here. I don't think there's any difference for _any_ use case, it's pretty much the same player. I do remove all the bloatware, though.

<comment><USER42> Yeah, same here. Used it everyday from the late 90s until I moved to Spotify (and then not at all when I moved to Macs last year).

The classic player was/is such a wonderfully designed piece of software. Just minimise it and stick it to the top of the screen. Uncomplicated, unobtrusive.

</comment></comment></comment></comment><comment><USER43> Winamp 3, as an application, got it all right. Software developers even today struggle to get applications to be so usable.

      Dead simple interface
      Super fast start up
      Super fast search
      Easy playlist creation and management
      Simple keyboard shortcuts
      Simple configuration
      Huge library of plugins
      Zero distractions
      Stable

I still miss winamp. To this day there hasn't been another media player that just got completely out of my way and let me listen to music.

<comment><USER44> It sounds like you are describing Winamp 2. As I recall (and the article seems to confirm) Winamp 3 added no useful features while killing stability and speed. I do remember liking winamp 5 (there was no 4) though.

<comment><USER45> > As I recall (and the article seems to confirm) Winamp 3 added no useful > features while killing stability and speed.

Aye. It added deeper skinning support, but was slow, crash-prone and incompatible with everything built for winamp 2.

Winamp 5 was built on the Winamp 2 codebase with some Winamp 3 techs in (such as "modern skins")

</comment></comment></comment><comment><USER46> I actually wrote an article about WinAMP and where it's failing a little while back: [http://s00techified.wordpress.com/2011/07/05/soo-what- happen...](http://s00techified.wordpress.com/2011/07/05/soo-what-happened-to- winamp/)

WinAMP like so many projects ultimately needs a steroid shot. It was never supposed to be an iTunes. But it was supposed to be the go-to player for Windows Users. It's a shame it's just stifled. AOL should open source it.

</comment><comment><USER47> The problem is most of us think Winamp doesn't even exist anymore.

Couple of days back, a close relative of mine bought a used laptop from his friend. I and my cousin generally do technical stuff like OS installation for most of my family members. While browsing through the installed software we noticed Winamp, And we were like 'Does Winamp even exist anymore'!!! And it just came out spontaneously out of our mouths.

Winamp isn't in trouble, it is just not relevant anymore.

</comment><comment><USER48> Weirdly, I used Winamp from '97 all the way through 2008. I don't remember whether it was v2 or v3 but I was happy with it and never tried anything else. I used VLC only for videos, and switched to MPC(-HomeCinema) later. I heard inklings about the iTunes revolution in the US but I had no iPod nor any need to use iTunes. It was only when I switched to a new desktop PC that I decided to try another music player for fun, which was foobar2000. I like fb2k, but still don't find it as subjectively nice as Winamp was - perhaps because of the default look. (I only use fb2k now, though.)

"The llama's ass" will always remain with me, as a vivid and irreverent memento of the first surging waves of the mass Internet crashing upon the shore of my community. Downloading and swapping MP3s in the early days, from websites and via IRC, before AudioGalaxy and Napster...those were exciting times. Thank you for the memories, Winamp.

</comment><comment><USER28> For a while AOL support winamp pretty well. I remember watching hundreds of hours of streaming TV (and streaming radio) over Shoutcast and in2tv when AOL was trying to become a media company.

Now that all seems to be dead...fortunately some of it live on...VLC supports shoutcast TV and there are still dozens of stations still broadcasting.

</comment><comment><USER49> Maybe it's just me, but every other quote in that article has been changed with square brackets.

      every [company] I thought was doing interesting things.

      I was being helpful by [looking at] product features [on a] business level

On and on...I've never seen so much of that _ever_ before.

<comment><USER50> What browser/user-agent are you using? They might be doing something wacky with non en-US traffic.

</comment></comment><comment><USER51> This article brought back some great memories for me.

As a result of reading this, I also looked around for more history on Winamp and enjoyed the post on oldversion [1] that walks through the build history all the way from the DOS version, and a trip to the waybacktime machine [2] to learn about the Fraunhofer winplay3, the only real predecessor to Winamp (packaged with pirated material as a player in the 90's) and now something Fraunhofer wants to deny existed.

[1] <http://www.oldversion.com/blog/the-history-of-winamp/>

[2] [http://web.archive.org/web/20080619002511/www.sonicspot.com/...](http://web.archive.org/web/20080619002511/www.sonicspot.com/winplay/winplay.html)

</comment><comment><USER52> Interesting to compare this to the tales of AOL's mismanagement in this comment thread: <http://news.ycombinator.com/item?id=4120136>

</comment><comment><USER53> Used to love winamp, it was the only think used to play media. Until it got so bloated. Imagine it had a simple, clean interface and loaded lightning fast. I would never use anything else.

</comment><comment><USER54> VLC happened?

<comment><USER55> Do people use VLC as their main music player? I've always found its organization pretty primitive.

</comment></comment><comment><USER56> Winamp... now THAT reminds me of the 1990s.

<comment><USER6> Not for me!

Still using it daily. People laugh every time they see it. But it does what I want, it's lightweight, and has some great commercial plugins.

<comment><USER57> What are they using? Besides iTunes.

<comment><USER58> Most people that I know use foobar2000.

<comment><USER59> Yeap, foobar2000 is basically the "standard" now.

</comment></comment></comment></comment></comment><comment><USER60> To me Winamp was always more of an accessory to Napster than anything else. Don't get me wrong, it was a solid program -- but it was really not much more of a utility through my eyes. On the other hand Napster really stands out in my mind as something revolutionary (ethics aside).

<comment><USER61> That's how you should view all software, frankly. As a utility to get the job done.

</comment></comment><comment><USER62> I still use Winamp 2.97. Anything beyond that I wouldn't really classify as good software. I _think_ Justin Frankel was learning C++ at the time and tried to bite off a bit more than he could chew. This was just what I read off their own tech forums and in IRC.

</comment><comment><USER63> Ah, winamp 2.2-something nostalgia. What a lovely brilliant little player it was. Reminds me of my other favorite player when I switched platform.

The story of Audion:

<http://www.panic.com/extras/audionstory/>

</comment><comment><USER64> Winamp 3 was the only thing I missed about windows. The visualizer plugins and skins still pass anything available now. Had no idea there was a mac version, so I tried downloading it. Mac version plays mp3, no radio, visualizers, or plugins.

<comment><USER41> Do you mean that interstitial version that used XML and had a whole new interface and everything?

<comment><USER65> IIRC, the Nullsoft team admitted they rushed out that release because they really wanted a version that had "mp3" in the name.

Also, that interface was called Wasabi.

</comment></comment></comment><comment><USER66> Nice read to make you remember the good 'ole days of MP3 ripping when it actually took some work. I'm not sure if Winamp could have ever reach iTunes level but it was a major piece of software in the 90s. Nostalgia!

</comment><comment><USER67> Winamp was great back in the day, suffered with iTunes for a while and now have deleted all my mp3s and living solely with a Spotify premium account. But I loved those skins on winamp!

</comment><comment><USER68> Still using Winamp lite to this day, and I also greatly enjoyed the creator's other great product: Reaper. Nostalgia for simpler times.

</comment><comment><USER69> Sucking the life out of companies, products, and people is AOL's function in life. And it's damn good at it.

</comment><comment><USER70> Anyone using the OS X version? All I need is playlists and start/stop using the special keyboard keys.

<comment><USER71> iTunes does all those things. :)

<comment><USER70> All those things and much more that I don't need/care. Too much bloat.

<comment><USER72> You might be interested in "Enqueue", it's another player for mac.

<comment><USER73> Or Cog, which handles FLAC just fine.

</comment></comment></comment></comment></comment><comment> apa-sl I'm still using winamp - love it's easily searchable music library and android integration!

</comment><comment><USER74> I do miss my Star Trek theme. I've never been able to find a replacement for iTunes.

</comment><comment><USER75> Winamp is the only media player I have found adequate so far because of the Nullsoft Signal Processing Studio.

</comment><comment><USER76> XMMS.

</comment><comment><USER77> I still haven't found a solution better than winamp with advanced crossfading output (which was last updated in 2002) to DJ a party... I usually bust out my 5-year old PC because nothing beats the crossfader of winamp (coupled with the awesome keyboard shortcuts - the ability to search for anything in the ID3 tags and enqueue the song via keyboard is so useful for a DJ)

Anyone have a better solution?

Amazing reading here how many people still use the old versions of winamp... It's pretty much the only thing I use my PC's for.

</comment><comment><USER78> I still use Winamp (with an old-skool theme).

There's no better mp3 player for Windows.

It's light, has just the right amount of interface, no media library bull crap (doesn't force you to use one, anyways).

</comment><comment><USER79> I still use winamp 2.9. It is minimal and it still plays mp3s. I don't need it for anything else.

</comment><comment><USER80> Winamp was always a piece of crap.

</comment><comment><USER81> One day WinAMP (nullsoft) was bought by AOL. Anyone remembers? That's when WinAMP started being worse.

And that's about what the article says.</comment>


Making Docker and Consul Get Along - <AUTHOR> https://medium.com/@otterley/making-docker-and-consul-get-along-5fceda1d52b9 <comment><USER2> Nice writeup of the prickly network bits related to Consul and docker.</comment>


Turning the IDE Inside Out with Datalog - <AUTHOR> https://petevilter.me/post/datalog-typechecking/ <comment><USER2> Jetbrain IDEs (e.g. IntelliJ) have structural search which is basically a query language for code: [https://www.jetbrains.com/help/idea/structural- search-and-re...](https://www.jetbrains.com/help/idea/structural-search-and- replace.html#to_search_structurally)

I know there's more to just queriability in the post, but I thought this should've been mentioned when discussing what existing IDEs can offer.

<comment><USER3> we're not far from coccinelle-ing the codebase

</comment></comment><comment><USER4> Niko Matsakis had an insightful observation about this approach in a similar post (which is referenced by OP):

[http://smallcultfollowing.com/babysteps/blog/2017/01/26/lowe...](http://smallcultfollowing.com/babysteps/blog/2017/01/26/lowering- rust-traits-to-logic/)

The key observation to me was that the traditional Datalog/Prolog way of unifying is through syntactic equality, which is a bit too simple to express the kind of equality needed in Rust and elsewhere. You can express it in Datalog, but as it gets farther away from the source, error-generation suffers.

<comment><USER5> "Insightful observation" doesn't quite do it justice ;) There's a whole discipline in discrete math dealing with the possibilities and limitations of equational theories and reasoning. And it could be said their limitations gave rise to the various constraint formalisms that were introduced in the 80s and 90s as Prolog extensions and sometimes (syntactic) generalizations.

<comment><USER6> Well then, please elaborate because I know nothing of the discipline you describe and it certainly sounds interesting (though it also sounds a little fussy).

<comment><USER5> I'm not going to summarize classic equational reasoning (with it's deep connection to algebraic geometry and whatnot) here in a single HN post ;) I can point you to some classic works/authors in the field, though (and I'm sure some fellow HNers can provide some more): Gauss, Knuth, Bendix, Gröbner, Buchberger, Bachmaier, Euclid, Ganzinger, Davis, Putnam, Robinson, and Colmerauer for Prolog 2. There are also category theory papers relevant to reasoning about data structures, and of course Damas, Hindley, Miller for type theories. The way is the goal here.

<comment><USER6> >> I'm not going to summarize classic equational reasoning (with it's deep connection to algebraic geometry and whatnot) here in a single HN post ;)

Aw :(

Alright, I'll just chase down some of the references you say. I was going to check out Prolog 2 anyway, after browsing the wikipedia article on Colmerauer a few days ago and seeing a reference to his later work there.

<comment><USER7> To be a bit more concrete than the grandparent's name soup, I liked this handbook article about unification in theories: Franz Baader and Jörg Siekmann. Unification Theory. In D.M. Gabbay, C.J. Hogger, and J.A. Robinson, editors, Handbook of Logic in Artificial Intelligence and Logic Programming, pages 41-125. Oxford University Press, Oxford, UK, 1994.

This seems to be a newer version with similar contents but different authors: [http://www.cs.bu.edu/~snyder/publications/UnifChapter.pdf](http://www.cs.bu.edu/~snyder/publications/UnifChapter.pdf)

This is specific to unification and not to broader equational reasoning.

<comment><USER6> Thanks.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> In the Rust ecosystem, I believe the next-generation IDE support is already beginning to incorporate some ideas like this, although I believe it uses Prolog rather than Datalog (I'd be interested to learn more about how they differ). The logic library is called Chalk ( [https://github.com/rust- lang/chalk](https://github.com/rust-lang/chalk) ), and it's designed to be a full trait resolution engine for Rust (trait resolution being a necessary step to e.g. autocomplete methods on types); rust-analyzer has been using it for quite a while now, and it's slowly being incorporated into rustc itself. Not as impressive as basing the entire IDE on queries, of course!

The Rust project is also using the differential-datalog library mentioned in the OP to underlie their third-generation borrow checker: [https://github.com/rust-lang/polonius](https://github.com/rust-lang/polonius)

<comment><USER9> It seems polonius is using datafrog instead. Where do you see a differential engine referenced?

<comment><USER8> The post linked from the readme mentions it: [https://smallcultfollowing.com/babysteps/blog/2018/04/27/an-...](https://smallcultfollowing.com/babysteps/blog/2018/04/27/an- alias-based-formulation-of-the-borrow-checker/) , although it's two years old at this point so I wouldn't be surprised if things have changed.

<comment><USER9> It's not the 2 years that caused the change. Feel free to read up on Frank's blog post about how datafrog came into existence: [https://github.com/frankmcsherry/blog/blob/master/posts/2018...](https://github.com/frankmcsherry/blog/blob/master/posts/2018-05-19.md#acks)

</comment></comment></comment></comment><comment><USER10> Fantastic work! Datalog/Prolog are old-yet-futuristic technologies that I wished every developer knew about, as it solves a lot of problems in very elegant ways (as attested to by this post).

I noticed you (assuming you're the author) used what looks like a non- traditional Datalog syntax – which makes sense to me as, IMO, Datalog/Prolog desperately need first-class support for a record-like syntax to finally break into mainstream. Is there any prior work to this syntax, or did you just develop it as you needed it?

<comment><USER5> There's a proposal due to the prolog-commons initiative for a dictionary-like object (that is also implemented in SWI Prolog, I believe).

And in Prolog you can, of course, just trivially use your own term structure for item-values:

        p([ item : "value", ... ])

You could even use JSON-like terms in Prolog (with maybe a little help by the op/3 directive to sort out parsing priorities):

        A_Prolog_Term = {
          x: y,
          z: [a, b, {1, d} ]
        }

But the more fundamental approach IMHO would be to use nested knowledge-base terms:

        p(
          q(whatever).
          r(X) :- q(X).
        ).

As pioneered in the 1980s for attribute grammars, using ^^ and other special graph tokens as nested "implies" operator, though (see "definite-clause translation grammars").

</comment></comment><comment><USER11> Rejuvenating that many devs are finally looking into this kind of workflows.

For prior work on IDE as database check "Energize/Cadillac & Lucid's Demise", [https://www.dreamsongs.com/Cadillac.html](https://www.dreamsongs.com/Cadillac.html)

You can see it in action on this 1993 marketing video from Lucid, [https://www.youtube.com/watch?v=pQQTScuApWk](https://www.youtube.com/watch?v=pQQTScuApWk)

IBM also tried the same concept on Visual Age for C++, version 4, which was one of the very last versions of the product.

[http://www.edm2.com/index.php/VisualAge_C%2B%2B_4.0_Review](http://www.edm2.com/index.php/VisualAge_C%2B%2B_4.0_Review)

Both suffered from too heavy hardware requirements for what most companies were willing to pay for, otherwise we could have had Smalltalk like tooling, with incremental compilation and reloading for C++ already during the early 90's.

</comment><comment><USER12> This is very cool! It's really awesome to see this code as data concept gaining a lot of traction recently. Hope to see this project developed further.

I'm working on a similar project here: [https://sourcescape.io/](https://sourcescape.io/), but intended for use outside the IDE on larger collections of code (like the codebase of a large company.)

Agreed on the Prolog/Datalog approach of expressing a query as a collection of facts. CodeQL does the same. From one datastore nerd to another, I actually think this is a relatively unexplored area of querying knowledge graphs (code being a very complex, dense knowledge graph.)

Very excited to see where you go next with this "percolate search" functionality in the IDE.

<comment><USER13> There's a lot of research on this area. The fact that Semmle was acquired by Github/Microsoft is a testament to the maturity of the field.

</comment></comment><comment><USER14> This is a similar idea to that of SemanticDB, which is used in the Scala community

[https://scalameta.org/docs/semanticdb/guide.html](https://scalameta.org/docs/semanticdb/guide.html)

It is a queryable database of semantic information about the program which is generated by the compiler (compiler plugin, to be precise). Once generated, other tools which need semantic information, like linters or language servers, can consume it without having to worry about how to actually generate it.

You might enjoy a talk about it: How We Built Tools That Scale to Millions of Lines of Code by Eugene Burmako

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

Kythe by Google is also a similar thing: [https://kythe.io/](https://kythe.io/)

</comment><comment><USER15> I would have expected a mention of Roslyn which powers Visual Studio (Not code). Sort of similar to the IntelliJ approach but it is also what drives the C# compiler, it maintains the code model (actually 2 of them, syntactic and semantic) which makes it pretty powerful. It is multi language (VB, C# and I think F# now too?) but it's perhaps not as universal as the Language Server Approach

<comment><USER16> Roslyn is mentioned in the Related Work section.

</comment></comment><comment><USER17> One challenge to this that languages which easily allow metaprogramming can encourage codebases where it is hard to write tools to gain insight into the structure of a codebase.

You can say "don't do that", but I didn't. Past coworkers did.

<comment><USER13> This is just a prototype to showcase ideas. In real life even parsing of C++ or Java is much harder to pull off than one anticipated.

</comment></comment><comment><USER18> Are there any examples of "programs as databases" being applied to structured text like JSON or YAML? Something like a generic system which takes a set of rules/facts and the source data, and transforms these into a queryable data structure.

I'm working with a lot of OpenAPI [1] specifications currently, some of which span tens of thousands of lines. Heaps of parent, child, sibling type relationships, and objects which are defined-once and referenced in many places. It would be nice if I could perform a search like "select all schemas used in this path" or "select the count of references to this parameter".

[1] [https://github.com/OAI/OpenAPI- Specification/blob/master/ver...](https://github.com/OAI/OpenAPI- Specification/blob/master/versions/3.1.0.md)

<comment><USER19> I mean, put them into leucene, elastic search or maybe mongodb?

<comment><USER18> Well yes, but that doesn't solve the parsing problem right?

My point is that some YAML or JSON documents conform to a specification which can be codified as a set of rules, which combined with the data form facts. I'm asking if there are existing systems to parse these files given I write these rules in a particular syntax, spitting out a queryable representation of the data.

</comment></comment></comment><comment><USER20> Reminds me a little of "Intentional Programming" or Structured Editors.

</comment><comment><USER21> This is really nice. Key points:

\- Parse the program like an IDE would, but expose the data in an open queryable database format (both line and unlike a language server).

\- Use Datalog for storing the facts and _inferring_ new facts about data.

(A fun fact: the Datalog implementation they use is written in Haskell and generates programs in Rust.)

<comment><USER8> Here's the link to the Datalog implementation you mention (from VMWare, I wonder what they use it for?): [https://github.com/vmware/differential- datalog](https://github.com/vmware/differential-datalog)

</comment></comment><comment><USER22> This is extremely cool, great work! You're right, IDEs can do so much magic but they're limited by the 'spells' their creators have imagined. Many times I've wanted to do a simple semantic refactor that I could express as logic but the IDE can't handle it.

(Also hi Pete!)

<comment><USER23> I don't see what that has to with the IDE. Just grab a parser/ast library for your language.

I've written a few of my own refactorings for big design changes that might touch e.g. every view in a huge application in ways no series of regexes could cover.

It's hard work. Definitely one of those tricky "cost of automation" decisions. You can do an awful lot of dumb grunt work in the time it takes to debug a refactoring.

</comment></comment><comment><USER24> This idea of turning a program into a database and using prolog/dalalog on it is not new.

The most successful example is Semmle (bought by Github), which has been doing it for years now, with a SQL-like syntax for requests (named ".QL").

</comment><comment><USER25> This is how Rust Analyzers intellisense works, it uses a query engine called Salsa that stores the symbols in a database and the linting and completion/semantics are entirely query-driven:

[https://github.com/salsa-rs/salsa](https://github.com/salsa-rs/salsa)

Good video describing it's use for working with Rust's AST:

[https://youtu.be/i_IhACacPRY?t=1348](https://youtu.be/i_IhACacPRY?t=1348)

</comment><comment><USER26> I've written an IDE in JS where all internal structures are available in the runtime which can be hooked into. I can however not see the usability in what the article describe. So I would like to se some practical examples. What if you could do queries like in the article, what sort of queries would you run !?

</comment><comment><USER27> With [https://github.com/TreeTide/underhood](https://github.com/TreeTide/underhood), my goal is to provide a read-only view of code, geared for understanding and debugging. Having to maintain the ability to edit comes with constraints.

</comment><comment><USER6> Nice article and great idea, but as is traditional there are some slight fudges of what Datalog is or what Horn clauses are etc, that I'd like to unfudge, slightly. It's Sunday! What better than to start our day with a very quick and almost not completely fudgy intro to logic programming? Le'ts go!

To begin with, Datalog is not a "cousin" of Prolog as stated in the section "Interlude: Brief Intro to Datalog". Datalogs (there are many variants!) are subsets of Prolog. For example, a typical datalog is the language of definite clauses with no function symbols [¹] and with no negation as failure [²]. Another datalog may allow only the cons function in order to handle lists; etc.

Otherwise the syntax of datalog is identical to Prolog, but there is a further difference, in that Prolog is evaluated from the "top down" whereas Datalog is evaluated from the "bottom up". What that means is that given a "query" (we'll come to the scare quotes in a moment) Prolog will try to find "rules" whose heads unify with a literal in the query (A literal is an atom, or the negation of an atom; "p(χ,α)" is an atom.) whereas datalog will first generate the set of all ground atoms that are consequences of the program in the context of which the query was made, then determine whether the atoms in the query are in the set of consequences of the program [³]. The reason for the different execution model is that the bottom-up evaluation is guaranteed to terminate [⁴] whereas Prolog's top-down evaluation can "go infinite" [⁵]. There is of course another, more subtle difference: Prolog can "go infinite" because of the Halting problem, from which datalog does not suffer because, unlike Prolog, it does not have Universal Turing Machine expressivity [⁶].

So in short, datalog is a restricted subset of Prolog that has the advantage of being decidable, while Prolog in general is not, but is also incomplete while Prolog is complete [⁷].

Now, the other slight fudge in the article is about "rules", "facts" and "queries". Although this is established and well-heeled logic programming terminology, it fudges the er fact that those three things are the _same kind of thing_ , namely, they are, all three of them, Horn clauses [⁸].

Specifically, Horn clauses are clauses with a single positive literal.

Crash course in FOL: an atom is a predicate symbol followed by a set of terms in parentheses. Terms are variables, functions or constants (constants are functions with 0 arity, i.e. 0 arguments). A literal is an atom, or the negation of an atom. A clause is a disjunction of literals. A clause is Horn when it has at most 1 positive literal. A Horn clause is a definite clause when it has exactly 1 positive literal.

The following are Horn clauses:

      ¬P(χ) ∨ ¬P(υ)
      P(χ) ∨ ¬Q(χ)
      Q(α)
      Q(β)

In logic programming tradition, we write clauses as implications (because ¬A ∨ B ≡ A → B) and with the direction of the implication arrow reversed to make it easier to read long implications with multiple premises. So the three clauses above are written as:

      ←P(χ), P(υ) (a)
      P(χ) ← Q(χ) (b)
      Q(α)←       (c)
      Q(β)←       (d)

And those are a "query", (a), a "rule", (b) and two "facts", (c) and (d).

Note that (b,c,d) are _definite_ clauses (they have exactly one positive literal, i.e. their head literal, which is what we call the consequent in the implication). Facts have only a positive literal; I like to read the dangling implication symbol as "everything implies ...", but that's a bit idiosyncratic. The bottom line is that definite clauses with no negative literals can be though of as being always true, hence "facts". Queries, i.e. Horn clauses with no positive literals, are the opposite: "nothing implies" their body literals (my idiosyncratic reading) so they are "always false". Queries are also called "goals". Finally, definite clauses with both positive and negative literals can be thought of as "conditionally true".

Prolog and datalog programs are written as sets of definite clauses, i.e. sets of "facts" and "rules". So, when we want to reason about the "facts" and "rules" in the program, we make a "query". Then, the language interpreter, which is a top-down resolution theorem prover [⁹] in the case of Prolog, or bottom-up fixpoint calculation in the case of datalog [¹⁰], determines whether our "query" is true. If the query includes any variables then the interpreter also returns evey set of variable substitutions that make the query true.

In the example above, (a) has two variables, χ and υ and evaluating (a) in the context of (b,c,d) would return a "true" result with the variable substitution {χ/α,υ/β}, i.e. (a) is true iff χ = α and υ = β.

And that's how Horn clauses and definite clauses become "rules", "facts" and "queries".

Next time: how the leopard got its stripes and the hippopotamus learned to love the first order predicate calculus.

_________________

[¹] This is my (first) slight fudge because constants are also functions, with 0 arguments. So, to be formal, the typical datalog above has "no functions of arity more than 0".

[²] Negation-as-failure makes a language non-monotonic, in the sense that introducing new "facts" can change the meaning of a theory, i.e. a program.

[³] So, its Least Herbrand Model, or its Least Fix-Point (LFP).

[⁴] _Because_ it finds the LFP of the query and the program.

[⁵] Unless evaluated by SLG resolution, a.k.a. tabling, similar to memoization.

[⁶] Although _higher-order_ datalogs, that allow for predicate symbols as terms of literals _have_ UTM expressivity, indeed a UTM can be defined in a higher-order datalog fragment where clauses have up to two body literals with at most two arguments:

      utm(S,S) ← halt(S).
      utm(S,T) ← execute(S,S₁), utm(S₁,T).
      execute(S,T) ← instruction(S,P), P(S,T).

Originally in:

Tärnlund, S.-A. (1977). Horn clause computability. BIT Numerical Mathematics, 17(2), 215–226.

[⁷] Less fudgy, definite programs are refutation complete under SLD resolution, meaning that any atom that is entailed by a definite program can be derived by SLD resolution. A definite program is a set of definite clauses, explanation of which is coming right up.

[⁸] Long time ago, I explained this to a colleague who remarked that all the nice syntactic elegance in query languages falls apart the moment you try to make a query, which usually has a very different syntax than the actual rows of the tables in the database. So I said "that's the point! Queries are also Horn clauses!" and his immediate remark was "That just blew my mind". It's been so long and I'm so used to the idea that I haven't a clue whether this is really mind blowing. Probably, being my usual excited self, I just said it in a way that it sounded mind blowing (gesticulating widely and jumping up and down enthusiastically, you can picture the scene) so my colleague was just being polite. That was over drinks at the pub after work anyway.

[⁹] Resolution is an inference rule that allows the derivation of new atoms from a set of clauses. In theorem proving it's used to refute a goal clause by deriving the empty clause, □. Since a goal is a set of negated literals, refuting the goal means basically that the negated literals are true. So our query is true in the context of our program.

[¹⁰] Datalog's bottom-up evaluation uses something called a TP operator. It basically does what I said above, starts with the ground atoms in a program and then derives the set of consequences of the clauses in the program. In each iteration, the set of consequences are added to the program and the process is repeated, until no new consequences are derived. As stated above, the process is guaranteed to complete because every datalog definite program has a least fixpoint, which is also its Least Herbrand Model (we won't go into Herbrand Models and Herbrand interpretations, but, roughly, an LHM is the smallest set of atoms that make the union of a definite program and a goal true). A more complete introduction to LHMs and LFPs and how they are used in bottom-up evaluation for datalog can be found here:

[https://www.doc.ic.ac.uk/~mjs/teaching/KnowledgeRep491/Fixpo...](https://www.doc.ic.ac.uk/~mjs/teaching/KnowledgeRep491/Fixpoint_Definite_491-2x1.pdf)

<comment><USER7> Sorry, but you are also fudging things.

> Datalogs (there are many variants!) are subsets of Prolog.

No. First of all, this is not true syntactically. There are Datalogs that allow non-Horn clauses with several terms in a goal head:

        a, b :- c.

This is not allowed in Prolog. So (such) Datalogs are not subsets of Prolog syntactically.

Second, it is not true semantically either, not even for the common syntactic subset. Consider:

        ancestor_of(Parent, Child) :-
            child_of(Child, Parent).
        ancestor_of(Ancestor, Person) :-
            ancestor_of(Ancestor, Parent),
            child_of(Person, Parent).

This is left-recursive, so typical queries will not terminate in Prolog, i.e., have no finite solutions. But as you say, Datalogs are decidable and any query terminates, so you _will_ get solutions, which is different semantics from Prolog. So it's not meaningful to say that Datalog is a semantic subset of Prolog.

Datalog and Prolog are like C++ and Java: One is an extension of a subset of the other, or equivalently, there is a non-empty common subset with similar- ish semantics. This is not a very useful statement? I agree! But it is what it is. They are different languages.

<comment><USER6> Yes, you're right and I'm also fudging things- but didn't I say that upfront? I start my comment by announcing an "almost not completely fudgy intro to logic programming"!

More seriously, you're right about syntax so thanks for the correction.

But, regarding semantics, the ancestor_of/2 program above _can_ terminate in Prolog, evaluated by SLG resolution, as per my footnote 5. There are still situations where Prolog will not terminate when evaluating a normal program even under SLG resolution, but left recursion is not one of those.

Edit: also, if a Datalog program is also Prolog, and assuming that the program terminates under Prolog, then Prolog and Datalog will both compute its LHM. So it makes sense to say that the two languages are semantically at least very similar and to explain one in terms of the other. They are both much closer than what each is to ASP, for example. It really depends on what assumptions one makes- and that's where the "fudging" comes in.

Anyway, thanks for the correction. I sure could have done a better job of that comment. Did you find anything other that was very wrong in my comment? I'd appreciate it if you pointed it out.

<comment><USER7> > Did you find anything other that was very wrong in my comment?

I'm not sure about the statement that "Datalog is evaluated from the "bottom up". [...] datalog will first generate the set of all ground atoms that are consequences of the program in the context of which the query was made, then determine whether the atoms in the query are in the set of consequences of the program". I think it's true that Datalog _behaves_ as if it were evaluated like this, but AFAIK Datalog systems can do lots of very aggressive optimizations that change the _actual_ evaluation. I'm not an expert on Datalog.

Anyway, I was mostly dissatisfied with the general thrust of the comment, trying to establish a "subset" relationship. I think the article's "cousins" comment is fair. Prolog is older and influenced Datalog very much. Prolog is also Turing complete, so it is strictly more powerful. But Datalog's semantics allow some optimizations that wouldn't be possible in Prolog, so it can be a lot faster on appropriate classes of problems.

<comment><USER6> Thanks for this additional comment.

I thought more of your earlier comment about how "p,q:- r" is Datalog. I accepted this because I figured you know what you're talking about but, to be honest, _I_ don't know what you're talking about. My understanding is that without definite clauses (and "p,q:-r" is not definite) there are no fixpoint semantics and without fixpoint semantics there is no guarantee of program termination.

So I have to ask: where does this information come from? Could you point me to a source? To be honest, I suspect that I am confused because of a lack of an ISO standard for Datalog. Even Prolog, with an ISO standard, has various extensions like, if memory serves, B-Prolog (which includes OOP elements). If Datalog has no commonly recognised standard, then basically anything can be called "Datalog" as long as someone, somewhere, can recognise it as Datalog. Is that the case here? If so, that would clear my confusion.

It would also make more sense for me to say that "Datalog is a subset of Prolog", at least in terms of syntax. In that case I'd have to clarify that I'm talking aout a simple, commonly accepted language fragment of definite clauses with at most one function symbol, which I think everyone would readily recognise as "Datalog" without much fuss.

I confess that the extent of my knowledge about Datalog comes from conversations with (senior) colleagues and not directly from original sources. Of course, original sources go way, way back (but obviously not as back as original Prolog sources and I'm familiar with those, so that's not a complete excuse). In any case, I had a look at, e.g. "What you always wanted to know about Datalog (and never dared to ask)" by Geri, Gotlob and Tanca (also in the bibliography section of the wikipedia article on databases).

The article, which is from 1989 and clearly addressed at the databases community (rather than the logic progamming, or AI community) states that Datalog is "in many respects a simplified version of general Logic Programming", referencing J. W. Lloyd for the latter. Since it's 1989, "Logic Programming" clearly means Prolog (given that it's too early for, e.g. ASP).

Further, the article makes it explicity that "In the formalism of Datalog both facts and rules are represented as Horn clauses of the general shape ..." and gives an example of a definite program clause. Later, the article states "From the syntactic point of view, Datalog is a subset of Prolog" (but then goes on to point out the difference in semantics).

Finally, the article does agree with you that is is possible to evaluate Datalog programs in a "top-down" fashion, using the query-subquery algorithm which is, from what I can tell, backwards chaining implemented by breadth- first search. So the semantics of Datalog _can_ be different than Prolog's. My mistake I think is in equating the use of a TP operator (which is "bottom-up") to Datalog execution, always.

<comment><USER7> > So I have to ask: where does this information come from?

Half-remembered university courses from >= 10 years ago, I'm afraid. I now think I was probably thinking of ASP, not Datalog. See for example the "Disjunctive logic programs" section of [https://www.cs.uni- potsdam.de/~torsten/Lehre/ASP/Folien/asp-...](https://www.cs.uni- potsdam.de/~torsten/Lehre/ASP/Folien/asp-handout.pdf). Since the syntax is very Prolog/Datalog-like, I probably got mixed up. My bad, sorry. The first few sources on Datalog I looked at only talked about Horn clauses, not ones with more heads.

> My understanding is that without definite clauses (and "p,q:-r" is not > definite) there are no fixpoint semantics and without fixpoint semantics > there is no guarantee of program termination.

Skimming [https://en.wikipedia.org/wiki/Answer_set_programming](https://en.wikipedia.org/wiki/Answer_set_programming) and [https://en.wikipedia.org/wiki/Stable_model_semantics](https://en.wikipedia.org/wiki/Stable_model_semantics) I get the impression that even disjunctive logic programs appear to always terminate, though the complexity might be daunting.

<comment><USER6> Ah, phew, OK. I was really confused by that. No worries, I'm still grateful for your comments :)

Yes, ASP is not Horn so it has rules with multiple literals in the head. "Choice rules", writen as {s,t}:- p. Also, like you say, I believe it doesn't suffer from Prolog's non-termination, again because unlike Prolog it's not Turing-complete. But in any case ASP is based on stable model semantics, not fixpoint semantics.

However I'm really very far from being anything like an expert in ASP! I really should learn a bit of it because it's actually necessary in my research.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> Sorry to disappoint but for people doing programming language semantics there's nothing new here. The hard part is always to go from the made-up language to a set of multiple full-blown languages.

</comment><comment><USER7> > I want to see how easy it is to add more advanced features to FP, like > generics

This will be interesting to see, since the straight-forward implementation of generics for functional programming languages uses unification, which is not available in Datalog. It will probably be possible to encode things for any given program, since its universe of types should be finite. But it will involve jumping through hoops to encode something equivalent to unification.

</comment><comment><USER28> I think the biggest win here could be transactions. One commit can be worked upon by more than one person at once.

</comment><comment><USER29> Ask yourself: what is the difference between a database and a programming language? The question is worth exploring.

</comment><comment><USER30> The .net dependency and code maintenance tool "NDepend" has a feature called CodeQuery that this reminded me of.

You can write queries such as:

from m in Application.Methods where m.NbLinesOfCode > 30 && m.IsPublic select m

</comment><comment><USER31> I was very confused as I had read the title as '... with Datadog" (the monitoring tool).

Anyway, I think both are a good idea. Datadog -> integrating monitoring information back into the IDE. Datadog -> working with the actual semantics of the code rather than just blobs of text.</comment>


Searchable database of VC locations and backgrounds - <AUTHOR> http://punctuative.com/2008/08/04/announcing-vcdb-venture-capital-database/

<comment><USER2> Good resource, although location search can definitely be improved.(i.e. at least let people search by distance). Also wouldn't hurt to be able to search by the stage they prefer to invest in, and which industries they focus on

</comment><comment><USER3> my friend mentioned that Greycroft is missing in this database.

</comment><comment><USER4> thefunded.com</comment>


"You should have your tongue ripped out": the reality of sexist abuse online - <AUTHOR> http://www.newstatesman.com/blogs/helen-lewis-hasteley/2011/11/comments-rape-abuse-women

<comment><USER3> I find it hard - like, _really hard_ \- to put myself in the state of mind of someone who would write something like this at someone else. It's strange - <USER2> just really don't get it.

The danger is when people with mindsets like us extrapolate outward to assume that essentially everyone is people like us, and therefore "it's not that serious a problem".

It _is_ a serious problem - if even 1% of internet users are behaving this way, then there's a lot of abuse going around every day.

No easy or obvious solutions - it's systemic.

</comment><comment><USER4> Sad, but not unexpected to anyone who's been online for a while. Back when Usenet was the place people discussed things it could get really nasty.

When I was working on the Turing petition I received all sorts of hate email. Apparently, I'm going to hell where I am going to spend eternity having 'bum sex' with Turing himself. If you have any questions for him I'll try to ask him.

<comment><USER5> I think you make a good point. While I know that HN doesn't like meme's popping up in the comments, I think that these situations are really well described by one phrase: "haters gonna hate"

There are just people out that that are angry at something (life, job, ...) and they seem to like venting by writing stupid emails or comments to people the usually have never met in person.

I think that most of the sexism, racism, *-ism is just the easiest way of trying to hurt somebody emotionally. They're just going for a cheap shot. As long as it's not institutionalized by policies, I think the best thing to do is not even dignifying that with a response. You certainly can't have a discussion with those kinds of "fundamentalists" when their goal is not a discussion about gender/race/religion/... but rather to get people upset.

<comment><USER4> _but rather to get people upset_

And they do that for their own pleasure.

</comment></comment></comment><comment><USER6> We expend huge amounts of time and computing power to track people's likes, dislikes and spending habits to show them better advertising. It would be interesting to see a service that uses the same expertise to pin online hate speech to someone, publicly and for all time.

<comment><USER7> It would also be interesting to see a service which uses the same expertise to pin online speech to closeted gays, closeted conservative academics, occupiers who work on wall st and redditors with gimmick accounts (e.g. steamingpileofpoo).

And lets not forget, a service which pins anti-Islamic Republic speech to Iranians.

<comment><USER6> Yup, those would be cool too.

</comment></comment></comment><comment><USER8> I don't disagree with the general sentiment of the article, but judging from this quote it would appear to be a two way street:

"A lot of [commenters] seem to be socially inadequate, pimpled, single, slightly seedy, bald, cauliflower-nosed young men sitting in their mother's basements and ranting."

<comment><USER9> (a) She's quoting someone else (a MAN!)

(b) That's rather hard to equate with rape threats.

<comment><USER8> Okay, like I said, I still agree with the sentiment of the article (Which is pretty much entirely quoting other people). I just think that it is a little hypocritical to pen an article calling out abusive comments in the blogger community and then present other abusive comments in a positive light. I am certainly not saying this equates, vindicates, or in anyway excuses rape threats, or really any other abusive comment. Just pointing out that perhaps that quote is inappropriate considering the point the article is trying to make.

</comment></comment></comment><comment><USER10> How is this Hacker News?

<comment><USER9> A common topic on here is "why aren't there more women in computers?" I'd say this sort of thing is highly relevant.</comment></comment>


Rabbit Ear: a creative coding JavaScript library for designing origami - <AUTHOR> http://rabbitear.org/ <comment><USER2> There was a similar origami simulator that I saw from hn a while back:

[http://www.amandaghassaei.com/projects/origami_simulator/](http://www.amandaghassaei.com/projects/origami_simulator/)

[http://apps.amandaghassaei.com/OrigamiSimulator/](http://apps.amandaghassaei.com/OrigamiSimulator/)

</comment><comment><USER3> This looks really helpful... I've been looking for vector crease patterns for simple origami (cranes, etc). They're available for complex patterns, but I've never found a good repository for them for more basic origami.

</comment><comment><USER4> Can I suggest clicking to toggle interactivity off/on.

for each step.

<comment><USER4> Btw, moving the mouse to effect the code sample. Not sure I've ever seen that before. Truely inspiring.</comment></comment>


Lord of the Wings - <AUTHOR> https://www.seas.harvard.edu/content/lord-of-wings <comment><USER2> Links to original paper, _A simple developmental model recapitulates complex insect wing venation patterns_ :

[http://libgen.io/scimag/index.php?s=A%20simple%20development...](http://libgen.io/scimag/index.php?s=A%20simple%20developmental%20model%20recapitulates%20complex%20insect%20wing%20venation%20patterns)

</comment><comment><USER3> Read the article, saw no mention of DeLaunay or Voronoi ! How can that have been overlooked?

<comment><USER4> Relation to Voronoi is discussed in the original paper: [http://www.pnas.org/content/early/2018/09/11/1721248115](http://www.pnas.org/content/early/2018/09/11/1721248115)

</comment></comment><comment><USER5> the simulated thickness scaling is not quite right

</comment><comment><USER6> code?

<comment><USER7> From the full article on PNAS: [https://github.com/hoffmannjordan/insect-wing- venation-patte...](https://github.com/hoffmannjordan/insect-wing-venation- patterns)

</comment></comment><comment><USER8> Amazing!</comment>


How HOTorNot Bootstrapped To Over $5 Million In Annual Profits - <AUTHOR> http://mixergy.com/hotornot-bootstrapped5-million-profits-james-hong/ <comment><USER2> To anyone who has watched the whole thing, could you please very briefly summarize the responses to the following question that the author is intentionally withholding?

* How HOTorNOT negotiated away some of their biggest expenses using techniques you could (and should) use right now.

* How a bad economy could help your company grow. (It helped HOTorNOT.)

* The most effective way to increase conversions and get more users to pay. (It's not what you'd expect.)

* The step James ADDED to his order process that increased sales. (It's still an under-utilized technique)

(I'm not going to watch a 74 minute interview, but I would have gladly have read the 20 page transcript if it had been posted. )

<comment><USER3> * Negotiated with their hosting company to get free hosting for a year in return for endorsement of their scaling capabilities.

* Many large companies fail in a bad economy while lean, agile businesses have opportunity to thrive and gain market share.

* Make the site fast and leverage the press thereby using the funnel model; more users at the top of the funnel means more customers at the bottom.

* They added a phrasal template to allow unpaid users to send "canned messages" to each other. Only paying members can send custom messages.

<comment><USER4> Holy crap you sum things up better than I do!

Maybe I should sum up my interviews in this bullet form and just forget about the headaches of transcripts.

</comment></comment></comment><comment><USER5> Andrew, you have a great idea for a site. The only thing missing is transcripts. Asking viewers to watch an hour long interview is way too much (I didn't watch it). Transcripts will go a long way towards making your visitors happy and keeping them coming back more often (I know I'd come back if you added transcripts).

<comment><USER6> Seconded! Andrew- I'd love to see transcripts of the Mixergy interviews as well, as I'm sure many others are too.

</comment></comment><comment><USER7> I think part of it, is that they had a fun product, when there was no real competition from things like youtube(+5 years), flash games(+7 years), hulu(+9 years), decent social networks(+3 years myspace, +4 years facebook)

And the product itself, led them to pretty much be able to signup anyone who stumbled on their website.

</comment><comment><USER8> A more in-depth description can be found in Founders at Work.

<comment><USER4> I asked him about how his chapter in Founders at Work was written because I'm a big fan of the book. (I actually hold it up a lot in the interview.)

Because many of us read the book, I asked James questions that weren't covered in it. I think you'll learn some new ideas in my interview. Let me know if you don't.

<comment><USER8> Thanks for the follow-up. I only read the text excerpt because I didn't have time for the video. I'll see if I have time later to watch the whole thing.

</comment></comment></comment><comment><USER9> Enjoyed the interview a great deal, thanks Andrew. His strategy for locking out the press was brilliant.

One thing - I'm unable to skip forward in the video. The Firefox beta crashed on me midway through watching, and being unable to restart the video halfway was maddening. Is this intentionally disabled?

<comment><USER4> That's a strange issue with blip.tv's player. I think it just needs some time to fully buffer before it'll let you skip forward or backward. Sorry about that.

</comment></comment><comment><USER10> [Removed]

<comment><USER11> Offtopic comment and NSFW link. Please don't do either of those things.</comment></comment>


Funding or bootstrapping. The too-simplistic paths to startup success. - <AUTHOR> http://blog.studiofellow.com/2011/10/07/funding-or-bootstrapping-black-or-white-the-too-simplistic-paths-to-startup-success/

<comment><USER2> Nice succinct summary!</comment>