How Imgur Became a Megacommunity - <AUTHOR> https://www.fastcompany.com/3057682/startup-report/how-imgur-became-an-image-sharing-meme-generating-megacommunity <comment><USER2> My beef with Imgur is that it was essentially announced as a non-spammy/crappy no-nonsense image host compared to the alternatives of the day:

[https://web.archive.org/web/20090227183112/http://www.reddit...](https://web.archive.org/web/20090227183112/http://www.reddit.com/r/reddit.com/comments/7zlyd/my_gift_to_reddit_i_created_an_image_hosting/)?

In 2009 Imgur was clean, neat and fast. Everyone sane questioned (including in that announcement thread) how that could possibly stay true in the long run. The founder just kept saying "we'll try to solve it if it comes to that", refusing to go into details or presenting anything resembling a plan.

Based on this "commitment" which I would say was either naive or not truthful, the Reddit userbase propelled Imgur to its current position.

Today Imgur looks like this:

[https://i.imgsafe.org/102b850.png](https://i.imgsafe.org/102b850.png)

(I picked the top link from Reddit 3 minutes ago. Please excuse the Swedish language ads - but I think you get the picture without being able to read the language.)

<comment><USER3> If there's an image host as clean, neat, and fast as imgur I'm not aware of it.

You don't have to interact with the "community" part of it ever if you don't want to.

When using it to view images on reddit, RES loads images inline and you never see imgur at all.

The only time I see the site is when uploading images, and that's extremely slick and fast.

<comment><USER4> Imgur seems to selectively redirect direct links (i.imgur.com/image.jpg) to the full site (imgur.com/image/) based on the referrer.

I think they originally only did this for direct images posted on Facebook etc (to avoid pissing off the core Redditors who post all the content), but lately pretty much all direct image links from my mobile Reddit client get redirected to an image page.

<comment><USER5> It might also be based on the HTTP Accept header, with which you can figure out if a request is for an <img>.

This redirection reminds me of other, less clean image hosting services. :/

</comment></comment></comment></comment><comment><USER4> > It bans nudity, porn, and hate speech

Ha! Imgur is _awash_ with pornography. They could automatically remove a large amount of nudity and porn by looking at the contents of /r/nsfw. As a second gate, they could use Microsoft's image classification service, which has a 'racy' flag.

Imgur is lucky that there aren't powerful rightsholder bodies for images the way there are for music and video. That's the only way the massive copyright infringement happening there every day goes unchallenged. Sure, they have DMCA safe harbor, but so did many other video and music startups who ended up slapped with lawsuits.

<comment><USER6> I understand that the community part bans those things; when you upload an image, you choose whether or not to submit it to the imgur community thing

<comment><USER7> How does that work exactly? I'm on Imgur daily and never heard of such a thing. On the other hand I've never understood what "usersub" is either.

<comment><USER8> Browse "User Submitted" by "Newest First" and you'll see the raw firehose of stuff people are submitting to the main gallery. If you're especially brave, do this at work.

<comment><USER7> Aren't all images on Imgur user submitted? Who else would upload stuff?

<comment><USER9> Images from the front page of reddit are autopromoted to the front page of imgur.

One of the reason I like imgur: it's Reddit without the Reddit UI or redditors.

<comment><USER10> One of the reasons I like Reddit: It's Imgur without the Imgur UI or "imgurians".

<comment><USER9> Fair enough. If Reddit is what works for you then rock it. Regarding the imgur community, I personally think they are a little too tryhard and silly, myself.

But I don't go there for the community. All I want are the best of the funny, amusing and interesting images the Internet can generate, served up in a never ending stream. After a long day of reading, coding, emailing, and everything else, the last thing I want to do is navigate yet another wall of grey on white text.

Imgur is pure brain candy in that sense. No thinking, no real discussion, no need to look at comments or interact with the users. Just _flip_ awww, kitty _flip_ hey boobs _flip_ neat!

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> > At first, the service took off not because it did a lot, but because it did > so little. "Nobody really wants to put images up on the Internet," he > explains. "What you actually want to do is share it with somebody. So I > stripped out everything that other image hosts even had, because when you > just get to the point of sharing, what's really important is speed."

> "I had this insight—that ended up being wrong, by the way—which was, 'This > content's so good, let's just have it stand on its own,'" he remembers. > "'I'm not even going to put titles or descriptions or anything on this > stuff.' Turns out that's actually a dumb idea, because people need context."

Whats funny to me, is that I stopped liking imgur when when added the community/context stuff. I liked it when it was small and simple. It's gotten so bloated that it's become a pain to use.

It seems like nobody can have a "community-less" image sharing site.

<comment><USER12> I really dislike the community part of Imgur as well, mostly because the people seem weird and childish, but also because it fails to add any value.

Attempting to add context is a good idea, but Imgur fails at that. Images on Imgur isn't tagged or titled right, which makes search completely useless. If you see an image, and want to find it, even later that same day, you can pretty much forget about it. The community part of Imgur might even make the problem worse, because the users just stay within the confines of Imgur, meaning they don't feel the need for tagging, good titles and search.

Take this example: [http://imgur.com/gallery/X4R7y](http://imgur.com/gallery/X4R7y) the title is "useful for arguments", except it's just a bunch of jumbled gif, there are no useful tags, no discover-ability or search-ability.

The community part shows up, because regardless of the original intent, sites do need to make money. There are no real way for sites like Imgur to make money, other than attempting to sell ads. Having a community helps sell those ads.

<comment><USER13> > I really dislike the community part of Imgur as well, mostly because the > people seem weird and childish, but also because it fails to add any value.

Like /r9k/ it had a great three months, and then everyone found it.

<comment><USER14> This seems like the story of every great Internet site, ever.

It's great until the lowest common denominator finds it then it goes to crap.

Reddit is only spared because you can unsubscribe from default subreddit's and find more niche sub-reddit's that attract a niche audience or subset of users that are less likely to "sh#tpost" for lack of a better term. Not to say all new users are bad or don't contribute anything new, but the noise to signal ratio is way worse the more people pile on and start becoming an echo chamber. I've even seen it a little with HN as its gained popularity, but thankfully this site is so niche its not too bad.

But I kind of wish I could do that with other community sites and social media. I know a lot of people loved twitter, or digg, or whatever _back in the day_ before the celebrities, media, and extended relatives caught on.

<comment><USER15> I'm not sure this is necessarily an unavoidable fate for internet sites, even communities. You can keep the signal to noise ratio decent if you've got an active team of moderators, fairly heavy pruning of content that doesn't add anything to the conversation and the willingness to say no, my site doesn't offer 'freedom of speech'.

Unfortunately, most big sites seem to be built on the 'leave it as a complete free for all with no moderation whatsoever' model, which immediately stops working the minute the memberbase expands from early adopters to every Tom, Dick and Harry. That's why Reddit, Twitter, etc have had so many problems. They were built with the idea of 'anyone can say virtually anything' in mind, then realised it would lead to massive amounts of trolling and personal attacks and questionable content, then dug themselves an even deeper hole by trying to moderate the site in woefully biased ways.

<comment><USER5> Twitter isn't really a single community, it's many (self-selecting) communities. This means that Twitter don't really need to moderate low-quality content or what have you, but they do need to solve harassment.

</comment></comment></comment></comment></comment></comment><comment><USER16> How is that Ohanian et al (or whoever was running the Reddit ship around Imgur's launch) weren't browbeaten by Conde Nast for letting another startup parasitically use it as a host organism to sucessfully launch and scale? At some point in the future Imgur could be more valuable than Reddit.

<comment><USER17> I get the impression that back then, nobody at Conde Nast really cared what those "weird reddit guys" were doing. The team was mostly just struggling just to keep the lights on.

<comment><USER18> Yep, if I remember correctly, Imgur also started before the 'Digg Exodus', so reddit wasn't the biggest kid on the block yet.

</comment></comment></comment><comment><USER19> I still remember how cautiously negative[1] I was toward the creator in his initial unveiling on reddit many years ago. Contracting at photobucket and seeing the state of media hosting at the time made me very pessimistic of the sector. I'm happy they've grown as large as they have since that moment and broken away from what other image hosting services were doing.

1\. [https://www.reddit.com/r/reddit.com/comments/7zlyd/my_gift_t...](https://www.reddit.com/r/reddit.com/comments/7zlyd/my_gift_to_reddit_i_created_an_image_hosting/c07ujci)

<comment><USER20> On the other hand, they seem to be going down the road of what other image hosting sites have done in the past. Large, intrusive ads. Most recently, that cat that pops up on mobile that covers the content with a large paw encouraging you to swipe to see the next picture. Focusing on building a community instead of focusing on image hosting. Building value-add stuff like their meme generator while continuing to avoid the actual difficult problems. Like having constant infrastructure issues that keeps their site inaccessible for hours at a time more often than they should be.

I appreciate that it's difficult (costly) to do image hosting, and it's nice that they accept hotlinking and other activities that produce no revenue for them, but the Imgur that we have today is a far cry from the Imgur that was promised seven years ago.

<comment><USER21> > and it's nice that they accept hotlinking

They are cracking down on that, unfortunately. For example, FIMFiction users can no longer embed imgur images:

[https://www.fimfiction.net/blog/595986/imgur- problems](https://www.fimfiction.net/blog/595986/imgur-problems)

<comment><USER5> Oh wow, their ToS actually prohibits hotlinking now? The ability to hotlink was one reason it was so popular!

</comment></comment></comment></comment><comment><USER22> My 15 yr old spends lots of time on imgur. He gets news from it, as well as humor and gamer stuff, much like the previous generation got news from The Daily Show, though the imgur news is very much more watered down than what one would get from The Daily Show. He often has a warped sense of what's going on in the world, but he often knows stuff before I do (because it hasn't percolated up on HN or reddit).</comment>


Thread pools: How do I use them? - <AUTHOR> http://jvns.ca/blog/2016/03/27/thread-pools-how-do-i-use-them/ <comment><USER2> I like the style of writing in this post. Its fresh in the programming world where everyone seems to know it all for someone to admit something is hard or confusing.

<comment> Smircio- Heck yea. Im kind of new here and it can be so intimidating. I feel like everyone is an expert at everything.

<comment><USER3> It's not that, it's just that experts tend to contribute to threads where they can share their expertise.

So while it appears that everyone here is amazing; that isn't the case: we just tend to have something that we're very good at and comment on it.

The good thing is that you can learn a lot here as long as you don't get sidelined by some of the inane arguments and fighting :)

<comment><USER4> Also, an awful lot of people who sound like infallible "experts" in tech are just people who are dealing poorly with imposter syndrome.

<comment><USER5> Hang on; Imposter Syndrome would mean that you would come across as a fallible, non-expert, since you believe yourself to really be an imposter. Do you really mean something like the Dunning-Kruger effect, which is sort of the opposite of Imposter Syndrome, people with little knowledge believing themselves to be infallible experts?

<comment><USER6> Impostor syndrome means that the person thinks of themselves as a fraud, not that other people do. So someone dealing poorly with impostor syndrome might well only chime in when they are exceedingly confident, or only when they do research and can be certain that the information/position they are providing is correct. If you keep your mouth shut except when you're 100% certain, you'll likely look like an "infallible expert" because you're always correct from an external perspective, even if you are quietly filled with self-doubt.

<comment><USER4> Pretty much. Some people who lack self-confidence seem afraid to ever admit "I don't know" lest it somehow reveal their "fraud" to the world.

</comment></comment></comment></comment></comment></comment></comment><comment> Pirate-of-SV > Or maybe there is a totally simple way and this could take me 5 minutes!

At that paragraph I immediately thought of [http://aadrake.com/command-line- tools-can-be-235x-faster-tha...](http://aadrake.com/command-line-tools-can- be-235x-faster-than-your-hadoop-cluster.html)

<comment><USER7> Holy shit.

> I have been in technology roles for over 17 years

I guess this is what experience gets you, huh.

<comment><USER8> Or if you know some basic performance characteristics of your machine (i.e. memory bandwidth + processor speed + number of cores) and roughly how much work you need to do (i.e. number cycles to do X), some back of the envelope calculations can often give you the same insight (i.e. "is X feasible with compute resource Y?").

</comment></comment></comment><comment><USER9> I recently ran into the issue that the multiprocessing.pool.ThreadPool class is not cancellable in Python 2. It seems that only in Python 3 can you exit a ThreadPool with eg. a KeyboardInterrupt before all tasks are finished.

Since then I've been using this code, which works great across all platforms and Python versions: [https://github.com/metachris/pdfx/blob/master/pdfx/threadpoo...](https://github.com/metachris/pdfx/blob/master/pdfx/threadpool.py)

<comment><USER10> I've experienced this bug in Python 2 using "pool.map" and "pool.apply", but KeyboardInterrupt does work if you're waiting for a finite amount of time. So as a workaround you can use "result = pool.map_async(...); result.get(sys.maxint)". A little hacky but functional.

</comment></comment><comment><USER11> As is sometimes the case, people start with the wrong abstraction (thread pool) and then optimize it.

Java/Scala streams look like they would solve most of the problems in the post on their own.

e.g. Java streams

[http://radar.oreilly.com/2015/02/java-8-streams-api-and- para...](http://radar.oreilly.com/2015/02/java-8-streams-api-and- parallelism.html)

        private void runParallel() {
          trades
          .stream()
          .parallel().forEach(t->doSomething(t) );
        }

Java/Scala has a hierarchy of concurrency abstractions, from high level to low level:

Streams, Parallel collections, Futures, Actors, Fork/Join, ExecutionContext/ExecutorService, Threadpools, Threads, synchronized, Barriers, Atomic values and many more.

<comment><USER11> Something not so obvious for beginners: Java/Scala does not use all the available memory. If you get out of memory problems with the 10gb data set and you have much more RAM available, you need to tell Java/Scala to increase the Heap.

</comment></comment><comment><USER12> My favorite blogger of 2016 thus far. Every post is great.

Also the bit that rings home the strongest is just how difficult it is to do trivial things. Even a senior level programmer with ten years of experience has to sit and say, why is this such a pain in the ass?

I guess that's one reason I really like clojure. Core.async has a really hideous API at first glance but using channels and buffers makes doing this sort of thing a lot more enjoyable. Anyway the intent of the article was to dive into abstractions not to suggest more of them so I'll shush.

</comment><comment><USER13> Maybe "Scala concurrency surprises" would be a better title.

<comment><USER14> It uses the JVM's threadpools directly so it applies to more or less any JVM- based language, and the problems it talks about (expensive sequential operation before threadpool submission and unbounded threadpool queue) are pretty common issues.

Witness the unbounded and unconfigurable (though replaceable — at your own risk since you're setting a "private" variable of the pool) queue of Python 3's threadpool: [https://hg.python.org/cpython/file/default/Lib/concurrent/fu...](https://hg.python.org/cpython/file/default/Lib/concurrent/futures/thread.py#l99)

</comment></comment><comment><USER15> Great writing.

I wonder if a ForkJoinPool [1] would be helpful here as it does work-stealing giving better utilisation.

Although I've read admonitions that they should not be used when doing I/O. [2] That article seems a little ranty and overblown though, so I'd like opinions on that.

1\. [https://docs.oracle.com/javase/8/docs/api/java/util/concurre...](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ForkJoinPool.html) 2\. [http://coopsoft.com/ar/CalamityArticle.html](http://coopsoft.com/ar/CalamityArticle.html)

<comment><USER16> A coworker showed me Akka Streams recently. It allows you to overcome the impedence mismatch between threadpools processing jobs at different speeds where one task feeds into another. Could be a neat way to join up the i/o bound tasks to the cpu bound tasks.

[https://opencredo.com/introduction-to-akka-streams- getting-s...](https://opencredo.com/introduction-to-akka-streams-getting- started/)

<comment><USER17> Yep, it's a really cool library. I'm pretty new to it myself, but I made a little gist of how one might approach this problem: [https://gist.github.com/kevinavery/941e7d67c4f8b104f610](https://gist.github.com/kevinavery/941e7d67c4f8b104f610)

I was kinda surprised by how tricky it was to make a Flow that turned ByteStrings into separate String lines, but it seems like the custom GraphStage approach generalizes really well to more complicated stages.

</comment></comment></comment><comment><USER18> > In my case, I was reading a bunch of data off disk. maybe 10GB of data. And > I was submitting all of that data into the ExecutorService work queue. > Unsurprisingly, the queue exploded and crashed my program.

In the spirit of brainstorming:

1) Abstract out the I/O step so that you can pass around a bunch of lightweight and lazy "I'll get the lines for you when you ask" objects. Then you can safely queue up a large number of them.

2) Choose to break the "job" apart into two parts, and submit the "get lines from filename" jobs into a different, smaller pool, with the results flowing into the larger (CPU-core-limited) pool.

</comment><comment><USER19> The easiest way to use thread pools in Scala is to use an ExecutionContext. Akka will let you define an ExecutionContext from a configuration file using a wrapper called a Dispatcher -- you can ramp up the parallelism-max setting for more cores. Then you do actorSystem.dispatchers.lookup("my-dispatcher") and pass it to all the actor based code that you are using.

You can use a work pulling set of actors to handle computation after that, or use Akka Streams to provide backpressure, to avoid the OOM problem.

</comment><comment><USER20> Always enjoy reading her posts, I particularly like her enthusiastic style too.

</comment><comment><USER21> > Here's what that looks like in Python.

Although python multithreading outside of IO tasks or dropping into C code that drops the GIL isn't going to parallelize, the latter of which is the only way you're going to burn up cores. The API does make it seem simple though.

<comment><USER22> The example is using multiprocessing.pool.ThreadPool which does not have the GIL problem you mention (at the cost of making it harder to share data).

<comment><USER23> You're thinking multiprocessing.Pool. I think ThreadPool actually uses threads and does hit the GIL.

</comment></comment></comment><comment><USER24> Good write up.</comment>


How I Transitioned from Physics Academia to the ML Industry - <AUTHOR> https://dluo.me/academiatoindustry <comment><USER2> I worry there are long-term implications to the exodus of intellectual capital from academia -> industry.

 _However_ , I don't blame anyone who makes this obvious choice:

A)Years of underpaid, thankless, exhausting work, for a... fractional probability of getting even a _livable_ wage.

Contrast this with:

B)$techCo, where even a decent undergrad CV will get you a six-figure job, advancement opportunities, and maybe even a modicum of respect.

What sane(or not blindly idealistic) individual would willingly choose option A?

If there isn't some kind of concerted effort by higher-ed orgs to reduce the administrative and bureaucratic overhead of post-grad education, it's going to have long-lasting consequences.

<comment><USER3> My favorite though is the all the masters and phds that end up teaching k-12.

<comment><USER4> I know a couple of people who went into a masters/phd programs with the intention of teaching in schools later after finishing. They wanted to learn some mental skills and they wanted to dedicate their lives to teaching. Nothing wrong with it.

<comment><USER3> I just dont think its economically efficient. It would seem like a huge waste of talent and potential.

<comment><USER5> That's funny, seems like reinvesting to me. Better long term returns.

<comment><USER3> Let me put it in worker placement board game terms.

If you have invested in making a worker scientist you probably want to place them on the location where you get a chance of getting a Tech upgrade. You likely dont want to place them on the location where you have a chance of upgrading another worker to a scientist worker when a much less specialized worker will do. And if you have too many tech upgrades then it makes no sense to try to upgrade normal workers to scientist workers.

Anyone that plays games actually has an intuitive sense of economic calculation.

<comment><USER5> I think there's societal level value in having normal workers with a better appreciation for and understanding of science. Something like at a particular saturation level: +10% bonus to research lab output, 25% reduction of policy update costs with presence of overwhelming scientific evidence (stacks), bonuses to population health improvement with Medical Lifestyle Research unlocks, 25% reduction of knowledge rust, 5% reduction in knowledge related production costs, faster to upgrade to scientist, 2% chance that a normal worker will automatically upgrade to a scientist worker, etc. Obviously there are opportunity costs.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> When I was last interviewing candidates for a data scientist position, I can't count how many physicists applied for the job when they didn't even understand what overfitting was.

There is a definite sense of "physics is hard, therefore everything else must be easy" groupthink, combined with Dunning-Kruger syndrome.

<comment><USER7> If you are hiring physicist to do Machine Learning, then you are doing it all wrong. Physicist are excellent at mathematical modeling, especially those in their 50s+. Data science from my experience is vastly inferior to mathematical modeling. The OP that wrote the article seems young, and doesn't seem like they've seen much. In the world of quantitative finance, physicists and mathematicians reign supreme. These guys get paid millions in salary and bonuses, because they earn 10x that for the firms. Their entire jobs are to mathematically model things. There are very successful hedge funds that only hire physicist and mathematicians. The current data science and machine learning is child's play compared to the stuff these quant funds do. Physicist, especially ones that have mathematical maturity are incredible assets, they have a lethal skillset that isn't really there in silicon valley. The majority of data science posts I see on HN are mediocre at best. I think age and experience are highly under valued. The physicists and mathematicians that Draper, Raytheon, DARPA, Renaissance Tech, Black Rock or Bridge Water (I would include SpaceX and Tesla in this list) have are superior to any data scientist that you will find in Silicon Valley. Mathematical modeling is incredibly hard, seasoned physicists are very good at it (I can't emphasize how difficult and long this process can be, nor can I articulate the reward for doing things this way).

> There is a definite sense of "physics is hard, therefore everything else > must be easy" groupthink, combined with Dunning-Kruger syndrome.

You are severely misinformed, and you severely lack a breadth of industry experience. Physicists (especially the experienced ones)have something called mathematical maturity. Having mathematical maturity is a skillset, you are able to make precise formulations of some phenomenon you want to understand things about, and prove with rigor that your ideas are correct, or that they converge to what you want. This is a lethal mind to have, it's far superior to machine learning or data science. You aren't relying on heuristics like "overfitting". These concepts aren't well defined, and are very subjective.

I can tell you this with 100% confidence, AlphaGo, Duplex, Siri etc. are all gimmicks, no different from Watson or Deep Blue. They are just applying statistical brute force to narrow domains. I'd love to see a machine learning system that consistently matches the profits that the successful quantitative funds do. I know no tech company can do this, they don't have a fundamental understanding of mathematical analysis, they don't hire the right people. The right people are at DARPA, Draper, Tesla, SpaceX, any organization working on the hard sciences. Go figure; pretty much all of the major important discoveries came from either military or laborites investigating the hard science.

Data science/ML, is great for simple data sets (there is a mathematical definition of this, not heuristic). For many industrial problems like what SAP, or McKinsey does it's perfect. The available cloud compute power and a basic Statistics + CS degree will disrupt these businesses. But do know this: they are severely limited. Machine learning will very quickly start showing its cracks.

<comment><USER8> It's worth knowing that computer vision originally worked with manually programmed feature identification using more-or-less standard signal processing techniques, but those techniques were wiped out by neural networks. In some domains ML performs far, far better than any manual model could, simply because in those cases first-principles understanding is impractical to obtain. In fact, most textbooks on optimization start out with some comment to the effect of, "such and such a technique is only good to use when you have no knowledge of your problem domain." That speaks for a lot of problem domains.

<comment><USER7> This not 100% true. I am not advocating first principles. I am advocating mathematical modeling. Mathematically modeling vision seems pretty much impossible. I do think there are many theoretical parts of topology that might be useful like homotopy. It could be the case that the "next calculus" needs to be discovered. By that I mean a totally new branch of math that will change mathematics for the next several hundred years (the same way Newton and Leibniz did with the invention of calculus). It took a very long time for us to go from algebra to calculus, in the end calculus ended up being simple. The same may be true here.

Or another scenario, instead of modeling vision, model the brain, mathematically (this is the path I favor)

There are mathematicians trying to model the brain. Unfortunately the field is very new, around 50 years or so. Deep learning and neural networks (in their current form) are temporary. There is a tremendous amount of experimental and quantitative work that was done in the last 50 years that (I believe) will solve vision far better than deep learning.

My major question to you is, why do people use back propagation?

[https://www.axios.com/artificial-intelligence-pioneer- says-w...](https://www.axios.com/artificial-intelligence-pioneer-says-we-need- to-start-over-1513305524-f619efbd-9db0-4947-a9b2-7a4c310a28fe.html)

This is the smartest thing Hinton has said in his career. Back propagation is a pseudoscience, sort of like ether theory was.

Deep learning is a pseudo science. Why back propagation? Why sigmoid function? I know the intuitions behind why these decisions were made. It's all questionable, there is no rigor to it, nor is there experimental evidence for any of this. Pseudoscience.

What will replace back propagation and the sigmoid or the relu function?

The guys modeling the brain have a good idea. Right now is a wonderful time, there are institutes all over the world that have done tremendous amount of work in this domain. There's a wide amount of competing ideas and models. These ideas haven't trickled their way into computer science yet, and remain esoteric. Which one is the right one? I have my "team" already picked, and it will solve audio and vision, and basic problems in language. But the proof is in the pudding.

Will it give us AGI? (Hint: no it won't. Not in our life time at least, the math isn't there yet).

<comment><USER9> Can you expand more on what direction your "team" is researching towards?

</comment></comment></comment></comment></comment><comment><USER10> Main paragraph:

 _I grew increasingly disillusioned with academia. It seemed that many STEM undergraduates would rush into PhD programs out of sheer inertia, without exploration of other options, and spend five, six years of their prime youth down the rabbit hole of academic research. This resulted in frequent burnouts. Many PhD graduates turned, in the end, to industry after acquiring a distaste for academia in grad school. Those who continued in academia were met with fierce competition for limited amounts of tenure-track positions, and must go through several rounds of postdoctoral research stints before being accepted for a faculty position, if they were accepted at all._

</comment><comment><USER11> The academic ponzi scheme thing is overplayed. I'm a Phd Research Scientist at a good school. I'm not faculty, but I have a lot of freedom and I get to do research that is fulfilling. Yes, it's a pyramid (aren't all org charts?) and I'm not at the top, but I'm happy.

<comment><USER8> The unspoken aspect of the pyramid scheme theory is that academia is great for the top one percent of Einsteins, and bearable for the top one percent of the most tenacious.

<comment><USER11> I'm interested to see what the future of the Research Scientist role is. It's basically a place for people who didn't do a post-doc and aren't bad-ass enough to not need one. And, one could argue, people who just don't want to play the faculty game. I hope we see that space grow in academia. I think we will.

</comment></comment></comment><comment><USER12> Doing an undergraduate degree is not being in "physics academia". The author transitioned from graduation to getting a job. But good post regardless.

</comment><comment><USER13> I initially read this as the MLM Industry!

<comment><USER13> Downvoted because you don't like that I misread it? Or don't like that I shared that I misread it and found it funny?

<comment><USER14> A lot of HNers don't have much of a sense of humor. (I thought it was funny.)</comment></comment></comment>


Ask HN: What framework/platform do you use for app development? - <AUTHOR> I have a background in Angular 1, and recently took up Ionic with its Angular 2 implementation, but I feel that there is probably a better, and more intuitive, way to do it. <comment><USER2> I have two prefered stacks:

1) python with aiohttp framework with asyncpg for the backend serving REST and WebSockets, with a posgresql database, memo (a pure python clone of redis), celery (but I might switch to something lighter) and sentry. On the frontend I use, reactjs (but I might move to preactjs because of the license) with a custom redux-like framework built on CRA with async/await support and optional ImmutableJS dependency. I call it the 'django2' stack.

2) GNU Guile Scheme with fibers (which brings asyncio, but still lakes websocket support) for the backend. Database is built on top of wiredtiger glued with Guile again using EAV pattern that I call the feature space (it's somewhat similar to MUMPS and datomic, some call it RDF store). On the frontend, I use a simiar framework but written in Scheme powered by BiwaScheme (I plan to move to RacketScript). That stack is missing a lot of features (queues for background job scheduling, proper pooling of database connections, websockets). I call it the 'mono' stack, because everything lives in a single processus. NO GIL FTW!

None of them support true isomorphic (or universal) web app. Even mono stack which only rely on scheme doesn't support it. That said I can render backend side the same thing that frontend renders and achieve the same goal without the elegance.

</comment><comment><USER3> For SPAs, I mostly use ClojureScript with reagent and re-frame nowadays.

Reagent is a ClojureScript wrapper for react, and re-frame is a library for state management, where you dispatch events kind of like in redux.

It's most productive and intuitive environment I've come across. Very little boilerplate. I haven't tried serverside rendering with it though.

There's also re-natal if you want to use react-native, but I haven't tried this either, so I can't vouch for it.

<comment><USER2> Why not om?

</comment></comment><comment><USER4> I usually start with WordPress because of the mature plugin ecosystem. Most really difficult-to-implement features are available as free or cheap (<$100) plugins. Couple that with the fact that most plugins are designed with extensibility in mind via WP's hooks and actions (callback system) and there's not much I haven't been able to get done in a fraction of the time compared to starting on a different platform.

<comment><USER5> What are the kinds of things you're building with WordPress?

I'm curious because I run a couple of WordPress blogs, and I recently realized I can do a lot with the platform beyond just blogging.

<comment><USER4> I've used WP as an access control middleware on a electronic health records project and I'm currently using it to build a electronic contract SaaS platform. As a concrete example with my e-contracting app, I was able to get account management (changing passwords, deleting accounts, etc.) by using the Ultimate Member plugin. It would've taken me at least a week of coding to build this from scratch.

<comment><USER5> Thanks for your answer. I would've never thought of using Wordpress for those applications.

Where would you direct someone interested in learning more about how to extend Wordpress with plugins, themes, taxonomies, custom types, etc.? I'd mostly like to use it in CMS-like roles for personal projects.

<comment><USER4> I've learned how to build and extend plugins via WordPress.org. I've also spent a lot of time just digging through the source. Combine that with SO and that's been how I've come up to speed. I do remember a good book from back in the day called "digging into WordPress"

</comment></comment></comment></comment></comment><comment><USER6> YMMV as they say, but in case you want anecdotal subjective recent experience... I had fun (most of the time) working with Angular 2 (now 4 to be accurate) in the frontend and fully serverless on the backend. (I can't compare to working with React and its ecosystem, but I plan to try it soon...)

For more classic apps, and this is just because of my past experience with it, I use Spring Boot with Thymeleaf. Once you get used to the idea of 100% serverside rendering (even for "ajax" stuff) it is one of the more productive frameworks I worked with. Much have changed, more convention over configuration, no need for XML config files. And I can use Scala / Kotlin and I assume also Groovy with it (although Java 8 is working for me most of the time)

For simple UIs, the 2nd option was way faster, surprisingly I didn't see any significant performance differences between the two approaches. The Spring way for me was much more straight forward, but again, I worked with Spring for ages...

</comment><comment><USER7> @Narutu it is unclear from the question whether you mean mobile app development or web app development.

</comment><comment><USER8> Mobile/desktop:

ionic, electron hybrid native/web apps start. Eventually native when unified- platform dev technical debt exceeds benefit.

Web preferred:

FE: Vue, TypeScript, Ava, jsverify, brunch

Surprisingly, brunch scales really well despite being less popular.

BE: Phoenix (Elixir/Erlang), Postgres, Redis, CouchBase, Neo4j, ElasticSearch, excheck

DevOps/SRE: C, Go and Ruby

Really interested in flexible constraint-oriented FE like Layx which allows for specifying layout as a system of equations. It's closer to many desktop auto-layout UI constraints, but programmic instead of pointy-clicky property editors.

[https://github.com/layxlang/layx](https://github.com/layxlang/layx)

</comment><comment><USER9> For my personal stuff lately I've been using GTK and ncurses, re familiarizing myself with c after 10 years in higher level languages. The simplicity of c and ncurses is simply amazing, this is how programming should be taught to beginners.

At work, mostly WinForms (c#) and some MVC with the godforsaken devexpress framework.

</comment><comment><USER10> Here's the general answer you get: The best tool for the job.

My personal answer is that I like populating a template with server-side JSON (Newton JSON library and MVC on .NET or NODE.JS on other platforms) For the front end I usually use HandlebarsJS or a custom script using jQuery.

</comment><comment><USER11> IOS:

IOS Swift + Firebase/AWS

Web:

MEAN stack (a bit outdated, I know)

</comment><comment><USER12> Xamarin

</comment><comment><USER13> This question has been broadly answered in an annual survey called State of JS: [http://stateofjs.com/](http://stateofjs.com/)</comment>


Google: Strong company, inflated stock price - <AUTHOR> http://money.cnn.com/magazines/fortune/fortune_archive/2007/08/06/100141308/index.htm?postversion=2007072403 <comment><USER2> "Here's what it found: To live up to the expectations embedded in its current share price, Google would have to increase its EVA, which was $2.4 billion for the past four quarters, by $2 billion annually this year, next year, and every year into the future - forever. So Google's EVA next year would have to be $4.4 billion; in five years it would have to be $12.4 billion, and so on."

That's one way to look at it, but that's assuming that it's going to grow earnings linearly, rather than exponentially. Google isn't growing linearly, and they haven't in the past (look at their record from 2002 on: $99,656, $105,648, $399,119, $1,465,397, $3,077,446). Under no circumstances would one thing that the best fit here is linear growth.

</comment><comment><USER3> Good quote:

 _the info-based economy just doesn't require that much capital, so investing mammoth sums almost always leads to lower, not higher, returns._

Something to keep in mind when discussing valuations and raising capital.

<comment><USER2> Er. He may be talking about diseconomies of scale (it's harder to get a high return invest $1 billion than investing $1 million), which would be nothing new. Or he's claiming absolutely lower returns (earning $5 million on a $10 million investment versus earning $2 million on a $20 million investment), in which case he's almost always wrong.

There are a small number of cases where a startup would have lasted longer if they'd raised less -- but there's still a pretty strong correlation between having lots of capital and getting a high absolute return.</comment></comment>


Randexp.js: Create random strings that match a given regular expression - <AUTHOR> https://github.com/fent/randexp.js <comment><USER2> Warp [1] implements this, and also allows you to generate a list of _all_ possible values matching a particular regex (the number of possibilities of course grows quite quickly for many regexes!).

[1] [https://itunes.apple.com/us/app/warp/id973942134?mt=12](https://itunes.apple.com/us/app/warp/id973942134?mt=12)

<comment><USER3> Exrex does the same in Python and much more:

       - Generating all matching strings
       - Generating a random matching string
       - Counting the number of matching strings
       - Simplification of regular expressions

[https://github.com/asciimoo/exrex](https://github.com/asciimoo/exrex) (AGPL licensed)

<comment><USER4> That's cool, thanks. I've discovered sre_parse thanks to that link, so cool too.

</comment></comment></comment><comment><USER5> Do you think it's safe to generate ticket numbers with such tools? I'm currently this PHP lib to do it: [https://github.com/icomefromthenet/ReverseRegex](https://github.com/icomefromthenet/ReverseRegex) and since we do not sell thousands of tickets a day I think it should be okay to use it for this purpose. What do you think?

<comment><USER6> It's practical, if you check the new one is not a duplicate - the lib info does not state how distinct the values would be, or how does it uses the RNG.

Depending on what you really need (output string format, amount of numbers, non-additive links), you should find a hash function for your fit. You can always start by looking for youtube url hash.

</comment></comment><comment><USER7> My new favourite password generator is now [http://fent.github.io/randexp.js/#r=%5B%5E%5Cs%5D%7B16%7D&i](http://fent.github.io/randexp.js/#r=%5B%5E%5Cs%5D%7B16%7D&i)

<comment><USER8> I'd be surprised if it had the amount of entropy you need. I haven't looked at the source, but javascript in a browser is not a good source of random numbers.

</comment></comment><comment><USER9> The famous email regex ([http://www.ex-parrot.com/pdw/Mail- RFC822-Address.html](http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html)):

[https://tinyurl.com/qz2ykex](https://tinyurl.com/qz2ykex)

<comment><AUTHOR> Safari loved that.

</comment></comment><comment><USER10> Would be great to integrate it into a live regex editor such as [http://www.regexr.com/](http://www.regexr.com/)

</comment><comment><USER11> So what happens when you pass something like `(?!.?|(..+?)\\\1+)

Or does it not support lookahead?

</comment><comment><USER12> What's the practical use for this...? Input validation?

<comment> luiz-pv9 According to the readme:

"Regular expressions are used in every language, every programmer is familiar with them. Regex can be used to easily express complex strings. What better way to generate a random string than with a tool you can easily use to express the string any way you want?"

An example where this is useful (I guess) is generating data for tests. You can easily define an email regexp to generate random "valid" values for each model.

<comment><USER13> For testing you'd want to generate strings non-uniformly, i.e. you want to hit edge cases rather than test 1 billion similar 20 character length e-mails.

<comment> luiz-pv9 That's true. What I meant was that this tool is good to support testing the same way factories work: generating random valid emails, phones, addresses, etc., for each record.

</comment></comment></comment></comment><comment><USER14> If anyone misses a demo: [http://jsfiddle.net/n3dgjLo5/](http://jsfiddle.net/n3dgjLo5/)

</comment><comment><USER15> This is _great_ for regex crossword generators!</comment>


Do engineers shop for clothes? - <AUTHOR>

If you're an engineer, how do you pick out new clothes to buy? Would you ever let someone do it for you (i.e. someone with good fashion sense to go with you to the mall for a couple hours to help you look your best?) <comment><USER2> Would I ever let someone do it for me? Sure. Would I pay for it? No.

The kind of person who is an "expert" at retail fashion isn't going to be working at the price point I have in mind.

<comment><AUTHOR> Curious, what is that price point you have in mind?

<comment><USER3> I think a 40% price premium would be reasonable.

</comment></comment></comment><comment><USER4> I am devoid of fashion taste. I use a pretty simple system: when my clothes get holes in them I walk down to Target and buy more off the rack (whatever they have there that day, doesn't really matter to me). When my converse wear out I walk down to DSW and buy another pair.

That being said, I'd like to have better clothes for special occasions / dates / events. I would totally pay someone to pick stuff out for me. Not for everyday clothes, but for those special outfits.

<comment><USER5> Wearing them more often, you'll be more comfortable in them. Which is not to say you need to wear them every day, by any means, if you're not into that.

</comment></comment><comment><USER6> Shirts are fairly standard in size, I buy those online. Jeans have to be tried on (bad online experience). /r/mfa has okay guidelines. I stick hard to certain brands, to avoid sizing uncertainty.

I wouldn't go full Steve Jobs and only wear black turtlenecks and dorky sneakers, but a closet full of OBDs & polos seems reasonable. I would definitely _try_ someone's recommendations, but only up to a fixed dollar limit (like $200~300). I would be prepared to bag it all up and donate it if I didn't like it.

<comment><USER7> You sound average-sized, if you can confidently say shirts are standard in size. I know a lot of guys who have a hard time finding shirts that fit.

Shirts, jeans, sweaters, anything... they're all over the place in terms of fit.

With shirts, you've got different torso widths, lengths, arm hole sizes (I don't know the word), depths and widths of the neck hole. A slim fit, an athletic fit, a relaxed fit, will all vary from brand to brand.

With jeans, same thing.

Then you've got the fabric and stitching. I'm not sure I'd buy clothes online. Too many variables.

<comment><USER7> Actually, there's something I'd pay $20 for.

I mail you a list of measurements. You mail me a list of brands and styles that fit.

<comment><AUTHOR> Cool idea, but how do you account for variations on what certain brands consider a 33-length, for example?

Like for example, 32-waist Wrangler seems to be equivalent to 30-waist Gap. Only way I know this is because I tried on the jeans at the mall and found those to be the most comfortable on me.

The variation is strange and it's not just pants but also shoes sizes aren't consistent between brands either. I think the way Zappos solves this is they send you the shoes and you send them back if they don't fit well.

<comment><USER7> That's part of why it's worth $20.

There would need to be some brand research done, checking the fitting and sizing of various brands, so you could know that "with a 31 inch waist, measured around the navel, I would fit in 30 inch Gap jeans and 32 inch Wranglers."

That trip to try on those two pairs of jeans cost you what, an hour? two hours?

</comment></comment></comment></comment></comment><comment><USER8> It depends what you mean by help me. If you mean ask my opinion and say things like "which one do you like more?" then no way. The reason I don't like shopping is because I have no opinion. If it was someone who you could explain "I don't want to stand out, I don't want to look like x, y or z, I don't want to talk to anyone in any shop, I don't want this to take more than w hours" Then maybe.

</comment><comment><USER9> I usually pick out things that fit in plain neutral colors so I can wear lots of different combinations. When something wears out I often buy exactly the same make/model almost without thinking. When I find something that fits i regularly buy more than one in different colors. My clothes seem to wear out very quickly.

I would definitely let someone do it for me. I don't know a lot about fashion and I'd love to look better.

</comment><comment><USER5> I pick out my own clothes. I think I do a good job. At this point in my life, I don't think I would trust someone else to do it for me, without a long term one-on-one relationship where we could collectively develop their understanding of my style. There have been other points in my life when it would have been more welcome.

</comment><comment><USER10> I like buying clothes myself, so I wouldn't have someone do it for me all the time. However, I also like getting clothes as Birthday/Xmas gifts and my family knows what I like.

My shopping is 50/50 in-store and online, when I do in-store shopping I like to have my wife with me, mostly for company and to verify what I pick fits and looks good.

</comment><comment><USER11> I shop myself. I peruse GQ, and /r/mfa for style inspiration. I actually just got back from Black Friday shopping and I'm wearing these really comfortable A&F sweatpants as I type this.

<comment><USER5> I like askandyaboutclothes.com, cut with my own style and a healthy dose of common sense...

</comment></comment><comment><USER12> Nope. Size fit color is blue (or else black, which is kind of a dark blue). No (they don't tend to respect the blue rule). Also: move to a hot country to reduce the need for clothes.

<comment><AUTHOR> Who's "they" that you refer to when you say "they don't tend to respect the blue rule"?

</comment></comment><comment><USER13> Sure. My criteria have been the same as informatimago, but lately I've been curious about what looks good on me and now I find myself at a loss.

</comment><comment><USER14> Shop for myself. Would never let someone else buy for me sight unseen.

<comment><AUTHOR> What if it wasn't sight unseen? What if someone could go with you and provide you a fashionable opinion? Would you let them take the lead?

<comment><USER14> I want to say possibly but the honest truth is Nordstrom has (or had) a personal shopper option and I never used them when shopping there so I can't imagine doing so anywhere else either.

</comment></comment></comment><comment><USER15> www.trumaker.com will set you up with a stylist that will help you make those decisions.

spoiler: I'm an engineer and I work there.</comment>


ImageOptim cuts image filesizes in half. Why isn't everyone using it? - <AUTHOR>

Genuinely curious why it hasn't gotten more attention. It seems like really low-hanging, heavy web performance fruit.<p>For background: http://www.chrisweekly.org/2013/10/18/omgimageoptim/ <comment><USER2> The usefulness extends to mobile platforms as well. While (AFAIK) the Android SDK optimises images to some minor extent as default when building an APK, I still like to run the images through various tools to get the best result.

On one of my previous apps, this resulted in a filesize decrease of approximately 300 kilobytes - effectively halving my apps size with no noticeable difference to the end user. Win!

</comment><comment><USER3> There are 3 tools that I use extensively:

* jpegMini, for removing EXIF info from jpegs

* optiPNG, for removing extra pallettes from pngs

* gifsickle, to optimize gif's

It's amazing on how much junk bytes you can have in your images. I used them for everything, from my picture collection to my site porfolio.

</comment><comment><USER4> ImageOptim and JPEGMini have both become parts of our pre-launch optimization, and they can easily save 50-70% of the image sizes.</comment>


Grace Hopper and UNIVAC - <AUTHOR> http://www.linuxvoice.com/history-of-computing-part-2?pk_campaign=hn&pk_kwd=3 <comment><USER2> With the recent revival of a PDP-1 hitting the news, I was wondering if we're going to see a revival in hand-made computing - i.e. systems you really can build yourself from raw components. It seems feasible to me - an ex-boss once impressed me highly by unveiling a full-blown computer he'd made from some recycled relays, and while it wasn't going to kick any ass in the speed department, it was certainly capable of calculating my 6-year olds' homework.

Would be great to see a kit computer, of this scale of old-school, hit the scene some day .. I wonder if it would be viable? I'd certainly buy it .. it'd fit next to my rack-mount modular synth. ;)

</comment><comment><USER3> For anyone who doesn't know - Linux Voice is the new magazine that was crowdfunded on Indiegogo a few months back.

They've put out three issues so far (this article is from the second issue - next is Alan Turing) and I can honestly say I'm very happy that I bought a subscription. It's well worth a look.

<comment><USER4> That's a pretty encouraging start - I was going to subscribe but the rate seems exorbitant. Is this just a symptom of small-scale publishing, of crowdfunding, a lack of advertising or all of the above?

<comment><AUTHOR> We've done our best to match or undercut out main competition, while at the same time providing more pages. The advertising market for Linux magazines isn't great, so none of them get much money from that, but of course it does take up space, so each page of adverts is one page less content you have to pay for (We have few).

Yearly subscriptions start from £38 (digital), which we think is pretty good considering how much we pack into each issue (take a look here for the contents list of issue 3: [http://www.linuxvoice.com/issue-3-is- out/](http://www.linuxvoice.com/issue-3-is-out/)).

Print subs are obviously more expensive, mostly due to the cost of postage.

</comment></comment></comment><comment><USER5> In a military organization, clarity of communication is critical and Hopper had the right idea about language design. Something echoed by Ableson and Sussman and reflected in their choice of Scheme for it's Newtonian lack of complications.

Without even looking at a book or working through a tutorial, I found that I could read and understand the Flowmatic program the first time I saw it. No surprise that it failed. Too much risk that a pointy haired boss could accurately identify an uncaught bug. Nothing offers job security like obfuscating simple ideas.

<comment><USER6> There is a trade off between a language that is easy to read and that is easy to write. Wordy, English-like programming languages are typically harder to write, and that may often not be the right trade off to make. I think this is a much more credible reason why more succinct languages caught on, rather than your far fetched suggestion that mistakes need to be hidden from bosses.

<comment><USER5> Well, I wasn't suggesting it as a universal law because obviously some programmers don't work for pointy haired bosses. Some work for themselves and others for another programmer...and what programmer thinks Cobol is so cool they would use it by choice?

In the life cycle of a significant program, which is more important how easily it was initially written, or how easily it can be read and understood over the years?

Because no one can write write a self-documenting Regex, Regex's are only easier to write because any need to document programs is ignored. The extension of this practice is an argument is that code should not contain a lot of comments because comments tend not to be maintained. As Larry Wall noted, Laziness, Hubris, and Impatience all play their role - He being the person responsible for a language so obfuscating as to garner a reputation for author's being unable to understand their own programs {heavy on Regex a coincidence or correlation?}

As Perlis said "It is easier to write an incorrect program than understand a correct one." Particularly if the language makes it harder to read the correct program and speeds up the process of writing the incorrect one. Flomatic and Cobol are verbose for exactly the same reason that some programming languages have static type systems and nobody really takes claims about their verbosity seriously because we recognize the tradeoff of keystrokes for clarity.

Hopper was a Naval officer. She took programming seriously and she understood human nature. They're both reflected in her approach to programming languages. She realized that people can die if a program on the fire control computer is incorrect and a 16" artillery shell falls short onto friendlies or long onto a maternity ward. Nothing promotes the importance of clear communication for robustness like combat - as in civilian life you never know who might be dead or retired or reassigned when the code needs to change.

BTW, I was being a bit tongue in cheek. On the other hand, programmers have been known to use obfuscation as a means for protecting their jobs, and bosses being able to read code is the primary argument for using technical people as managers rather than those with general experience as managers. Programmers are no less immune from creating fiefdoms than anyone else.

<comment><USER6> Actually I don't accept your premise that a wordy, English-like language is easier to read. Code must be both comfortable to read & write (i.e., elegant). If we assume our reader knows both language A & B, then 1 line in language A is definitely easier to read than the equivalent 10 lines in language B. Just because language B looks more familiar does not mean the precise semantics come across better. A small set of keywords is easier to fit in your head. Furthermore, in the more verbose language you are forced to spend energy that could also be spent in thinking about whether the code is correct.

Regular expressions can be properly documented in a multiline style with comments etc. For a non-trivial regular expression, the previous example holds: converting the regular expression to a sequence of if-else statements would easily take 10x the number of lines. On top of that, regular expressions are implemented efficiently. That said, I do believe comments are necessary and don't think Perl is a good language to use.

The argument about static typing and verbosity is moot, because static typing does not have to be _manifest_ typing, since type inference can provide the advantages of static typing without the verbosity.

Regarding taking programming seriously, I don't believe that has very much to do with the language, but rather with the software engineering process, cf. [http://www.fastcompany.com/28121/they-write-right- stuff](http://www.fastcompany.com/28121/they-write-right-stuff)

</comment></comment></comment></comment><comment><USER4> One of the most fascinating people in the early development of language design.

Can't wait to get that lone, VB6-based UNIVAC emulator a shot. :) Hopefully I can get the source in case it needs any defishing.</comment>


The legal history of "fuck" (2007) [pdf] - <AUTHOR> http://www.cardozolawreview.com/Joomla1.5/content/28-4/28-4.FAIRMAN.pdf

<comment><USER2> "Fuck's continued vitality is even more amazing when compared to the fate of its sixteenth century synonyms: jape and sarde are virtually unknown; Chaucer's swive is archaic; and occupy returns to English with a nonsexual meaning."

Apparently "occupy" was during 16c.-17c. a euphemism for "have sexual intercourse with," which caused it to fall from polite usage. This gives new meaning to the contemporary Occupy Wall Street movement.

<comment><USER3> I have to admit that I have made "occupy my pants" jokes numerous times in the past few weeks, and reading this bit of trivia just gives me more reason to continue with my immaturity. :)

</comment></comment><comment><USER4> My, what an enormous quantity of footnotes. There is more footnote than paper. It seems to be largely an excuse to not bother planning and structuring your essay properly.

Very interesting though.

My fuck related question: why do some people on the internet self censor with asterisks in their postings? F*ck and so on. I have tried many times to imagine a logical thought process that could lead to this behaviour, but I cannot. Perhaps someone here who does this can enlighten me?

<comment><USER5> Do you feel similarly unenlightened about using the term "the f-word", or is that easier to understand than using f*ck?

<comment><USER4> The f-word, although it still sounds slightly silly to my ears, actually makes sense because it's a euphemism. It's a contraction of "the word beginning with F" and when you say "the f-word" you are not saying "fuck" but simply referring to it, even though in practice everyone still knows what you mean.

My confusion with f&ck is that _you're still saying fuck._ There's absolutely no difference between fuck and f!ck except for the 25% difference in the symbols committed to the page.

This implies that it is the particular combination of geometric forms that is offensive or shocking, rather than the sentiment they represent, and I don't believe that this is what people actually think. However there is no other conclusion that I can see, other than widespread cognitive dissonance.

I don't mean to and sound superior or arrogant, although I accept that I probably do. I only bring it up because I sincerely want to understand better.

The other thing I have noticed about this phenomenon is that it is not restricted to conservative or particularly public arenas, or even to ones with a general expectation of professionalism like this one. I have recently seen it in discussions between activist types about recent episodes of police brutality: "The UC Davis police are utter c*nts." This was in a context where people routinely discuss civil disobedience and disregard for authority, certainly not somewhere anybody would be offended by such language, and not somewhere you would expect people to be reinforcing taboos around speech and self-expression.

</comment></comment></comment><comment><USER3> When I took linguistics, we studied "expletive infixation" in two of our courses -- and in American English, the main example of that is the word "fuck", as in "abso-fucking-lutely".

My first professor had no problems leading the class with that example, whilst my second professor became very timid during that lesson and had us use "bloody" from British English instead. It's amusing to me that even linguistic professors can become shy at the sound of an obscene word -- the taboo-ness is that ingrained into us.

More on expletive infixation: <http://en.wikipedia.org/wiki/Expletive_infixation>

</comment><comment><USER6> Disappointed that the author missed out the notable case of Arkell v. Pressdram (1971), frequently referenced in England's Private Eye magazine. (<http://en.wikipedia.org/wiki/Private_Eye#Litigation>)</comment>


Snap: Making RSS interactive - <AUTHOR> http://schulzeandwebb.com/blog/2008/02/06/snap/ <comment><USER2> Seriously, this is Brilliant. I've been wondering what would be a good protocol to aggregate "web 2.0" (which is what people need) and I think this is it. The only thing missing is a way to combine the different feeds together into a single application. Is snap recursive? I.e. you could feed feeds into a feed? Can snap become an FPL?

Now, the trick is to make the standard catch on. I wish you guys luck!</comment>


Who is supplying their images? - <AUTHOR> http://www.huffingtonpost.com/nathaniel-bach/epic-fail-mccain-campaign_b_123429.html

<comment><AUTHOR> If you look in the huffpost's big news pages, you'll see the images don't match the names underneath. I figure it must be done programmatically then... Does anyone have any info?

I see a picture of Fred Thompson for Barack Obama. A picture of Sarah Palin for Joe Biden.</comment>


Perhaps we should all ditch Google Analytics - <AUTHOR>

Google is still gaining more and more power, and with their recent changes, they're so called "privacy" thing, to protect its users and hide their keywords, I think it's better if we all switch to different analytics tool.
Piwik is a free alternative, or we can also use getclicky or KISS, there are many out there.
What do you guys think? <comment><USER2> I really don't understand any part of your argument.

<comment><USER3> I second that

</comment></comment><comment><AUTHOR> See this also: [http://www.davidnaylor.co.uk/what-does-not-provided- keywords...](http://www.davidnaylor.co.uk/what-does-not-provided-keywords- really-mean.html)

And [http://www.davidnaylor.co.uk/tracked-google-users-will- resul...](http://www.davidnaylor.co.uk/tracked-google-users-will-result- in-10-of-keyword-data-lost.html)

</comment><comment><USER4> On what grounds? I'm not sure you've given any reasons at all to ditch google.

<comment><AUTHOR> Not Google, but Google Analytics.

They are hiding the 'organic keywords' from viewing, from users who are logged in.

This amount can be from 10 to 25% from all search traffic.

They do this for "privacy" reasons, but somehow, if you PAY them (Google Adowrds), you seem to see all the keywords?

It's like forcing people to use their service.

<comment><USER5> How are they forcing you?</comment></comment></comment>


Ask HN: If target="_blank" without rel="noopener" is unsafe - <AUTHOR> Ask HN: If links with target="_blank" without rel="noopener" are unsafe, why is "noopener" not just the default? <comment><USER2> Here is a link fyi : [https://developers.google.com/web/tools/lighthouse/audits/no...](https://developers.google.com/web/tools/lighthouse/audits/noopener)

Here is the rel attribute desc : [https://developer.mozilla.org/en- US/docs/Web/HTML/Attributes...](https://developer.mozilla.org/en- US/docs/Web/HTML/Attributes/rel) where you will find an explanation :

"The rel attribute has no default value. If the attribute is omitted or if none of the values in the attribute are supported, then the document has no particular relationship with the destination resource other than there being a hyperlink between the two. In this case, on <link> and <form>, if the rel attribute is absent, has no keywords, or if not one or more of the space- separated keywords above, then the element does not create any links. <a> and <area> will still created links, but without a defined relationship."</comment>


Are voting-machine modems truly divorced from the Internet? - <AUTHOR> https://freedom-to-tinker.com/2018/02/22/are-voting-machine-modems-truly-divorced-from-the-internet/ <comment><USER2> This supports my long held belief that one of the best thing we could do for improving vote administration is convincing the public to be patient with results.

There's no particular reason everyone _needs_ to know the results of a competitive state-wide race the same night the polls close, yet we are making all kinds of security and other tradeoffs to support this as a goal.

<comment><USER3> Just do it like the Germans where there are no more voting machines, just paper ballots, and you have the election result within a few hours.

There is really no reason for voting machines at all.

<comment><USER4> Indeed touchscreen voting machines have well documented security flaws, but the article mentions optical-scan machines by ES&S. That is, machines that scan paper ballots. Paper ballots would be reviewed by humans during recounts, or if doubts arise over the tallies, but maybe not if election officials have no reason to be doubtful.

</comment></comment></comment><comment><USER5> I'm sure there are ridiculous penalties for interfering with actual elections, but I can't help feeling that what we need with electronic voting machines is for someone to hack them to _only_ pick Democrats. Within 3 hours, Republicans would be calling for paper-only ballots, and sanity would have prevailed.

<comment><USER4> The article mentions optical-scan machines, i.e. machines that tally paper ballots.

<comment><USER6> Those have always bugged me. Ok, so I fill out this scantron sheet, but how do I know that the computer interpreted the results I filled out? How do I know that some goof on the paper invalidated a vote?

I'd like some sort of verification and 2 clicky buttons with VOTE/NO VOTE test upon seeing the scanned results. I guess I expect too much here...

<comment><USER7> While probably scary and a non-starter for some have often wanted a key stretched hash of a voters id number/vote/salt as a public record (possibly also stamped into a blockchain) and able to be checked by the voter holding the salt and no one else.

Once you put a ballot paper in a box you have no idea whether it was properly counted or lost.

There's the inevitable issue of cryprographic advances and forward secrecy, which wouldn't sit well with some people for fair reason, anonymous voting is a cornerstone of democracy. Personally wouldnt mind my vote being public a few decades after the fact but not before then.

Electronic voting has a bad reputation here but there's certainly room for improvement on paper only.

</comment></comment></comment></comment><comment><USER8> >Even easier than hacking through router bugs is just setting up an imposter cell-phone "tower" near the voting machine; one commonly used brand of these, used by many police departments, is called "Stingray."

am i too optimistic to assume that the voting machines at least use TLS?

<comment><USER9> That's mostly irrelevant, since that only protects the integrity and confidentiality of that TCP connection. However, you can still exploit the vulnerabilities of all the services listening on the device. Separating voting machine networks from the internet is orthogonal to the problem of network protocol hardening between endpoints within this "separated" network.

</comment></comment><comment><USER10> Why are they connected to any network at all? Why aren't they just used to tally votes?

<comment><USER11> Because voters "need" to know results as soon as possible.

(they actually don't need to know, but they think they do)

</comment></comment><comment><USER12> I think the tl;dr is: security is hard. Really hard. In fact anyone who trivializes the complexity of keeping voting secure (including congress) is not understanding it.

</comment><comment><USER13> Landline modems are by far the most secure. But even those modems call out to fiber optic cables that run on the same switches as the internet and cellular networks. ISDN modems a communication protocol that uses something like block chain technology is the best we can offer. ISDN give use speed (less chance to get intercepted) and data validation that audio modems just don't.

Those option aside, physically shipping the units in armored trucks with tamper tapes installed and physical tapes as a backup is the best option.

<comment><USER14> Key exchange is a non issue with these systems making secure SSL connections viable. However, I don't think they actually need modems in the first place. IMO, they are ideally purely independent boxes, simply print a receipt or even just display their output.

A few pictures of the output in the hands of observers and 'tampering' after that point becomes pointless.</comment></comment>


Make the Leap from JavaScript to PureScript - <AUTHOR> https://javascript.works-hub.com/learn/make-the-leap-from-javascript-to-purescript-c7ac7 <comment><USER2> PureScript really hits the sweet spot for me, and it's become my favorite functional language over the last six months. It really feels like a purpose built stripped down Haskell without some modern refinements (string handling, records, compiles to readable JavaScript). You can easily manage dependences to incorporate the absolutely minimum set of packages necessary to run your project, and I think its safety is unparalleled.

That said, the community is pretty small (but also really awesome), and it fits into what is starting to feel like a crowded space (ReasonML, Elm, ClojureScript [kind of], TypeScript, etc), but I'm still hopeful that PureScript gets some traction over the next few years and becomes more widely used in the industry, as it is a fantastic language and deserves to be more widely recognized.

Also, if anyone is looking to try PureScript with minimal effort, I threw together this guide a while back:

[https://github.com/tmountain/purescript- reproducible](https://github.com/tmountain/purescript-reproducible)

<comment><USER3> > without some modern refinements

Did you mean "with some modern refinements" ?

Otherwise, I agree. String handling, vectors, and record namespacing/access are quite annoying legacy burdens of Haskell, improved upon in Purescript.

The type system lacks some of the power, but is sufficient for most designs IMO.

<comment><USER2> Sorry, yes, that was a typo.

</comment></comment></comment><comment><USER4> We use PureScript for almost all frontend happening at my company, Lumi (YC W15). We're definitely biased towards functional programming since we use Haskell on the backend, and the creator of PureScript, Phil Freeman, works here as Director of Engineering.

We're starting to publish more about the benefits of this approach and sharing open source libraries here: [https://www.lumi.dev/](https://www.lumi.dev/)

Our React bindings are interesting to look at if you are curious: [https://github.com/lumihq/purescript-react- basic](https://github.com/lumihq/purescript-react-basic)

</comment><comment><USER5> A resource that covers more of these questions is covered here: [https://github.com/JordanMartinez/purescript-jordans- referen...](https://github.com/JordanMartinez/purescript-jordans- reference/blob/latestRelease/00-Getting-Started/01-Why-Learn-PureScript.md) Not all of it is up-to-date or presents the best arguments one could muster. Rather, it's goal is to be "good enough."

Also related (but unfortunately not yet finished): [https://github.com/chexxor/purescript-documentation- discussi...](https://github.com/chexxor/purescript-documentation- discussion/blob/50351c1aae8346c0f24125157316476ebb310db8/02-Context-or- Narrative/State-of-PureScript-Documentation-2019.md)

See these repos for an example of the language in action: \- [https://github.com/jordanmartinez/purescript-jordans- referen...](https://github.com/jordanmartinez/purescript-jordans-reference) \- [https://github.com/jordanmartinez/learn- halogen](https://github.com/jordanmartinez/learn-halogen) \- [https://github.com/thomashoneyman/purescript-halogen- realwor...](https://github.com/thomashoneyman/purescript-halogen-realworld/)

</comment><comment><USER6> I've been thinking about using PureScript years ago as I've enjoyed the PureScript by Example book [0] and the language that seems like a cleaned-up version of Haskell.

I didn't like that the compiler is not written in PureScript (although there was a proof of concept [1]. Additionally, even though it compiles to JavaScript, the code that is generated is sub-optimal performance-wise [2].

Ultimately I used TypeScript and have been happy with that but still long for better FP language that generates lean code and can be used in a browser.

[0]: [https://leanpub.com/purescript/read](https://leanpub.com/purescript/read)

[1]: [https://github.com/purescript/purescript-in- purescript](https://github.com/purescript/purescript-in-purescript)

[2]: [https://github.com/purescript/purescript/issues/2577](https://github.com/purescript/purescript/issues/2577)

<comment> huy-nguyen I'm also concerned about PureScript's JS output so I looked into ReasonML and has been quite impressed. The type system is a bit less powerful (no type classes yet) but the JS output is very readable and maps almost line-to-line to ReasonML code.

</comment></comment><comment><USER7> I don't buy this idea that the programming language you use determines the quality of your work. There is no evidence to support this. These extreme programming fads were invented to sell books.

If novelists followed the same approach as programmers and they kept trying to find the perfect language to write their books in, they wouldn't manage to publish a single interesting novel.

A language cannot prevent someone from making stupid mistakes. At best, it solves one set of familiar problems and replaces them with a new set of unfamiliar (but equally bad) problems; then you have to learn to cope with those new problems until the next hyped-up language fad comes along claiming to solve those new problems and then you repeat the cycle.

<comment><USER8> > A language cannot prevent someone from making stupid mistakes.

This can be refuted in one.

        if(a = b)

Languages that uses := for assignment, or some other operator, don't have the mental overload of equals being used both for assignment and for equality checks. Typos like the above become not possible.

Other languages just don't allow assignment in 'if' statements.

In regards to floating point support, a language could default overload equality checks so that they are configurably fuzzy when comparing floats.

And of course, languages already prevent stupid mistakes. Even the humble C compiler properly arranges the stack for us when exiting a function, putting all return values in the appropriate place based on the platform's ABI and restoring registers that are supposed to be preserved.

<comment><USER7> >> Typos like the above become not possible.

In my 15 years of programming experience of programming every single day, I have made this kind of typo maybe 2 or 3 times in total and it took me less than a minute to identify and fix the problem each time.

On the other hand, the amount of time that it would have taken me to type out that extra ':' a few million times would have been much more costly.

<comment> T-R This is a _really_ arrogant statement. In C, `if(a = b)` could cause incredibly subtle bugs. It was prominent enough that it got addressed in all the best practices books, like "Writing Solid Code", with a style that got later termed "yoda conditions" \- a style that was prominent in spite of being acknowledged as less readable, because it forced a compiler error more often. It's hard to even think of many other types of bug with that kind of significance, and you just dismissed it out of hand with "I don't make those kinds of mistakes".

<comment><USER9> If the problem is so bad, why not simply use a linter? Actually, almost all instances of this typo can be caught by a simple regular expression.

<comment> T-R Well, that's pretty much equivalent to the the language preventing bugs, for the purpose of the conversation. You can imagine similar cases that would be harder for a linter to pick up. Things like type errors, or accessing the wrong side of a union - in C++ people used Hungarian Notation for a good while to try to make these kind of errors more detectable; now some languages have tagged unions/sum types to make them nearly impossible. The point where a linter _is_ distinct from the language in catching syntactically evident errors is that, even if I use a linter for my own code, that isn't the same as having buy-in from the whole team to block any code that doesn't pass the linter from shipping to production; language syntax, on the other hand, is implicitly agreed upon.

Addressing this specific example, historically, running a linter all the time wasn't always practical, and `if(a = b)` was used intentionally a lot, e.g. to inline a check for a null pointer with an assignment.

</comment></comment></comment></comment></comment></comment><comment><USER10> Does anyone have any experience with both PureScript and ReasonML that can compare the 2?

<comment><USER11> During the 2016-2017 New Year I did an intense look into Purescript. I bought the LeanPub book and did all kinds of stuff with it. More recently I did a look into ReasonML. I bought the Pragprog book and worked through that. For me, it came down to Haskell vs OCaml. I'll admit, I have a serious love for OCaml/F#, so I immediately was excited about ReasonML. Many concepts just transferred very easily. Purescript felt very academic once I got into trying to build real things. Watching Phil Freeman's talks/Google Hangouts on building cool new projects really was eye-opening. That guy thinks on an entirely new level... who knows, maybe most Haskellers do? I have a sincere appreciation for Haskell, but I have yet to bend my mind around it, so Purescript left me in the same place - I felt like I wasn't really grokking it. I should stress that this is ME, so you may have an entirely different experience. I'm not saying that Purescript was bad at all.... it just wasn't clicking very well.

</comment></comment><comment><USER12> This just reminds me of "Make the Leap from Javascript to Coffeescript"

Remember where that got us?

This stuff is all really cool and fun to work on, but instead maybe we should focus on changing the JS standard for the better since we always end up working in it anyways!

[https://js.foundation/](https://js.foundation/)

<comment><USER13> Why not both?

CoffeeScript was awesome at the time, and ahead of its time. JavaScript owes many of its new niceties _to_ CoffeeScript.

Yes, please, let's advance the state of JS. And let's push the boundaries with other languages that don't have the backwards-compatibility constraints and corporate sluggishness that JavaScript does. Then take the best features and merge them into JS.

<comment><USER12> Yeah it was awesome! But then years later most projects are wasting engineering time to convert their whole code base which is a bummer! That's all I'm saying.

</comment></comment></comment><comment><USER14> Question is why? What's better about PureScript that would make other FP programmers (eg; Elm) choose over it?

<comment><USER15> One of the biggest reasons for me is that you can run it on the backend too (on NodeJS, or Erlang, or some other VM - yes, there are several backends available)

<comment><USER16> Anything that targets JS, including Elm, can in theory be run on Node.

<comment><USER17> Can I run PureScript on node practically? If so, examples please.

<comment><USER15> Here's a wrapper for express: [https://github.com/nkly/purescript- express](https://github.com/nkly/purescript-express)

Examples: [https://github.com/nkly/purescript- express/tree/master/examp...](https://github.com/nkly/purescript- express/tree/master/examples)

</comment></comment></comment></comment></comment><comment><USER18> I'm put off (not because of the formatting):

[http://try.purescript.org/?session=60f1839b-bd82-d9af-75ef-d...](http://try.purescript.org/?session=60f1839b-bd82-d9af-75ef- dcd936c4a0a2)

It adds weird syntax where it doesn't matter, like "<>" for string concatenation, but it doesn't cut down on noise where it _does_ matter, i.e. the "list of records" in the example.

I'm also wary of a language that puts "pure" right in the name. Purity is nice and often beneficial, but there's a point where it just becomes a crutch. That point which is where the FP adherents and the mainstream diverge.

<comment><AUTHOR> It's not a syntax, it's just a function (<>). Also how would you "improve" list of records?

<comment><USER18> > It's not a syntax, it's just a function (<>)

Doesn't matter, it's annoying to type and read. What's wrong with '+'? (Rhetorical question, _nothing_ is wrong with '+')

> Also how would you "improve" list of records?

Admittedly, I had not thought of a better solution, but it looks noisy where supposedly such a language should look "clean".

Perhaps something like this:

        examples:{title:string, gist:string} = [
              { "Algebraic Data Types", "37c3c97f47a43f20c548" }
              { "Loops", "cfdabdcd085d4ac3dc46" }
              { "Operators", "3044550f29a7c5d3d0d0" }
              { "Records", "b80be527ada3eab47dc5" }
              { "Recursion", "ff49cc7dc85923a75613" }
              { "Do Notation", "47c2d9913c5dbda1e963" }
              { "Type Classes", "1a3b845e8c6defde659a" }
              { "Generic Programming", "3f735aa2a652af592101" }
              { "QuickCheck", "69f7f94fe4ff3bd47f4b" }
          ]

<comment><USER19> Putting addition and concatenation under the same operator massively backfires when you start using math libraries. All of the language semantics is thrown out of the window when you can realistically sum or concatenate the same two elements, but the operator can only be used for one case (example: python and numpy).

For the list of examples, you can just use tuples if you want the "clean" look. There is no need to change the record semantics which is the same in almost all languages.

<comment><USER18> > All of the language semantics is thrown out of the window when you can > realistically sum or concatenate the same two elements, but the operator can > only be used for one case (example: python and numpy).

Huh? You can't realistically "concatenate" two numbers and you can't "add" two strings. You can only concatenate two strings, or a string and an (implicitly converted) number. You can only add two numbers, or the elements of two number arrays (or matrices). Plus isn't the "sum operator" (Σ). There generally is no sum operator, there's a sum function (which works on iterables).

So what's the issue? It doesn't cause problems unless you confuse types, which shouldn't happen in a statically typed language.

> For the list of examples, you can just use tuples if you want the "clean" > look.

Is that really true though? Can I initialize an array of records with tuples that are implicitly named?

> There is no need to change the record semantics which is the same in almost > all languages.

This is basically C/C++ syntax, which somehow manages to be less verbose than many supposedly terser languages.

</comment></comment></comment></comment></comment><comment><USER20> I do not do any web related programming but was quite intrigued and impressed by a language called Opa. Could anyone watching this space comment on what is happening in the Opa world.

</comment><comment><USER21> Scanned the home page for any reference to how you interface with the browser API in purescript. Is it any different than in js?

<comment><USER15> Most of if is already wrapped in a well-maintained package: [https://pursuit.purescript.org/packages/purescript-web- dom/2...](https://pursuit.purescript.org/packages/purescript-web-dom/2.0.0)

But doing FFI and just using JS when needed is very easy: [https://github.com/purescript/documentation/blob/master/lang...](https://github.com/purescript/documentation/blob/master/language/FFI.md)

So, to answer the question: no, it's exactly as in JS, because _it is_ JS

<comment><USER22> The biggest problem with PureScript right now is so many of the libraries have little traditional documentation.

They often just include generated module level type/function docs as in the `purescript-web-dom` one you linked to. Meanwhile the developer just wants a quick overview and some examples of querying the DOM in order to evaluate it.

I tried using PureScript last year but I was having dependency problems like crazy. Largely because everything was very alpha and dependency chains were unreliable.

It's good to see the community maturing, there's still some way to go first, which is excepted with any new language. I might try it out again this weekend as I'm a fan of Haskell.

<comment><USER15> Agreed. Documentation is hard in all languages though, and it usually gets fixed slowly over time as langs mature.

If you had dependency problems you were likely using bower (where dependencies are "resolved", and this leads to broken states in some cases). You might want to try a "package set" approach instead - i.e. there's a curated set of library versions that are known to work together, so "dependency problems" become impossible for users: [https://github.com/spacchetti/spago](https://github.com/spacchetti/spago)

</comment></comment></comment></comment><comment><USER23> What's the deal with being tied to bower as the package manager?

<comment><USER24> It isn't necessarily though. A lot of people are using Spago ([https://github.com/spacchetti/spago](https://github.com/spacchetti/spago)). Bower is fine though for how they're using it. Often times it'd kill for the ability to relink libraries locally like bower lets you do in Elm while working through a PR of an external library for my use-case.

</comment></comment><comment><AUTHOR> The repo [https://github.com/adkelley/javascript-to- purescript](https://github.com/adkelley/javascript-to-purescript)

</comment><comment><USER25> Misread as "Make the Leap from JavaScript to PostScript".

Now that I would have been on board with!!

:-)

</comment><comment><USER26> What about HypeScript..anyone using that?

</comment><comment><USER16> What distinguishes PureScript from Elm?

<comment><USER27> type variables, type classes, parametric polymorphism. Elm is similar to golang missing generics, its a large gaping hole.

</comment></comment><comment><USER28> Typescript.</comment>


ReactJS for Stupid People - <AUTHOR> http://blog.andrewray.me/reactjs-for-stupid-people/ <comment><USER2> i still wonder where/what the difference between state and props are. Say, I render a collection where user selects one item at a time. where is the state? what are properties of that collectionview?

<comment><USER3> I think there is no "proper" difference. For what I understand it's only a practical way to have a segregated state only the component is interested of. React.js is a valuable precursor but I hope we'll have something different soon.</comment></comment>


UX trumps UI (and I can prove it) - <AUTHOR> http://iaindooley.com/post/59861607666/ux-trumps-ui-and-i-can-prove-it

<comment><USER2> In summation this article seems to say that product experience and a functional tuftian interface outweighs the need for UI by highlighting products like VIM and Google AdWords. If you're making this case I don't understand why you would use "power user" products as an example over an ATM machine; something the average consumer uses on a daily basis.

<comment><AUTHOR> ATMs are a good example of where a strong experience proves motivating enough to overcome a pretty tragic UI! Another one that springs to mind is driving.

That's not the summation of the article, though ;) the summation of the article, I would say, is that UX is so important we need to define it properly; it also proposes a definition that's somewhat different from the post that originally inspired this one.</comment></comment>


Machine Learning is not the future - <AUTHOR> https://techiesnu.wordpress.com/2017/04/28/machine-learning-is-not-the-future-it-is-the-present/ <comment><USER2> Submitted post title is deliberately misleading. Should end with "It is the present".

<comment><AUTHOR> Oops I didn't realize I missed that!</comment></comment>


Ask HN: Which domain registrar has the best UI? - <AUTHOR> UI trends towards mobile first, I am afraid, are breaking usability of some services and domain registrars seem to be headed in this direction.
Mobile first generally means one thing:  Everything is larger so fingers, rather than mouse-operated cursors, can be used to interact with the site.
Imagine having to interact with a service listing over 200 domains you own.  And now everything on that page is "mobile first".
That page sucks.  It is virtually unusable.  Productivity is terrible and access to information cumbersome.  You have to touch indecipherable icons to discover such things as expiration dates and whether or not you have auto-renew enabled.  You only see 8 to 10 domains on the screen when you could easily fit fifty or sixty on an equivalently sized Excel spreadsheet.
Rather than having columns with spelled out status elements (again, imagine an Excel sheet you might design to maintain information about your domains) the designers of these UI's choose to make you click (hovering is out on mobile) to see detail.
This is absolutely horrible and a huge step backwards rather than forwards.
So, are there any good and sensible domain registrars who actually understand what customers need by designing management UI's that don't waste our time?
I don't have a problem with the external website being mobile friendly.  Once I am inside I want to get shit done.  Good design is wonderful and I do appreciate it, but not at the expense of productivity.
EDIT: Developers:  Bootstrap isn't the solution to every UI problem! <comment><USER2> Not namecheap.

They use the same form for signup and login but show two forms on the page, so if your browser autofills the login form, and you fill out and click submit on the signup form, it uses the user information from the login form to log you in.

And, since it asks for login >after< you have selected checkout, it will then complete your purchase on the wrong login.

I found this out the hard way when I purchased a domain from them, but had my work's credentials stored in my browser: I bought a domain for my wife using my employer's namecheap account.

Of course, their help desk was convinced that there was something wrong with my browser.

<comment><AUTHOR> I have domains with more than one registrar. One of them is Namecheap. They tried to improve their old UI. Not sure how they went about it but I fear they made it worst at many levels.

Hint to developers: Don't throw Bootstrap (or Bootstrap-like designs) at everything!

</comment></comment><comment><USER3> It's not pretty, but the UI at internet.bs is so much better than others for edge cases...like bulk transfer of domains.

Namesilo.com is also reasonable.

Both of them avoid the issue that irks me the most...irritating cross-sell and upsell. Looking at you GoDaddy.

</comment><comment><USER4> name.com

<comment><AUTHOR> What does their domain management UI look like?

I wish a lot of these companies provided screenshots of their UI's.</comment></comment>