Hopefully more controversial programming opinions - <AUTHOR> http://prog21.dadgum.com/149.html <comment><USER2> [update: I've got hold of some of the code. Here's a copy of one of the programmes <http://pastie.org/4615158>]

I have an awesome story that i think I've told before, but I'll tell it again anyway :)

My father-in-law is a pharmasist. back in the early 90s computers were starting to make their way into Pharmacy and the first few pharmacy sortware packages appeared. this increased with time, as you'd expect. At some point he decided it was inevitible but he decided (I have no idea why, except that he's always been quite independent) he'd write his own software. Took himself off to nightschool and learned dBase III. He'd never written a line of code prior to this.

He then proceeded to write an entire pharmacy suite of software tools that are _still_ in use. They've been heavily updated and added to over the last 20 years but it's still all DBase III running on DOS. It's a saggering amount of code over hundreds of files but it all works. I've seen the code and it wouldn't pass a first semester coding course. each programme is a single 10,000 line spaghetti-fest. I've tried to explain functions/methods to him but he didn't understand and in the end I gave up. apparently he doesn't need them!

I can't understate how complex this software is - it's stock control, point of sale (including the usual things like birthday vouchers, discounts accounts etc etv), prescription dispensing, patient records etc. everything for a modern pharmacy. The australian health dept know about it and it's met all their criteria. it does everything.

It's mindbogglingly awfull bad code by any metric imaginable but yet it's robust, appears to be as-good-as bug free and has been able to be maintained (gov regulations for pharmacy change constantly so it's required major changes each year to keep up to date) and in production use for almost 20 years. oh, and it's fast :)

[Edit: looking at the other comments it seems I've replied to the wrong thing. I was actually writing a comment in response to this <http://prog21.dadgum.com/87.html> (Write Code Like You Just Learned How to Program) which was linked to from the main article]

<comment><USER3> I wonder how much that initial version changed during the 20 years of maintenance.

I find it hard to believe that someone was maintaining it for 20 years without improving the quality (of the code/design) and making it easier to maintain. Have you seen the code base of the initial version or of the version that is currently being used?

<comment><USER2> I've know my wife for the last 18 or 19 years and it was written before that, so I haven't seen the original. I have seen him debugging code in the evenings though. This consisted of printing out the entire programme (in the DBase sense a "programme" is a single file, but a programme in our sense would be a collection of dbase programmes) and the paper (dot matrix, so it's all connected) trailing all thruought the house as he draws pencil lines all over it to reconstruct programme flow. no indentation at all

The short answer to your question is no, I didn't see any evidence of improved structure or practices at all. All variables global. goto ftw. no procedures/methods/functions _at all_. He's never even heard of the concept when I tried to explain.

[Edit: managed to get hold of some of the code (see parent) and it looks like I was wrong on the indentation - he did start to use it at some point]

<comment><USER4> closely looking at a printout is an underrated archaic practice.

<comment><USER5> Ah yes "desk checking." When compiles took hours or would only run during the overnight batch cycle. You better believe it was worth spending some time manually reviewing your code.

</comment></comment></comment></comment></comment><comment><USER6> I would go farther in regard to the Computer Science point.

CS programs should be burnt to the ground. And in their place we should build up three separate things. First, software trade schools that are actually good (e.g. not ITT). Second, for reals software engineering majors at colleges, that are heavy on things like practical programming, tools (version control, issue tracking, automated build systems), refactoring, teach multiple languages (javascript, python, ruby, SQL, etc.), and only delve into theoretical underpinnings as warranted (compare electrical engineering vs. physics programs). Third, legitimate Computer Science programs that are contractually limited to about 5% of the current CS student capacity for at least the next two decades and which teach a very mathematics heavy and science focused CS program and have zero expectation that the graduates of the program will go on to write software in industry after graduation.

<comment> UK-AL The problem with software trade schools, even though you may not require a pure maths focus, I still expect people who program professionally to be good at maths. I would expect most programmers to analyse algorithms in a formal manner if they have to. And the people capable of doing maths at that level are not the people that traditionally go to trade schools.

<comment><USER7> To make something fast or to make something scale you don't need a proof. You need a profiler.

<comment> UK-AL A profiler is for micro optimisations. A profiler won't let you go from bubble to quick sort for example.

<comment><USER8> A profiler will tell you if sorting actually using a meaningful amount time in your application.

If you go ahead and blindly change your bubble sorts for quick sorts then at best you may be wasting time doing something that has no effect on performance, and at worst you may be making your program slower.

Quicksort is slower than bubble sort for nearly sorted input after all.

<comment> UK-AL It does give you information on where the most time is being spent, but it doesn't tell you what to implement. Without adequate algorithm knowledge you might try a micro optimisation when it really needs a completely different algorithm.

With superficial knowledge you might stick to certain rules without really understanding them. That bubble sort example you gave is a perfect example.

</comment></comment></comment></comment></comment></comment><comment><USER9> > _Computer science should only be offered as a minor. You can major in > biology, minor in computer science. Major in art, minor in computer science. > But you can't get a degree in CS._

The problem is not that Universities produce poor CS majors. They don't. The problem is that everyone else expects that a CS major is going to be a good commercial developer. Some are, but that's just the odds.

If you want to be a programmer, do an software ENGINEERING degree. It deals with the practical issues and you actually do lots of real, actual, programming. Or go to a media design school, where you do lots of actual web programming.

Expecting every CS major to be a great programmer, is like expecting every Physics major to be a good baseball player. Sure, (s)he knows the optimal angle to strike ball to achieve a home run, but actually doing so requires a whole of experience and real world context.

(PS. I have a physics degree, and I'm a software developer, not a baseball player. But that's because I programmed a lot for fun and profit before going to university, and CS seemed like a big backwards step. And physics is more fun.)

</comment><comment><USER10> I just read the post that inspired this post: [http://programmers.blogoverflow.com/2012/08/20-controversial...](http://programmers.blogoverflow.com/2012/08/20-controversial- programming-opinions/). While a lot of these opinions sound reasonable, I want to know if they're actually true. All of these statements are expert opinions, but it's unclear how many of them are backed by research. Without controlled studies, experts can easily believe incorrect things.

If you hold an opinion, look at the evidence backing it up. If it's not strong, reduce your confidence. Or even better: Gather evidence, _then_ form your opinion. And remember: Anecdotes don't count. I wish more of my colleagues would do this, but it seems most of them haven't heard of very many software-related studies.

If you want to learn more, I recommend <http://www.neverworkintheory.org/> as a starting point. After reading some papers, you'll be surprised how limited our evidence-based knowledge is. Looking at software engineering studies made me realize that I'm not allowed to poke fun at psychology anymore. Even that field is more evidence-based than ours.

</comment><comment><USER11>
      It's a mistake to introduce new programmers to OOP before they understand the basics
      of breaking down problems and turning the solutions into code.

Given how well I remember my classmates with little-to-none programming experience struggled with understanding pointers while not being able to write the simplest algorithms, I thought this was a no-brainer. Is it really a controversial opinion?

<comment><USER12> I've never understood what's confusing about pointers...

<comment><USER13> 1) Indirection. Pointers require thinking in a few steps. Indirection is hard. It is a vital skill in any kind of programming (or especially debugging), but it does not come naturally to people who've only ever had to deal with the concrete.

2) Early on, you learn that ints and chars and floats and some_structs are fundamentally different data types. Then suddenly you're told that int%s, char%s, float%s, some_struct%s, and even void%s are fundamentally the same. Huh?

3) The fact that C uses % both to create a pointer and to dereference. These are conflicting meanings, and the unrelatedness of those two concepts is not sufficiently explained.

EDIT: Silly HN parser. I now replaced asterisks with %s.

<comment><USER12> 3) That make's sense. For example...

        int *i;

means "When you dereference i, you get an int."

<comment><USER13> When I see

       int a;

I read "create an integer variable called a".

        int *i;

means, "create a variable that when dereferenced, points to an integer".

Makes sense once you understand it, but I can definitely understand how a beginner would find it confusing.

<comment><USER12> It may be a problem with the teaching though, rather than the subject matter itself. I understand why it takes a little bit of thinking to get used to, but not why it is fundamentally hard.

Now, algorithms can be difficult to understand and many of them use pointers... Do some people confuse the 2?

<comment><USER13> I don't think the difficulty is fundamental, and I don't think anyone here claimed that it was. But it is initially challenging nonetheless.

To tie this back in to the beginning of the thread, being able to understand indirection (such as in pointers and algorithms) is a far more important skill than understanding OOP.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Here's my version of his opinions, probably even more controversial :P.

CS should be offered as a major by itself. All the most interesting stuff is CS-specific with indirect applications. Working on something like automatic programming is far more exciting than working on biology or art or what have you. (I can't think of anything more awesome or more CS-only than automatic programming.)

It is a mistake to introduce programmers to OOP.

A complex compiler is awesome. A sufficiently smart compiler may be a myth, but it is a _utopian_ myth; we should strive for it. However, I would take it even further: program synthesis is better still. I'm in the business of telling the computer _what_ to do, not how to do it, so there should be no obvious but unnecessary correspondence between what I write and what the computer executes--they just have to have the same semantics.

You shouldn't be allowed to write a library unless you have a thorough understanding of programming languages and some relevant math. There is always relevant math. Your functions should be accompanied by useful and verifiable laws others can depend on. Or maybe everyone should be encouraged to write libraries regardless of skill level and then the libraries could be ranked a posteriori. Any other guidelines make less sense.

Pretty code is readable and readable code is pretty. If you can render your code as a nice pdf and distribute it as a paper, it's about as readable as it will ever be. Even if you can't, remember that aesthetics aren't random--there is a reason why pretty code is pretty.

Purely functional programming is a straw man. Even Haskell lets you write code that at least acts impure. Haskell is a local maximum. On the other hand: a purely functional spec that the computer uses to generate a potentially impure program _should_ work. But I've already talked about that :P.

I don't know what a "software engineering mindeset" is. It sounds like something a manager would say. Don't do stuff a manager would say. This is unfair to good managers but still a useful guideline. Have as much fun as you can unless people's lives are on the line.

I should note that I don't even think all these opinions are true. But a belief does not have to be true to be _useful_. If I could boil it down to a single sentence, it would probably be: math and CS theory aren't scary and you should reject conventional "wisdom". But that would be somewhat cheap--two independent and rather unrelated clauses joined with "and" may as well be two sentences :P.

Also, there's something very appealing about throwing out intentionally extreme opinions. I can certainly see why this guy keeps on writing his blog.

<comment><USER15> _Pretty code is readable and readable code is pretty. If you can render your code as a nice pdf and distribute it as a paper, it's about as readable as it will ever be. Even if you can't, remember that aesthetics aren't random--there is a reason why pretty code is pretty._

I'll restate this: "Every programmer should know more than a little bit about typography". I was amazed at how much learning design fundamentals improved me as a programmer. I've learned to _communicate_ through code much more effectively than I ever had before. Thinking about grouping, spacing, and the like leads not only to more readable ("pretty") code but usually more efficient code as well.

<comment><USER16> Can you suggest any books?

<comment><USER17> I recommend "The Elements of Typographic Style" by Robert Bringhurst.

</comment></comment></comment></comment><comment><USER18> Great stuff. Since these are controversial opinions, I somewhat agree/disagree.

\- Computer science should only be offered as a minor. Good point, assuming that you don't consider theory an end in it self. I consider theory mind opening, even if it doesn't make money per se.

\- It's a mistake to introduce new programmers to OOP before they understand the basics.. Fully agree.

\- You shouldn't be allowed to write a library for use by other people until you have ten years of programming under your belt. Another good point. Writing a good library (or designing an API) is one of the more challenging things you can do, because it requires a good understanding of the problem, simple design, and sensitivity to conventions (which only come from long experience).

\- Superficially ugly code is irrelevant. Somewhat true, but the main problem with ugly code is that nobody wants to touch it. So if its functionally correct, readability remains irrelevant until you need to make a change.

\- Purely functional programming doesn't work Agree, in the sense that there exists problems where a purely functional approach is not the best. I think you can run pretty far with purely functional though.

\- A software engineering mindset can prevent you from making great things. Strictly true, but it should be said that the opposite mindset will eventually destroy the things you made.

</comment><comment><USER19> "Superficially ugly code is irrelevant. Pretty formatting--or lack thereof-- has no bearing on whether the code works and is reliable, and that kind of mechanical fiddling is better left to an automated tool."

I disagree with this one. Clear, readable code is... clear and readable. It's like not bothering to format text in a textbook because "the meat of the matter is in there, so who cares?"

Of course substance is more important than style in programming, but style also helps and is it really that much effort to make sure your code is readable for the next guy who comes along?

<comment><USER7> I agree with you. What i took away from that point was to leave it to an automated tool. Th Eclipse Java formatter was the first time I saw this work. Distribute the formatter settings among your team, make everyone set the "format on save" option, be done with it.

I just wish all languages had this kind of support.

<comment> qu4z-2 "indent" the program (for C) has been around for a while.

The other nice thing about automated formatting is that everyone can edit code in their preferred format, as long as they convert it back before checking in (for readable diffs)

</comment></comment></comment><comment><USER20> I agree with the first 10 controversial opinions, and I agree with this followup, to boot. All good points, all worthy of discussion.

As an autocrat, I'd also add another few, what I conceive to be contemporaneously controversial point of view, to the discussion:

* Code Coverage matters. Dead code is broken code. Always.

* Programming is Always in Service To The User. The User is the only way your creative, artistic, amazing, junk of spaghetti-code crud, is going to ever get Used. Use is where your software is alive. Non-use = Dead. Thus, the USER is YOUR MASTER. Serve them.

* Pretty tools are one thing, ugly tools another thing entirely. NO! WRONG! ALL TOOLS ARE TOOLS. Use what works. If you're using something because you want to, even though it sort of doesn't work, its no longer a tool, but instead an .. ingredient .. of something. Something else, perhaps something creative. Do that shit on your own time: use the tools which work, _at_ work.

* Discussion is the only way things ever get resolved. If you hate on something about someone, discussion is the only way the problem will ever get solved, ever. Ignoring something and being afraid to discuss really secretly means 'do not want' to solve the problem. Even vile words are still yet but words, words eventually work it out. Developers who do not use words are not the scribes they're meant to be ..

</comment><comment><USER21> Computer science should only be offered as a minor. You can major in biology, minor in computer science. Major in art, minor in computer science. But you can't get a degree in CS.

The way university is structured, it would be nearly impossible to minor in CS and learn anything low-level or advanced like computer architecture or operating systems. Perhaps you can push out a desirable employee with a practical knowledge of programming, but could you really educate true "software engineers" via a minor?

<comment><USER13> I am a bioengineer by degree, software developer by profession. Most valuable skill that I use in the day-to-day is thinking like a programmer, and understanding how to make sense of data in an intelligent way. But ultimately, this is all about solving problems - programming is simply a tool towards this end. Go up to a carpenter (and I mean a well-trained carpenter, the kind who carries more than just the PHP hammer [0]) and ask him which carpentry technique to use, and he'll tell you the right answer in a flash. But ask him whether carpentry is even the right approach for a given problem, and I wish you good luck.

Programming skills are important, but a deep knowledge of the problem domain is sometimes far more critical to being able to actually solve the problem.

[0] [http://www.codinghorror.com/blog/2012/06/the-php- singularity...](http://www.codinghorror.com/blog/2012/06/the-php- singularity.html)

</comment></comment><comment><USER22> "You shouldn't be allowed to write a library for use by other people until you have ten years of programming under your belt. If you think you know better and ignore this rule, then one day you will come to realize the mental suffering that you have inflicted upon others, and you will have to live with that knowledge for the rest of your life."

stunning.

<comment><USER23> I'm actually currently in process of writing a small library, but I have only 6 years of experience. I'm frightened.

<comment><USER24> Don't be. That idea is bollocks. Experience has approximately zero correlation with ability.

(how's that for controversial?)

<comment><USER25> Exactly. Does anybody really sit and write a libraries solo these days? There's an omission of combined experience here. 2 others like yourself would be 18 years of experience.

(I understand the combined experience thing isn't perfect logic but that's not really my point.)

<comment><USER26> Errr... I write libraries solo. Professionally. More or less full time.

</comment></comment></comment></comment></comment><comment><USER27> _> Purely functional programming doesn't work, but if you mix in a small amount of imperative code then it does._

That isn't controversial nor is it an opinion. It's just the truth. Purely functional code has no side effects. The entire point of a program is to have side effects.

<comment><USER28> Not true. For example, a compiler can be a pure function. It accepts input that is the source code, and outputs the machine code. There's no side effect there. I admit it needs minor scaffolding to always read all of stdin first, and write all to stdout at the end, but the programme, as written by the programmer, is a pure function.

This is one of several ways that Haskell worked before there was an IO monad [1], all allowing pure functional useful programmes.

[1] S. Peyton Jones. Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in haskell. Technical report, Microsoft Research, Cambridge, 2010.

<comment><USER27> Yes, the 'minor scaffolding' has side effects. That's why I said it wasn't controversial.

<comment> qu4z-2 The side effects in the scaffolding are purely an implementation detail.

For non-interactive use (like a compiler) you could implement the program as a function taking and returning a string.

<comment><USER27> How would I invoke a compiler that isn't interactive? The act of invoking it _is_ the interactivity.

</comment></comment></comment></comment></comment><comment><USER29> The difference between a compiler not optimizing (gcc -O0) and optimizing as good as possible (gcc -O3) can be an order of magnitude of performance. That does matter in many cases.

Of course, various programs (web apps) are IO-bound. And gcc -O0 should still outperform Python/Ruby/etc.</comment>


Google's Patent Stash Is (Probably) Making Them a Ton of Money on Pokémon Go - <AUTHOR> http://www.ipstreet.com/blog/how-googles-patent-stash-is-probably-making-them-a-ton-of-money-on-pok%C3%A9mon-go <comment><USER2> Even Boeing has a stake in this! Seems like the success of Pokémon Go is helping out lots of companies</comment>


Zendesk Support is Down - <AUTHOR> http://support.zendesk.com/ Per @ZendeskOps on Twitter, there is a network issue and there is no ETA on when it is coming back up yet.<p>This is affecting a lot of customers (if not all) who use Zendesk. <comment><AUTHOR> Per @ZendeskOps on Twitter, there is a network issue and there is no ETA on when it is coming back up yet.

This is affecting a lot of customers (if not all) who use Zendesk.

</comment><comment><AUTHOR> UPDATE: ~4:45PM Eastern - @ZendeskOps reported they rolled out 'mitigation measures' to resolve the outage. It appears all of their services are up now.

</comment><comment><AUTHOR> UPDATE: 2:55pm Eastern - @ZendeskOps say they (along with other customers at their hosting provider) are under a DDoS attack.</comment>


The 40 Books That Saved My Life - <AUTHOR> http://www.jamesaltucher.com/2016/10/books-saved-life/ <comment><USER2> But he forgot what was said to have been the one book on Steve Jobs' iPad - the one that was handed out after Jobs' memorial service: Yogananda's Autobiography of a Yogi. As Marc Benioff said, Steve's last message was, "Actualize yourself."</comment>


Zynga Stock Dives as Facebook Keeps Backing Away - <AUTHOR> http://www.wired.com/business/2012/11/zynga-facebook-chill/ <comment><USER2> Sure, ZNGA went down 6% yesterday, to about the same price it was on Wednesday, which is still 15% more than it was a couple weeks earlier.

Not sure about Zynga as a company, but it's easy to overreact to the market's reaction to this news.

<comment><USER3> Even though this is Wired, this is typical of financial reporting: to take a single day of price movements and write whole stories about them, completely ignoring larger price movements or alternative explanations. I've even seen news articles about stock market movements changed after the price swung from negative to positive in the same day... but the article kept the explanation for the price movement essentially the same! My guess is that this Wired story would have found a way to be written regardless of what the stock price did. But, getting to say that it "dove 7%" makes for good headlines (even if soared 8% just the day before, meaning that it just "dove" back to its original price).

While I don't think Zynga is a great company to invest in, its stock price is very volatile, which probably makes for good frequent attention grabbing headlines. Sure, this news was part of the reason the stock price was down, but apparently market price setters still think the company is 13% more valuable than it was 30 days ago.

<comment><USER4> One of the early innovations of Bloomberg was to totally automate certain classes of news story, driven entirely by data. As you can see from spending any length of time browsing Google Finance, the number of this class of stories in the present day is absolutely huge, from a wide variety of 'news' outlets.

"Top movers! Miners down 0.00001% as fears grow over $calendar->getNextECBAnnouncement()"

What's more terrifying is that Google Finance even syndicates these articles, and that people trade off of them - "informed" traders, buying and selling based on articles that are quite literally generated from sampling noise

<comment><USER5> Do you have a reference for this? As someone with a Bloomberg terminal I've found their wire service completely free of that kind of junk more typical of tech journalism, MarketWatch, or StockTwits.

<comment><USER4> Bloomberg mentions it in his autobiography (Bloomberg by Bloomberg) while Taleb mentions encountering similar stories on his Bloomberg terminal in Fooled by Randomness.

</comment></comment></comment></comment></comment><comment><USER6> It's worth noting that Zynga has diversified revenue streams other than the games themselves: they have a pending Draw Something TV show [1] _and_ physical merchandise [2].

That probably won't be enough to save the company, though. It wouldn't surprise me if Zynga pivots into a Rovio.

[1] [http://www.tvguide.com/News/CBS-Draw-Something- Pilot-1048932...](http://www.tvguide.com/News/CBS-Draw-Something- Pilot-1048932.aspx)

[2] <http://i.imgur.com/OZSZb.jpg>

<comment><USER7> can you point me to the estimated revenue numbers?

if zynga wants me to consider this going fwd they need to throw potential investors a bone. such "revenue streams" with no quantitative backup is plain speculation, water cooler chitchat.

<comment><USER8> I think the idea is that each player gets their own revenue stream and clicks on it until it gets bigger. You can share your "earnings results" with friends and trade rare revenue stream features, and there's a kind of limited PvP setup where you can pit your revenue stream against another player's and click a bunch of times and one of your revenue streams gets bigger.

</comment></comment></comment><comment><USER9> We should all short Zynga. Zynga has nothing special, no competitive advantage, no intellectual capital, no special sauce to maintain their market share.. and what OTHER social platforms are there for games? Twitter? Google+?

"Oh, our plan is to launch poker in the UK!" Um.. ok, and compete with 10000 other companies that had a decade head start and know all about the online poker business. Good luck with that.

<comment><USER10> _Oh, our plan is to launch poker in the UK!" Um.. ok, and compete with 10000 other companies that had a decade head start and know all about the online poker business. Good luck with that._

I think your reasoning is perfectly logical and yet, it sounds similar to all the VCs who turned down google back in the day because _hey_ all these other guys had been doing search for years so how can you compete with em? You may argue that Google actually had a plan to compete with them to which I'd ask you in how much depth you have researched Zynga's poker plans before reaching the conclusions in your post.

<comment><USER11> While I don't think the Google Search : Zynga Poker comparison is fair, I think that your comments' parent has a valid point as the online gambling market is pretty saturated. It would be interesting to see if they can do something innovative for the online gambling marketplace.

<comment><USER12> Probably a long shot, but should online gaming ever come back to the US (and perhaps this will work in other markets), maybe Zynga can position themselves as the choice for casual gambler. If they can convert a bunch of their Farmville, etc users into playing poker, it could make for some very soft games. I don't think you'll see them as the place to be for serious players who want high limits or lots of different tournaments/options, but something that even the most casual of poker players/gamblers can be very lucrative (as well as draw in low/mid limit sharks who want easy cash). This all depends on the premise that the friction from being a player of one Zynga game to being a gambling player on a Zynga game is less than being a player of a Zynga game and also joining an unrelated gambling site.

</comment></comment></comment></comment><comment><USER13> Facebook will be able to buy them for the price of a taco soon.

<comment><USER14> A virtual Facebook taco, at that.

</comment></comment><comment><USER15> Yeah Zynga sucks but this is another cautionary tale of relying on someone else's (web) platform.

<comment><USER16> Not really. Zynga isn't failing because they were screwed by a Facebook policy change or really anything Facebook themselves are doing (unlike, say, Twitter's recent API brouhaha), but because of their business model. AznHisoka in this thread said it better than I can; they have nothing to build a business on.

<comment><USER15> Facebook changed their platform right underneath them.

</comment></comment></comment><comment><USER17> Well that was completely unexpected...

Said no one ever.

</comment><comment><USER18> I don't understand why the market reacted negatively to this news. There are a number of positives:

-They don't have to use FB credits -They don't have to use anything FB on Zynga.com -They got a guarantee if their is real-money gaming on FB.com, they have to be allowed in

So what if FB can now make their own games? They aren't going to.

</comment><comment><USER19> good fuck you zynga. My first taste of their shitty ways, was just the other week. lidgren - is the best open networking library available for indie gamers and this fuck, goes and duplicates the code base, re-releasing it on a separate source control site. THEN he mails the group, including the author, asking for permission.

After hearing about this, the author understandably is concerned about splitting the dev hub of his code across multiple sites, and its community, culminating in him saying this is not a good idea.

The stupid fuck, replies saying he already has done it, and matter of factly states it is getting quite popular.

Community hits back, tells him it is detrimental to everyone, and asks him to take it down. Eventually after a few days of building pressure, he does.

I was curious, did a little research. Turns out the dickhead was an important dev from Zynga.

I have omitted names.

Fuck Zynga.

<comment><USER20> Its understandable that you don't like zynga but this post isn't constructive. In general terms rant != cool.

<comment><USER21> Also, as far as I can tell the license is MIT so he can pretty much do whatever the hell he wants with it. Open source goes both ways.

<comment><USER19> the point of the rant is that he was a dick

<comment><USER22> I feel you, but there's some serious dicks in the open source community as well. It seems the same behaviors somehow have different meaning if they're attached to a company that it's popular to dislike.

<comment><USER22> See my comment got down voted, and rereading it, I can see why. I wasn't saying that all that everyone in the open source community is a dick, but rather, a person can be a dick no matter who they work for. Nothing intrinsic about who they work for, or whether they're part of the OSS community. However, there seems to be a confirmation bias when it's a company we're predisposed to dislike.</comment></comment></comment></comment></comment></comment>


The End of Scientific Linux - <AUTHOR> https://lwn.net/Articles/786422/ <comment><USER2> The article doesn't do it justice, so I decided to search for it on Wikipedia: [https://en.wikipedia.org/wiki/Scientific_Linux](https://en.wikipedia.org/wiki/Scientific_Linux). Basically it's just a Red Hat Enterprise Linux derivative that's consistent across computers to make maintenance useful. It also has a cute set of version names based on atomic number.

<comment><USER3> > It also has a cute set of version names based on atomic number.

This reminds me of my favorite lab numbering scheme. Each computer in the lab is assigned an element name, with the last byte of its assigned IPv4 address being its atomic number.

So if your machine were `cobalt` your IP would be 192.168.0.27, If it were `oxygen`, 192.168.0.16, etc.

<comment><USER2> "Glenn, we need you to find another transuranic element again…someone added a new machine to the network"

<comment><USER4> You could add another class 'C' and start naming the networks by the elements and the hosts by the chemical compound resulting!

<comment><USER5> yeah just grow them organically

</comment></comment></comment></comment></comment><comment><USER6> I have been to several synchrotrons, central facilities. Most had stock install of centos (whatever stable on that day). All user software was always installed in a nfs mounted /soft/+++ so that everyone could source it and use it. These days many of them are moving to 'xubuntu' (mainly avoiding the unity+gnome3 mess). Many of sci-devs are using ubuntu as their daily driver - so getting the latest python (bio), or math package, is newer in *ubuntu.

<comment><USER7> > These days many of them are moving to 'xubuntu' (mainly avoiding the > unity+gnome3 mess).

Wouldn't Debian work a bit better and come with a better long-term stability policy? It seems strange to rely on the *buntus unless you're specifically relying either on proprietary software that's Ubuntu-targeted, or commercial support from Canonical. (But there are some spaces, e.g. GPGPU compute, where either of these might be relevant and Debian still has quite a bit of work to do before it can be relevant.)

<comment><USER8> > Wouldn't Debian work a bit better and come with a better long-term stability > policy?

Both have 5y LTS support?

<comment><USER9> Ubuntu 18 is getting 10 year LTS support.

</comment></comment></comment></comment><comment><USER10> I first learned how to operate and administer Linux-based operating systems with Scientific Linux 3 when I helped setup the tier II compute site for the WLCG (called LCG at the time) at my alma mater.

SL was, at the time, a thin-ish veneer around RHEL that included some additional packages to make using and installing some very common HEP tools (ROOT, GEANT, etc.) more palatable to academics that didn't have the time nor the fortitude to deal with the nightmares of installing raw RPMs.

It was my first foray into the world of linux, and it was both a nightmare and a blessing. I probably owe most of my current career to the hacking I did back then.

Much of the usefulness of SL (and most specialty/drivatives of RHEL) have faded over time, but I'll always be thankful for the people that put time and effort into a very thankless job so that HEP physicists around the world could have one less thing to worry about and focus just a bit more time on the science.

</comment><comment><USER11> To me this looks like a success story: mainstream linux distros have caught up to where SL was, or close enough, so that the marginal benefit of maintaining SL is wearing thin. Maybe they are even surpassing SL in some areas.

</comment><comment><USER12> So CERN is dropping Scientific Linux and putting their efforts into CentOS. Will this make it "upstream" into RHEL or even Fedora?

<comment><USER13> CERN started transitioning to CentOS several years ago. SL was a Fermilab Computing product at this point. I also personally switched from SL to CentOS on my workstation years ago (partially because it took so long for SL7 to come out) .

</comment></comment><comment><USER14> Even for scientific uses on Infiniband clusters, we used Rocks (which deploys CentOS or RHEL). There wasn't a compelling advantage to using SL, except the year or two about a decade ago when CentOS was in chaos.

</comment><comment><USER15> I see SL quite widely used in research computing. People tend to stick to one of its point releases corresponding to RHEL initial releases plus security updates of some sort (e.g. 7.1 round here).</comment>


Project Solum (Openstack + docker) - <AUTHOR> http://solum.io/#

<comment><USER2> Every time I see anything about OpenStack, it starts by listing all the companies that are backing it, and nary an example of how to start using it and what it does.

Compare that to, say, AWS, which when I first heard of it, I saw example of their cli commands starting and stopping VMs.

Maybe all this is meant to be marketing material for some other beast than me, the lowly developer.

<comment><USER3> I run [http://sysadmincasts.com](http://sysadmincasts.com) and I am about to do an "Into to AWS" and an "Into to OpenStack" series. These will address the very issue you describe, because I 100% agree with you, there is next to zero screencasts about what you can actually do with OpenStack (there are many, "here's how to install OpenStack" posts, but, what about once you have it installed?!), I also feel the same about AWS, in that, there seems to be a need for specific howtos which are easily consumable.

Email me (see my profile), and I'll send you a note when I have a couple episodes about OpenStack/AWS.

ps. if anyone has some specific topics they would like me to cover, please let me know!

<comment><USER4> I want to look at giving every student at our school a VPS and I think something like openstack is the way to do it, I'll be hotly anticipating said casts.

I have no idea what I need yet.

<comment><USER5> At Bloomberg, we've open-sourced our Chef recipes used to build our OpenStack environment. I'm guessing concrete examples like this are what you're looking for.

[https://github.com/bloomberg/chef-bcpc](https://github.com/bloomberg/chef- bcpc)</comment></comment></comment></comment>


Bob Widlar – The Life of an Engineering Legend - <AUTHOR> https://www.autodesk.com/products/eagle/blog/bob-widlar-life-engineering-legend/ <comment><USER2> You don't see ads like this today:

[https://www.autodesk.com/products/eagle/blog/wp- content/uplo...](https://www.autodesk.com/products/eagle/blog/wp- content/uploads/2017/10/national-ad.jpg)

</comment><comment><USER3> I'm guessing this is the guy who invented the Widlar current mirror?

For anyone wondering ICs need accurate current sources to drive transistors etc and large resistors take up loads of space and vary a lot with temperature so hence so are very expensive to manufacturer, hence why current mirrors are used all over the place. In fact the 1st stage of an op-amp is usually a current mirror.

</comment><comment><USER4> The guy was a serious eccentric who's wild antics are the stuff of legend. Just google for some of his images and you'll get a full sense of how out there this guy was. Bob Pease even corobberated a lot of these so they are more true than legend. Though he apparently was a master at his craft. Pease recounted how Widlar would disappear into mexico following some bohemian crowd for many months, come back to work and design a revolutionary circuit, get paid big bucks and disappear again like a wizard. True genius.

<comment><USER5> I remember how in undergrad, my Circuit Theory professor who studied at Boulder and also worked at Ball Brothers would corroborate the myths of Bob Widlar. They were contemporaries, and my professor really emphasized his insane output and work ethic. He recounted how Widlar would routinely disappear in bar crawls for 3-4 days, and then return to ace his exams. While many of Widlar's actions might not have been exemplary, his contributions to modern IC's is still pretty underrated.

</comment></comment><comment><USER6> I'd never heard of Bob Widlar before, but it's great to see someone praised for significant innovation in an esoteric field. It's great to see such specialized work appreciated. It's also interesting, and kind of weird, to see a giant of Silicon Valley engineering design whose education was primarily "home grown," as contrasted with the highly academic engineers of today.

<comment><USER7> Widlar, Bob Pease, and Jim Williams are all worth reading about if you're not familiar. Bigwig semiconductor designers from a bygone age.

There are some great application notes by Jim Williams from his time at Linear Tech if analog design application notes are your thing.

<comment><USER8> My favourite Bob Pease article, about being extremely methodical in the measurement of small currents: [https://www.electronicdesign.com/test-amp- measurement/whats-...](https://www.electronicdesign.com/test-amp- measurement/whats-all-femtoampere-stuff-anyhow)

Someone has a "best of" Jim Williams: [http://readingjimwilliams.blogspot.com/p/best-app- notes.html](http://readingjimwilliams.blogspot.com/p/best-app-notes.html)

Some while ago I wrote a blog post about how fantastic app note 47 was; very much "nothing like this will be built again". For its unassuming title it is a more instructive read than quite a lot of books on opamps.

<comment><USER7> AN-47 is a master work.

</comment></comment></comment></comment><comment><USER9> Best use ever of the slogan "I'd rather fight than switch".</comment>


Show HN: Luapress v3 – simple and fast static site/blog generator - <AUTHOR> http://luapress.org <comment><USER2> The site is self-hosted; see the source here: [https://github.com/Fizzadar/luapress.org](https://github.com/Fizzadar/luapress.org)

<comment><USER3> It loads and scrolls fast, too. The web is getting slow and bloated to the point that on older machines I notice this difference.</comment></comment>


Ask HN: Tips for improving mental word retrieval? - <AUTHOR> I suffer from words being at the "tip-of-my-tongue" often. I know the basic definition of what I'm trying to say, but I just can't bring up the word I want to say fast enough. I sometimes talk in a staccato rhythm as I'm seeking for the right word to say. I may use a wordy sentence around the point, or a complex GRE-level vocabulary word, instead of the succinct word that I could've used.
Have any of you had this and improved your word retrieval? Are there mind exercises I can use to improve this? "Aphasia" seems to be the closest term, but I feel that is lot more severe and against a simpler vocabulary. And regardless, are there ways to strengthen word retrieval to be a more fluent or clearer speaker?
I don't know if I've addled my brain by being so reliant on auto-correct, if the majority of my communication being written (email/chat) has softened my speaking ability, or if this is just aging. Or perhaps I shouldn't have eaten ground beef in the UK 20 years ago.
Any tips would be appreciated! <comment><USER2> It seems to me that you are going through a path.

You have discovered that you can be clearer in the communication if you can articulate better and use more precise words.

You are getting the hang of it. I don't think it's a matter of just remembering the words as much as it is about improving your thinking.

Keep actively thinking about how to be more articulate and also practicing and you will get better and better everyday.

Like everything else in life, it's a matter of practice.

<comment><AUTHOR> I explained my problem in a confusing way. The main problem is solely that I can't find the word I want to say. Normally, I'd just freeze up and just keep racking my brain for the right word, but my coping mechanism has been finding a related word or phrase to keep the communication going.

But, you mention practicing. What do you think is the activity to practice? Are there tests/games/exercises that strengthen that part of thinking you know of?

<comment><USER2> I believe I'm going through the same journey as you are and what I use as practice is:

\- Before getting into a meeting when I'm expected to present information I run all the talking points (and expected questions) and think through how I will explain it using the least amount of words \- Whenever writing an email I do the same process. Write the draft version and look for sentences where I think I can replace a sequence of words for a single one. Rinse and repeat until the email is a short as it can be

Both activities will force me to search (and recall) words that didn't come to me at first. After using the same words a few times they will get stuck in my brain and come more naturally the next time. If you keep repeating the process eventually you will become more articulate and communicate more clearly

</comment></comment></comment><comment><USER3> One thing that might help is reading; so you know more words (eg synonyms for words I you can't retrieve). You also can try to imagine how word is written and then I "read" it from visual memory - it could take longer but should do the trick.

I read that that kind of problems can be connected with communication between broca and wernicke areas in brain.

Good luck:)

</comment><comment><AUTHOR> Some things I have thought about looking into:

* Reading aloud text in a very quick speed. Maybe I need more practice in just brain-to-mouth coordination?

* Flash card style training, from just words to even actor headshots (because that feeling of "I know that person but I can't remember their name" is a similar feeling).

* Just speaking more, maybe getting into VR Chat or something similar.</comment>


New fastest portable hash: wyhash - <AUTHOR> https://github.com/rurban/smhasher/ <comment><USER2> Here's a link to wyhash itself: [https://github.com/wangyi- fudan/wyhash](https://github.com/wangyi-fudan/wyhash)

<comment><USER3> Maybe the link could be updated to point to this instead?

<comment><USER4> Yeah the submitter didn't link to wyhash, they linked to their own project...without the title there'd be no context here. SMHasher is well known (at least the original Google project is, maybe not this fork), but why not just submit wyhash directly? There's no explanation of how wyhash works here, and I can't find a paper.

</comment></comment></comment><comment><USER5> I would love for this to be solid, but something here seems too good to be true. Modern hashing is well-studied, with lots of smart people attacking the problem. Modern hashes like Google's FarmHash are thousands of lines of code with platform-specific intrinsics for acceleration. This hash claims to beat other modern hashes in speed, without using platform-specific intrinsics, and without quality problems, and in a mere 100 lines of code to boot.

I would love for this to be true, but I'd love to see a more thorough explanation of how it manages to be both smaller and faster than other competing hashes.

<comment><USER6> _I would love for this to be solid, but something here seems too good to be true._

How so? It's much slower than AES based hashes. It's about the throughput same as xxHash64. It uses fewer cycles/hash than xxHash64.

<comment><USER5> > It's much slower than AES based hashes.

I must have misinterpreted the following:

> So the fastest hash functions on x86_64 without quality problems are: > > \- > wyhash > \- t1ha > \- [...]

I interpreted that to be an ordered list, saying that wyhash was the fastest.

But looking at the actual table I am confused. There are MB/s numbers and cycles/hash numbers. In cycles/hash wyhash appears to beat all FarmHash variants, but in MiB/s it is slower than some of them. I don't understand why these two performance measures would not track perfectly, since the CPUs should be running a constant number of cycles/second.

<comment><USER6> _I don 't understand why these two performance measures would not track perfectly, since the CPUs should be running a constant number of cycles/second._

x86 isn't RISC and not all operations take the same number of cycles. Also, the code might have different levels of possible parallelism and might impact the pipeline differently.

Comp Sci education for the low level basics is often completely neglected nowadays. This should be freshman year stuff. I'm certainly not an expert, myself, just familiar with the issues. (Know enough to know what you don't know.)

<comment><USER5> > x86 isn't RISC and not all operations take the same number of cycles.

Yes but it doesn't say _instructions_ per hash, it says _cycles_ per hash. Unless some kind of frequency scaling is going on, the number of cycles per second should be very consistent. If bytes/hash is held constant and cycles/second is constant, then MiB/second and cycles/hash should be exact inverses. I don't understand why this is not the case in these tables.

> Also, the code might have different levels of possible parallelism and might > impact the pipeline differently.

Again this can affect the number of instructions being retired, but not the number of cycles. A cycle is a cycle, regardless of how much work is actually being accomplished.

> Comp Sci education for the low level basics is often completely neglected > nowadays. This should be freshman year stuff.

I'm a low-level junkie who lives in godbolt.org and Agner Fog's tables, writes JIT compilers, and does FPGA design for fun on the side. It's possible that I'm mistaken here, but I do have a fair amount of background in this.

<comment><USER7> I wonder if the first number is sustained, pipelined rate for big values, and the second number is cycles for the first iteration, still assuming everything is in L1 cache.

Those would be the useful numbers.

</comment></comment></comment></comment></comment></comment><comment><USER3> The small key performance is very nice. It would be good to have more written about this new hash function, and less misinformed rant about siphash.

<comment><USER8> For someone who isn't following the hashing function 'scene', what's misinformed about this rant?

<comment><USER3> Most of his arguments simply do not apply to the relevant use case and attacks. The only one that does, the claim that the seed is recoverable, is not an argument at all but a vague, unsubstantiated claim.

</comment></comment></comment><comment><USER9> From what I see Farmhash is still faster on IA32/AMD64 architectures (although they need to leverage the AES instruction for that, granted).

<comment><USER10> Algorithms using AES intrinsics are generally fastest at all key sizes now. For small keys, the AquaHash[0] algorithm is extremely fast, and several algorithms (e.g. MeowHash[1] and the aforementioned AquaHash) are essentially at the hardware limits for large keys. Algorithms like wyhash are useful for things like embedded CPUs without AES support, but if you are targeting x86/ARM then AES is often a better choice.

[0] [https://github.com/jandrewrogers/AquaHash](https://github.com/jandrewrogers/AquaHash) [1] [https://github.com/cmuratori/meow_hash](https://github.com/cmuratori/meow_hash)

</comment></comment><comment><USER11> I'd really like to see progress on hashes that fit into a few lines of code. It seems FNV-1a is still the best option in that regard.

<comment><USER12> If this is all there is to it: [https://github.com/wangyi- fudan/wyhash/blob/master/wyhash.h](https://github.com/wangyi- fudan/wyhash/blob/master/wyhash.h)

That doesn't seem like much.

<comment><USER5> Agreed, if that's the whole hash function I think small code size is a selling point of this hash compared with other modern fast hashes.

This hash function looks like it will do unaligned reads if you're hashing an unaligned string. This doesn't matter on x86, but portable code should avoid this. It would be helpful to have a wrapper function that could handle unaligned strings by special-casing the begin and end of buffer.

</comment></comment></comment><comment><USER13> > SipHash is not secure enough for security purposes and not fast enough for > general usage.

I beg your pardon? The author seems very confused.

<comment><USER14> Oof.

To expand on this, SipHash is designed to mitigate a certain kind of DOS attack. It's not a cryptographic hash. SipHash will still be a top choice for general purpose hashing with inputs that can be chosen by an adversary.

</comment></comment><comment><USER15> [https://github.com/switch33/sha2592](https://github.com/switch33/sha2592) something I just coded wondering how it measures up.

and i made another one too: [https://github.com/switch33/sha29893](https://github.com/switch33/sha29893)

and a third one: [https://github.com/switch33/sha5987](https://github.com/switch33/sha5987)

and an even better one: [https://github.com/switch33/sha2999999](https://github.com/switch33/sha2999999)

and maybe the best for quite some time: [https://github.com/switch33/sha130000000-](https://github.com/switch33/sha130000000-)

</comment><comment><USER16> >The fast hash functions tested here are recommendable as fast for file digests and maybe bigger databases, but not for 32bit hash tables.

Do people really try to optimize file hashing this way?

</comment><comment><USER17> To me, the most interesting part:

>> Even if [...] worse hash functions will lead to more collisions, the overall speed advantage beats the slightly worse quality.

<comment><USER18> I'm not sure if that part is correct. If I use something like SHA1 or MD5 (yes, I know they're no longer considered secure), __know __with essentially 100% certainty that I will not get a collision. This means I don 't have to implement chaining, quadratic probing, or another method of collision avoidance. Though it might cost some speed on the end use of the app, it's often easier for initial development because I simply have to write less code.

Maybe a more experienced dev can comment on this? Still learning here, and haven't spent time in a lot of large codebases.

<comment><USER17> The strong collision avoidance guarantee is mostly a result of the large space of hashes those functions generate. So, yes, if you have a hashmap with 2^128 slots, you're technically right. But you don't have a hashmap with 2^128 slots. So you have to smash that output space into a smaller space somehow. And then you're back to considering what to do when you have collisions.

</comment></comment></comment><comment><USER19> Not an expert, would have thought that collision avoidance would be the most important criteria.

<comment><AUTHOR> Not in hash tables. There the smaller, the faster. The selection criteria is: not bad (not failing any test), small and fast. Esp. it needs to be inlinable.

There will always be collisions on dynamic workloads. Otherwise you would choose perfect hashes. In the usual programming language case SPOOKY32 has the least collisions, and is pretty fast too. But it has no chance against the small hash functions.

The smhasher speed test doesn't tell you which hash will be the fastest in a hash table with small key lengths, only when used as digest. e.g. for bigger files, db or network blobs. The icache footprint in comparison to all the hash table code is very important.

<comment><USER20> > Not in hash tables. There the smaller, the faster. The selection criteria > is: not bad (not failing any test), small and fast. Esp. it needs to be > inlinable.

Can you explain why? Like what use cases are there where you don't actually care how likely something is to collide, you just want it to be fast?

I've always thought being able to predict the chance of collision to be the most important factor on a hasher. When is it not?

<comment><USER21> First off, for small tables, you always take the hash value modulo some small number like 10000. Who cares how good the hash function is, if you end up with 1/10000 chance of collision in the end anyway? Speed is obviously more important in this setting.

Second, assume very large hash tables...assume that with noncollision using the data structure takes time T1(H) and with collission it takes T2(H) for hash function H, and that the probability of collision is P(H).

So your total cost is then

P(H) T2(H) + (1 - P(H)) T1(H)

Which is approximately

P(H) T2(H) + T1(H)

Easy to play with numbers so that a worse but cheaper hash has a lower total cost. In fact this will usually be the case I would expect... T2 is multiplied with P and disappears for all but the very worst hashes/extremely expensive T2

</comment></comment></comment></comment><comment><USER22> For security porpose, i thought -> slower performance = better.

This would delay rainbow tables

<comment><USER9> These kind of hashes are used for hash tables, where you want a good compromise between speed and low collision probability. They can also be used as checksums to detect accidental data modification.

They are not meant for cryptographically strong fingerprinting.</comment></comment>


T. Rowe Marks Down Dropbox Stake 51% - <AUTHOR> https://www.theinformation.com/t-rowe-marks-down-dropbox-stake-51 <comment><USER2> Maybe this correction in valuation will finally compell DropBox to do more to secure users data. Until they wake up and realize people are starting to show they do care we will see more attrition to their share price.

In the meantime there is [http://www.sookasa.com](http://www.sookasa.com)

</comment><comment><USER3> _crickets_</comment>


Greplin's (YC W10) Social Search Opens Its Doors To All - <AUTHOR> http://techcrunch.com/2011/02/16/greplins-social-search-opens-its-doors-to-all/

<comment><USER2> This sounds great, but I'm a little wary of giving a single service (especially a small new startup) access to so much private data.

They do get points for requiring HTTPS and using OAuth instead of asking for passwords, though.

I think I'll start with the low risk accounts like Twitter and LinkedIn for now.

</comment><comment><USER3> I like what Greplin is trying to _do_ , but I wont sign up for an account. I am uncomfortable authorizing one service to access so many of my accounts.

Edit: Greplin doesn't request usernames or passwords. I updated my comment accordingly.

<comment><USER4> We don't actually store usernames and passwords. We're all OAuth, all the time, and you're welcome to revoke access whenever you like. We'll also delete _all_ of your data as soon as possible when you ask us to.

<comment><USER3> Do you encrypt data? If your servers are compromised, will someone have access to all of my emails?

Even if that is the case, I might be more comfortable using Greplin if I knew more about your security practices. What procedures are in place to prevent my emails from being stolen?

Edit: I hate being the one to criticize an incredible idea that is the result of hard work. I feel obligated to add that I _want_ to use Greplin and I probably will use it for Facebook and Twitter. (Facebook's built-in search is useless.) I really hope there is a way that I can use this for email too.

<comment><USER5> Personally, I find GMail's inbuilt search hard to beat. Its almost perfect. But I've used Greplin for Facebook (that's the only thing that I'm using Greplin for), and I find it to be an amazing service.

<comment><USER6> Doesn't Facebook already have a search feature?

<comment><USER5> Its fairly limited, feature-wise.

</comment></comment></comment></comment></comment></comment><comment><USER7> I signed up, and Greplin finally finished indexing my data (it took a few days). However, a big minus for me is that Greplin doesn't search Gmail chat logs, and it doesn't disclose that until I searched through the FAQs. I hope they're able to add that soon.

<comment><USER8> My indexing only took a couple of hours. I also quickly discovered to my dismay that GMail chat logs aren't indexed.

</comment></comment><comment><USER9> Great concept and execution! I've had the same idea for years but thought Google would launch this sooner or later. Love that it was launched with a business model as well.

Some feedback:

* I would be able to search local files as well. Dropbox is a great start but I want all of it ;)

* The UI have some neat features (love the interactive graphics on the upgrade page!) but overall it has to be improved a lot. Better graphics, better search result page, typography and especially all the buttons.

* Another way of monetizing the idea is to have partnerships with backup services. Affiliate deal or whatever. Since the user want the content searchable, they probably want backup of it as well.

</comment><comment><USER10> Nice integrations.... Any plans to include web search? I don't see myself adopting the behavior of having to think to go to google for web search or greplin for non-web search. Search is search. If I have to go somewhere else, I imagine I'd likely visit the actual destination (FB, Twitter)... Thoughts?

<comment><USER11> I can envisage a chrome extension that would embed greplin results within your organic google results...

Infact i have already asked for API access, heh.

</comment></comment><comment><USER12> Just signed up for every service except Facebook. While Facebook would be probably the most useful service to have enabled, it's really hard to justify turning on the Facebook applications platform for any reason.

</comment><comment><USER13> Good luck for them, the service seems nice.

</comment><comment><USER14> The "autocomplete your life" slogan at the end of the video puts a smile on my face</comment>


Google Chrome crashing [crash] - <AUTHOR> http://biome3d.com/%%30%30 <comment><USER2> Wow. When I _hover_ over the link, my tab in Chrome crashes. I assume this is caused by some pre-fetching stuff.

Any explanation of what's going on here? I can't exactly view the link...

</comment><comment><AUTHOR> I added the [crash] tag to make it clear what will happen.</comment>


OAuth signature methods - and why HMAC-SHA1 signing sucks. - <AUTHOR> http://www.gnegg.ch/2008/08/oauth-signature-methods/

<comment><USER2> You are correct in preferring a public-key signature scheme to a shared-secret scheme. While a correct implementation of HMAC-SHA1 should resist forgery as well as RSA-SHA1, there are numerous drawbacks to shared-secret schemes in general that you noticed.

Another weakness in OAuth with RSA-SHA1 in the section you cite is that you have to implement your own PKI or other scheme for validating the source of RSA public keys. Like so many other specs, it punts on this hard issue.

<comment><USER3> If you are lucky enough to control both the server and client then this isn't a big deal. You can just distribute the public key along with your client SDK. Granted, this is a specific case.</comment></comment>


Google's robots.txt - <AUTHOR> http://www.google.com/robots.txt <comment><USER2> Curious as to why someone sat down and added this line to that file:

      Allow: /maps?hq=http://maps.google.com/help/maps/directions/biking/mapleft.kml&ie=UTF8&ll=37.687624,-122.319717&spn=0.346132,0.727158&z=11&lci=bike&dirflg=b&f=d

<comment><USER3> [https://www.google.com/search?num=100&site=&source=hp&q=http...](https://www.google.com/search?num=100&site=&source=hp&q=https%3A%2F%2Fwww.google.com%2Fmaps%3Fhq%3Dhttp%3A%2F%2Fmaps.google.com%2Fhelp%2Fmaps%2Fdirections%2Fbiking%2Fmapleft.kml%26ie%3DUTF8%26ll%3D37.687624%2C-122.319717%26spn%3D0.346132%2C0.727158%26z%3D11%26lci%3Dbike%26dirflg%3Db%26f%3Dd&oq=https%3A%2F%2Fwww.google.com%2Fmaps%3Fhq%3Dhttp%3A%2F%2Fmaps.google.com%2Fhelp%2Fmaps%2Fdirections%2Fbiking%2Fmapleft.kml%26ie%3DUTF8%26ll%3D37.687624%2C-122.319717%26spn%3D0.346132%2C0.727158%26z%3D11%26lci%3Dbike%26dirflg%3Db%26f%3Dd&gs_l=hp.3...6256.6256.0.6722.214.171.124.0.0.0.0.0..0.0....0...1c.1.35.hp..1.0.0.rCg1jO0B9q4)

Turns up three results in google. Very weird indeed.

</comment></comment><comment><USER4> See also: [http://www.google.com/humans.txt](http://www.google.com/humans.txt)

<comment><USER5> This doesn't work if you are using HTTPS everywhere.

<comment><USER6> Weird, it works for me. Iceweasel Aurora / HTTPS Everywhere 4.0-dev

<comment><USER7> I second this. Latest Chromium.

</comment></comment></comment></comment><comment><USER8> Mine is more awesome: [http://logotype.se/robots.txt](http://logotype.se/robots.txt)

<comment><USER9> Heh, if only Yandex and Baidu respected robots.txt.

<comment><USER10> I've found this GitHub project to be an invaluable resource for blocking bad bots: [https://github.com/bluedragonz/bad-bot- blocker](https://github.com/bluedragonz/bad-bot-blocker)

<comment><USER11> _> Unless your website is written in Russian or Chinese, you probably don't get any traffic from them. They mostly just waste bandwidth and consume resources._

THIS is evil. You could use this argument for banning any new search engine.

<comment><USER12> What "new search engine" has actually generated actual revenue for any webmaster in the past ten years? You could argue DDG but that's the only one I can think of.

<comment><USER13> I think DDG primarily uses Yandex. They at least often put a "Powered by Yandex" logo along the side.

</comment></comment></comment></comment></comment></comment><comment><USER14> What a weird entry...

[https://www.google.com/maps?hq=http://maps.google.com/help/m...](https://www.google.com/maps?hq=http://maps.google.com/help/maps/directions/biking/mapleft.kml&ie=UTF8&ll=37.687624,-122.319717&spn=0.346132,0.727158&z=11&lci=bike&dirflg=b&f=d)

<comment><USER15> is it a map focused on SF that highlights bikings paths?

<comment><USER14> Looks like it? Very weird

</comment></comment></comment><comment><USER16> [http://www.google.com/baraza/en](http://www.google.com/baraza/en)

What a weird little product. It's like Yahoo Answers, but somehow with even less sorting or categorization.

<comment><USER17> 'baraza' is Swahili for forum/meeting place. It was very much Yahoo Answers, targeted at the African market - here in Kenya, most people only have internet access via mobile connections, often using feature phones, hence the minimalistic stylesheet.

Baraza never really took off.

More about it here: [http://whiteafrican.com/2010/10/05/google-baraza-qa-for- afri...](http://whiteafrican.com/2010/10/05/google-baraza-qa-for-africa/)

</comment></comment><comment><USER18> Glassdoor uses its for recruiting: [http://www.glassdoor.com/robots.txt](http://www.glassdoor.com/robots.txt)

<comment><USER19> Why would they disallow all their about content? (Bit of an SEO noob).

<comment><USER20> Over-simply, because they do not want to indicate that their site is about those pages, for whatever reason.

In practice, I'm not entirely sure but it looks like it's quite old since those pages don't seem to exist anymore, even as folders which don't exist as pages in themselves, and they aren't 301-redirected to the current relevant pages.

In fact, they're all 404's. So perhaps they used to be pages, were deleted, and kept being crawled which made their site look crap (because of the 404's). Now they could use 301's, but I assume that the reason they didn't is because they might want to restructure the site in the future and re-use those pages. They don't use 302's because 302's are unreliable and freaky.

Does that sound right to everyone else?

<comment><USER21> These guys are the best white-hat SEO growth hackers on the planet, just copy them and don't question it.

<comment><USER20> Oh, I wasn't questioning them - just asking if my assessment sounded right.

</comment></comment></comment></comment></comment><comment><USER22> Unrelated but it looks like www.aol.com's robots.txt is served as text/html [http://www.aol.com/robots.txt](http://www.aol.com/robots.txt)

Is this a common mistake?

<comment><USER23> It just issues a "HTTP/1.1 302 Moved Temporarily" directed to their homepage. Requesting an invalid file such as "robots.txtsdfa32r523" has the same effect, so they probably don't have a robots file at all.

<comment><USER24> Huh? No, it is a regular robots.txt file

<comment><USER25> It redirects requests from the UK.

</comment></comment></comment></comment><comment><USER26> I remember when this used to be a source of product leaks.

<comment><USER27> And now it is an archive of discontinued products.

</comment></comment><comment><USER28> Yelp's is fun: [https://www.yelp.com/robots.txt](https://www.yelp.com/robots.txt)

</comment><comment><USER29> facebook's...

[https://www.facebook.com/robots.txt](https://www.facebook.com/robots.txt)

<comment><USER30> That really blows my mind. I mean, how can they say that's any kind of "agreement"?

I someone writes a curl/wget script wrapper & points it to the top 10 websites, they don't enter into any kind of written contract or agreement.

<comment><USER31> You're quoting "agreement" as if its literally in their robots file. It's not.

They're telling the public that it does not have permission to crawl the site which try have the right to do. What is the problem with that?

<comment><USER32> What is the point of having such silly prohibition? It's silly because anyone can crawl it if they want, Facebook may block such DDoS attack, but why would they bother to put up such sign when they know it's useless?

<comment><USER31> They have such a large network, anything they could do to prevent unwanted crawling is probably helpful.

</comment></comment></comment></comment></comment><comment><USER33> Yelp has rules set for the robots: [http://www.yelp.com/robots.txt](http://www.yelp.com/robots.txt)

</comment><comment><USER34> There are only 602 pages of Google.com indexed on Google.com, mostly 'plus' profiles. Quite a few show with this message:

A description for this result is not available because of this site's robots.txt – learn more.

Which is odd.

<comment><USER35> Google will still index pages blocked by robots.txt, it just won't crawl them (so it can't get a description/preview snippet). It indexes them based on the URL and how people link to them.

</comment></comment><comment><USER36> 404 for [http://www.gstatic.com/trends/websites/sitemaps/sitemapindex...](http://www.gstatic.com/trends/websites/sitemaps/sitemapindex.xml)

</comment><comment><USER37> Wikipedia's robots.txt is quite verbose: [http://en.wikipedia.org/robots.txt](http://en.wikipedia.org/robots.txt)

<comment> iso8859-1 Because it's part of the Wiki: [https://en.wikipedia.org/w/index.php?title=MediaWiki:Robots....](https://en.wikipedia.org/w/index.php?title=MediaWiki:Robots.txt&action=history)

</comment></comment><comment><USER38> Apple allows robots access to everything! [http://www.apple.com/robots.txt](http://www.apple.com/robots.txt)

<comment><USER39> If you're big enough, doesn't this just make sense? Why waste time maintaining a robots.txt policy when it must represent a tiny fraction of your traffic, which your servers can surely handle? And the really 'bad' guys are going to ignore it anyway. And if you really care, you'll have some much more sophisticated bandwidth throttling in place.

For the smaller guys, sure it makes sense to have some kind of simple robots.txt policy.

<comment><USER40> Thats not quite true. Apple has multiple subdomains, each for some part of their site. www.apple.com hosts most of the marketing stuff, but have a look at other pages, e.g.: [http://store.apple.com/robots.txt](http://store.apple.com/robots.txt)

</comment></comment></comment><comment><USER41> Checkout youtube.com/robots.txt !

<comment><USER42> For the lazy: [http://www.youtube.com/robots.txt](http://www.youtube.com/robots.txt)

<comment><USER43> And for those who don't know the reference: [http://www.youtube.com/watch?v=WGoi1MSGu64](http://www.youtube.com/watch?v=WGoi1MSGu64)

</comment></comment></comment><comment><USER44> A lot of these are 404's. It kinda makes me wonder what was behind things like /c/

</comment><comment><USER45> taobao.com has the shortest robots.txt [http://www.taobao.com/robots.txt](http://www.taobao.com/robots.txt)</comment>


Show HN: Editable, royalty-free SVG illustrations - <AUTHOR> https://gallery.manypixels.co <comment><USER2> Thank you.

Also for those who don't know already, unDraw [1] offers a similar collection.

[1]: [https://undraw.co/](https://undraw.co/)

</comment><comment><USER3> I don't see a license in the page, and "Use them in a commercial or non- commercial way for your landing pages" unfortunately isn't enough to state the extent for their copyright use.

SVG is a really cool format since you can easily change the colors of certain elements with your SVG editor to make them unique. This website even has a color selector next to the search field for choosing the root color.

<comment><AUTHOR> Just updated our gallery with our license -> [https://gallery.manypixels.co/license](https://gallery.manypixels.co/license)

<comment><USER4> Isn't this just public domain? Why not use an existing license like Creative Common Zero if that's what you're going for.

Edit: Never mind. I saw the compilation term.

</comment></comment></comment><comment><USER5> > […] More precisely, ManyPixels grants you an nonexclusive, worldwide > copyright license to download, copy, modify, distribute, perform, and use > the assets provided from ManyPixels for free, including for commercial > purposes, without permission from or attributing the creator or ManyPixels. > This license does not include the right to compile assets, vectors or images > from ManyPixels to replicate a similar or competing service, in any form or > sell the assets in packs. […]

I don't understand the license [1]: how can it prohibits me to e.g. compile assets to resell them and at the same time allow me to do whatever I want without asking permission from ManyPixels?

[1]: [https://gallery.manypixels.co/license](https://gallery.manypixels.co/license)

<comment><USER6> Because that's the terms of the license. You can use it as long as you don't commercially profit from the freebie. More than reasonable to me.

<comment><USER7> > without permission from or attributing the creator or ManyPixels

So as one "work" publish the items with a less restrictive license. And as a second "work" publish your compilation of the first work.

</comment></comment></comment><comment><USER8> To my eyes, it's not quite clear if these are free or not. Royalty free in some cases might mean pay one time and then not any more for future applications. Are they free?

</comment><comment><USER9> There's another link to undraw but are there any more places to find stuff like this? Paid or free? I was recently looking for an svg shape library purely for decoration but couldn't find anything.

<comment><USER10> There's always Openclipart: [https://openclipart.org/](https://openclipart.org/)

The downside is, of course, the wildly varying style and quality, which means that finding the good images can require sifting through lower-quality content. But at least to me, that's often more useful than a comparatively tiny selection of consistently high quality art which probably just isn't going to have what I'm looking for. They also are using straightforward CC0 terms, which is always a plus compared to custom licenses.

</comment></comment><comment><USER11> Notices "Please use modern navigator" everywhere instead of pictures.

Should be "Please use not-so-modern, with privacy features disabled, ready to consume ads user-hostile browser"

<comment><USER12> Firefox with content-blocking enabled works fine. Not sure what you mean.

<comment><USER13> The site uses XHR to pull from media.graphcms.com in order to display the images. When this fails it instead displays the message "please use modern navigator" in place of each image. For me, uMatrix was blocking the requests.

<comment><USER14> Great example of where you don't need xhr

</comment></comment></comment></comment><comment><USER15> I really like these SVG graphics. Thank you :)

</comment><comment><USER16> I think these illustrations are very nice, but they might have too much "identity" to be generally applicable.

<comment><USER17> They are editable, so you can fix that. I do think they hit an odd middle ground of being too complex to use in apps, yet too simple to use in content. But they are free, so I'm appreciative of the work that went into it, even if I don't personally have a use for them.

</comment></comment><comment><USER18> "Please use modern navigator" : I don't need to be insulted when visiting a website.

<comment><USER19> Are you saying the browser you use is such a part of your personal identity that you feel personally insulted when people talk about it negatively?

Why do you feel that way?

<comment><USER18> Because last version of firefox doesn't deserve this message. I have become suspicious of all message of this sort with time, I feel they are purely dishonest 95% of the time, and dishonesty is insulting.

<comment><USER20> Have no problems with latest version of Firefox on MAC, are you using windows ?

<comment><USER18> It's probably because of adblock or something like that but there is so many ways to frame it correctly like "cannot load image".

<comment><USER21> uBlock Origin doesn't trigger that. Latest Firefox, too.

<comment><USER18> The cause of the error is not the problem, it's the way to report the error that is problematic. But if you really want to know, it was umatrix that was blocking third party "media.graphcms.com"

<comment><USER22> Perhaps the message should be "please use an adblocker with a better blocklist"

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER23> It wouldn't hurt to add some cultural diversity to the characters.

I know they're editable so "I could do it", but I think it would enhance the main landing page to show some examples... as well as make it more inclusive for the audience.

<comment><USER24> What culture do the images depict?

</comment></comment><comment><USER25> What are the differences and advantage over [https://openclipart.org/](https://openclipart.org/) ?

<comment><USER26> They seem to be much higher quality. I can't imagine putting anything from openclipart on a product landing page.

</comment></comment><comment><USER27> First of all, the website looks good and the illustrations (final product) are nice, but a couple of things put me off a bit:

First, the chatbot at the bottom right. I know it's common to many websites, and perhaps there are stats that show they help conversion, but I find it very annoying. If I need something, I can click on the chat button: you don't need to already start a chat with me and use up real estate for a chat that I haven't requested, and require 2 clicks from me to close it (the first click just opens up a bigger overlay, and the second click minimizes it to the state I wanted it to be to begin with). Also I know that it's an automated greeting and nothing personal, so it feels like an ad, disguised as a personal interaction.

Second, any business proposition where I am offered "unlimited" anything where I know that real human work (not automated) is required, or that limited resources (bandwidth, storage, etc) will have to be shared in order to satisfy my needs tells me that it is not sustainable from the provider side (business- wise) and that the only way it will actually work is if the service to me gets degraded so that it can handle the load from all the other customers.

Perhaps consider the level of service that you can really offer and state it clearly in the plans. If I see "10 requests" monthly it will signal to me that you've done your homework to figure out what the right number is so that your business can support me appropriately at that level, but if you say you can handle an unlimited amount of work from me for a fixed fee, it gives me the feeling that you haven't done your homework, and that our relationship is going to be difficult at some point.

Another vague commitment is to "get an update on your task/order within one business day" \- which I can interpret, if my experience with other services serves, that I will get an email with a confused one liner every day until we finally converge on what I really need after half a dozen emails that used up 6 days of "service". I have dealt with parties that offered 24h turnaround support/updates/modifications only to find out that their response, perhaps due to workload stress, was not helpful and required another interaction from me: it creates an artificial throttling system that is most annoying to customers that want stuff to get done.

Solutions?

Consider a pay-per-use model. You can always do volume discounts and even a fixed monthly fee to access a discounted price per if you want to address bigger customers. You can also provide N free interactions for new customers if you want to showcase your work.

What I as customer want is to see a business model where your incentives and my incentives are aligned to get each piece of work out of the pipeline as soon as possible. This should be a common goal for both parties: you want the job to be done so you can make money on another one, and I want the job to be done for obvious reasons. Any business interaction where I will be in a position of needing to push at a throttled rate tells me the incentives to get my work done aren't shared, and that worries me.

Good luck!

<comment><USER8> As a counter argument with regard to chat widgets on websites. I personally find them quite helpful.

<comment><USER27> Note that I didn't say they weren't helpful. I was just being put off by the initial "open" state. I don't have an issue with having an icon I can click on to "chat with a person".</comment></comment></comment>


Attention in Deep Learning - <AUTHOR> https://towardsdatascience.com/attn-illustrated-attention-5ec4ad276ee3 <comment><AUTHOR> See how attention is used for neural machine translation. One of the examples is Google's NMT which powers Google Translate.</comment>


The effects of 137 minimum wage hikes, in one chart - <AUTHOR> https://www.washingtonpost.com/news/wonk/wp/2018/02/05/raising-the-minimum-wage-doesnt-cost-jobs-multiple-studies-suggest/ <comment><USER2> > On average, minimum-wage increases eliminated jobs paying below the new > minimum, but added jobs paying at or above the new minimum. The two changes > effectively cancel each other out.

What is missing for me in this paper is the analysis of other effects besides employment, especially inflation of consumer prices.

It might look good on paper that worker gets $15/hr instead of $10, but if (s)he has to pay 1.5 times more for rent and groceries it does not change anything for good.

<comment><USER3> Note that jobs paying _exactly_ minimum wage are bundled into the "low" graph before the change but into the "high" graph after the change. I'd like to see an uncooked graph.</comment></comment>


Node.js 13.0 - <AUTHOR> https://github.com/nodejs/node/releases/tag/v13.0.0 <comment><USER2> To save you the clicks: Node 13 doesn't support top-level await.

Node includes V8 7.8, released Sep 27. [https://v8.dev/blog/v8-release-78](https://v8.dev/blog/v8-release-78)

Top-level await merged into V8 on Sep 24, but didn't make it in time for the 7.8 release. [https://chromium.googlesource.com/v8/v8.git/+/0ceee9ad28c21b...](https://chromium.googlesource.com/v8/v8.git/+/0ceee9ad28c21bc4971fb237cf87eb742fc787b8%5E%21/)

<comment><USER3> TLA is only in modules. Once node supports modules, it will also have TLA.

We're also pushing out a version with 7.9 fairly soonish.

</comment></comment><comment><USER4> Speaking of which, is anyone using deno ([https://deno.land/](https://deno.land/)) for anything real yet?

<comment><USER5> Nothing real, but I am watching closely. I write everything in TypeScript anyway and it is annoying figuring out what adapters to use to get testing libraries working and VSCode debugging, and debugging tests, etc.

If they implement Go-style concurrency that would kick this project up to the next level.

<comment><USER6> > If they implement Go-style concurrency that would kick this project up to > the next level.

I don't think that would work given the fact that it still runs V8's event loop.

</comment></comment></comment><comment><USER7> I've been using node with typescript and it's amazing.

VERY productive. The key thing is you can do a large refactoring without breaking anything.

The biggest challenge I have right now is actually the tooling. Intellij tends to break sometimes.

I'm using lerna for a monorepo with sub-modules and it's buggy with regular npm.

For example 'npm audit' doesn't work.

I might have to migrate to yarn...

<comment><USER8> Out of curiosity, why do you use IntelliJ instead of VSCode for a TypeScript codebase? VSCode was practically purpose-built for TypeScript.

<comment><USER9> IntelliJ is just a very well written IDE. Searching for methods still feels better in IntelliJ. Or the refactoring possibilities like - move an interface/function/class into a separate file and IntelliJ will fix all imports to the reference for you. Under the hood they nowaday also use the language services (like typescript), but there are so many features on top.

<comment><USER8> VSCode is great at the things you just mentioned. I agree IntelliJ is excellent for Java, but even multi-ecosystem tools tend to be biased towards certain use cases.

<comment><USER10> Language-servers make the choice of IDE moot. My vim setup is just as capable with typscript as vscode.

<comment><USER8> They don't completely. They help a ton, but certain IDEs are designed holistically with certain use-cases in mind and have very specific features that lend themselves to those use-cases on top of the basic error/autocomplete language support.

For example, the Rust extension in VSCode gives me an inline button next to any function that's annotated as a test, which I can click to run that test. That's really useful and really specific to Rust. Whereas other IDEs (or other IDE extensions) might just do a bare-bones language server hookup to show errors and that's it.

<comment><USER11> VSCode isn't there yet for Python refactoring - I still find myself needing to find and replace to get everything when I rename a symbol or move a package (breaking imports). I should never have to do that.

Pycharm refactors Python flawlessly.

I would love to be exclusively in VSCode because of its configurability & overall snappiness but it's just not there for Python

<comment><USER8> My point exactly. VSCode was purpose-built with TypeScript in mind, IntelliJ was purpose-built with Java in mind (it's right in the name), Pycharm was purpose-built with Python in mind. It's great when an editor supports several languages, but it's probably going to support one or two of them better than the rest, so you want to pick yours based on what you spend most of your time in.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12>
      console:
      The output console.timeEnd()
      and console.timeLog()
      will now automatically select a suitable time unit instead of always using milliseconds (Xavier Stouder) #29251

Am I the only one that finds this unacceptable? Instead of a consistent result of a number, let's return string.. That now I have to parse..

<comment><USER3> You should not parse the stdout produced from console functions. It is for producing human-readable information. If you want machine-consumable data, you should use something like benchmark.js.

<comment><USER13> How far we have strayed from the days where Unix tools were meant to be used as a stdlib, called through stdin and out. It makes me a little sad.

Classic HN comment on this topic: [https://news.ycombinator.com/item?id=6530180](https://news.ycombinator.com/item?id=6530180)

<comment><USER3> Not that far. Node has process.stdout/process.stdin/process.stderr. It's just that the console API is for debugging.

</comment></comment></comment></comment><comment><USER14> The timezone fix is pretty nice. It's one of those issues that seeps into the institutional knowledge of a project and people tell you to "just fix it in your code". I suspect stackoverflow questions on node runtime timezone changes will plummet :)

</comment><comment><USER3> You can also now tell Node.js to use the experimental REPL ([https://github.com/nodejs/repl](https://github.com/nodejs/repl)) by default using the NODE_REPL_EXTERNAL_MODULE env variable!

</comment><comment><USER15> Still no ES module support that doesn't require special flags or weird file extensions? Come on</comment>


H-1B visa cap reached after just five days - <AUTHOR> http://www.mercurynews.com/business/ci_25516535/h-1b-visa-cap-reached-after-just-five

<comment><USER2> You've linked an 1 year old article. Pretty sure is valid for 2015 though</comment>


Ask HN: How do you organize your small parts, hardware, and tools? - <AUTHOR> How do you organize everything in your personal workshop or professional lab?  Bins, shelves, drawers, toolboxes?<p>Do you have a digital or paper inventory?  Is there a specific person in charge or ensuring parts are available? <comment><AUTHOR> Currently I use a cheap bin/shelf system from Harbor Freight to store some electronics parts (like resistors and microcontrollers) but it can be hard to track what I have and don't have.

My tools are laid out on a shelf which is a big improvement over having everything thrown in a cardboard box which was how I had it for many years sadly!

</comment><comment><USER2> For my personal workshop, Harbor Freight storage containers can be good for small parts. For larger parts or where you have too many of each, large mouth plastic jars from peanut butter and pickles work well.

</comment><comment><USER3> Great use for deli cups, cheap and durable enough for storing small parts indefinitely.</comment>


Marketing, Gangnam Style - <AUTHOR> http://blogs.hbr.org/cs/2012/09/marketing_gangnam_style.html

<comment><USER2>
        the song intentionally lacked a copyright so
        that people would be encouraged to create their
        own online parodies

Do they have a citation for this? I can't find anything.

        "Gangnam Style" actually pokes fun at how
        the common man fantasizes about life in the fast lane

Whether that was his intention or not originally he has since claimed "GS is not a critique, just FUN!" [1]

        Make your product or brand more ownable

I mean, that can't _hurt_ , I guess... but Old Spice was SO VIRAL and how much of that spread was because made their own Old Spice adverts? Very few people did until way after the phenomenon was HUGE... so I mean yeah, it worked in THIS case but it isn't what made GS viral... it was just a bonus that will involve more people in the "fad". From the parodies I've seen _they_ are riding on the GS wave, not boosting GS itself, although I've only seen a few ("Eton Style", "Minecraft Style") are there any more I've missed that are popular?

        A great example is Oreo Cookies' Daily Twist campaign

I spend most of my time on the internet, I saw Gangnam Style when it had a few million views and yet I've never heard of this... on that note viral marketing that allows people to "create their own" video are a dime a dozen. If anything they should be arguing for ORGANIC creation. Look at a game like Minecraft, there is 0 ability to share your stuff "officially" so people went to Youtube and created a hundred million dollar business. A game called Happy Wheels: same deal. The majority of "create your own" campaigns try to create some sort of "click click submit" experience where your creation ends up in the _submission void_ , force people to share their work for it to matter to anyone!

It's counter intuitive to try and make it more difficult for people to share, but if you're providing something good (although I guess that's a side issue of most of these campaigns provide no real value to consumers) they will go out of their way to share it. If someone has to put in effort to upload a video of something they made they're sure as hell going to promote it as hard as they can.

        Psy's crowdsourcing strategy was limited to just the dance community

I might be missing some concious effort made by Psy that he's spoken about (any citations?) but isn't this what a large number of musicians do? They get other famous people onboard with their music videos because then you have their audience involved too! This has been done since the dawn of time, it's not a lesson to learn from GS unless you've never seen a music video before.

        Find an uncommonly-common emotional denominator
        that resonates across cultures.

what does this even mean? He made a super catchy song with an AWESOME dance that everyone loves... he didn't... I'm confused.

There's definitely things to learn from Gangnam Style but I think this post is just looking for things to write about and not necessarily things that are mind blowing "whoa!" moments.

Does anyone happen to have any good anlysis pieces about Gangnam Style? There's been a few that cover Psy's history but none that seem to really talk about why it's so popular -- if there is a reason beyond everyone loves it 'cause it's catchy and humans aren't exactly predictable.

[1] [http://www.reddit.com/r/IAmA/comments/120oqd/i_am_south_kore...](http://www.reddit.com/r/IAmA/comments/120oqd/i_am_south_korean_singer_rapper_composer_dancer/c6r8wm4?context=3)

(also this post reads quite negative, it didn't start out to be but I guess that's how it ended up. sorry!)

<comment><USER3> > Do they have a citation for this? I can't find anything.

The Guardian made the claim: [http://www.guardian.co.uk/commentisfree/2012/sep/24/gangnam-...](http://www.guardian.co.uk/commentisfree/2012/sep/24/gangnam- style-south-korean-pop)

It's a bit dubious, and there are no other sources I could find.

</comment></comment><comment><USER4> I like the song because it's a catchy tune and that I understand a few words in English. If you can achieve success in anything besides music that catches on as well, it would be pretty amazing. Does anyone have anything else marketing-wise that in comparison that could be as catchy?

</comment><comment><USER5> I think the meta discussion of interest here, is how even HBR are choosing to cash in on the popularity of the song with this article which is, let's face it, fairly thin on researched academic business substance.</comment>