Steve's story - Google employee #13 - <AUTHOR> http://googler13.blogspot.com/2011/01/steves-story-googler-13.html <comment><USER2> This is a story of a true hustler - and I mean that in a good way.

This guy got out there and hustled for a job. He hustled his way into Netscape by persistently calling and eventually "hacking" his way into contact with a well connected business person.

Then when he was employed at Google, he went out there and hustled dollars that made them actually get some turnover.

It's a story we don't hear very often. It's a story about the people that make the _money_ rather than the people that make the _technology_.

In a world where so much of the technology sector seems to be predicated on the idea that you build something cool, get users and sort the "money stuff" out later, it's easy to forget that, at some point, someone's gotta get out there and actually make some god damned money.

Having attempted to sell various technological services of my own for the past 4 years, I can whole-heartedly say that in my experience, building the technology is the easy part.

Being able to monetise it is a magical gift!

I'd also like to add that I find it pretty far fetched to refer to this success as "luck". Being a good salesman, being a good hustler, is all about _being there_. That's why CRM systems are such a vital sales tool - you need to make sure that every few months you call your prospects, and if you don't sell to them then you make an appointment to call back in 3 months and so on.

Whether you're selling vacuum cleaners or selling your own services as an employee or contractor, you can't refer to every successful sales as "luck" - it's success based on persistent action. If anything you'd have to refer to people who hustle well and _don't_ succeed as being unlucky, rather than the other way around.

<comment><USER3> Good salespeople are awesome and I am in awe at their ability to do things that most hackers don't realize. Remembering names, building relationships, and convincing people to give them money.

It's very easy to disparage what they do because from the outside it seems trivial. But I attended a sales meeting once and I'm never taking these guys for granted ever again.

To put it another way, their entire salary is based around selling your work. As a programmer that pulls a normal salary, that means they have more confidence in what you do than you.

Also, company hierarchy almost always dictates that the further you are from the money the more precarious your role is. You could lay off all the engineers tomorrow and the company would limp along for 1-2 years. You lay off all of the sales staff and that company is dead in months.

</comment></comment><comment><USER4> I like this because it resonates with Paul Buchheit's earlier blogpost about not letting ego fear rule your life:

[http://paulbuchheit.blogspot.com/2010/10/serendipity- finds-y...](http://paulbuchheit.blogspot.com/2010/10/serendipity-finds- you.html)

Yes, this guy got superbly lucky. He also put himself into a position where it was possible to get superbly lucky, and then capitalized on that luck as well as possible.

<comment><USER5> I spent the last 2 or 3 years, wondering what made people successful.

I've since read about all the popele who I find successful. Here's the conclusion I've come to.

1\. They ship things.

2\. They work on something everyday.

If you do those two things you will be successful.

<comment><USER6> I shipped things and worked on something every day from age 22 to 35 and was not successful. Silicon Valley is filled with people and the ghosts of people just like me.

<comment><USER7> Hey there.

I'm sorry to hear that but I think you might have a lot of insights that would help us up and coming entrepreneurs if your willing to share.

Something else is your actual calling. Maybe its helping entrepreneurs?

PS: I'm not trying to sound trite. I mean this sincerely.

<comment><USER6> I'm not sure there's as much to learn from failure as various self-help business books would suggest. When you remove the specifics all startup advice is trite at best and dangerous at worst.

<comment><USER7> Well what would you say that an entrepreneur needs to keep in mind regardless of what the self-help books say?

</comment></comment></comment></comment></comment></comment><comment><USER8> _Over a two-week period, I left messages on every single voice mailbox I could get at that company. I was never able to get a human on the phone or get a call back_

I thought this would be about Google

</comment><comment><USER9> Sounds like he was in the right place at the right time. I think it would be a mistake to read anything into his story other than "be really lucky".

EDIT: There were lots of people just like him that weren't crazy-successful. It's wonderful that he put himself into a place where he could succeed, but that's only necessary, not sufficient, to realize that success. He deserves credit for buying the ticket and taking the ride, but beyond that it's luck.

<comment><AUTHOR> We were all in the right place at the right time. There is something to be said for making an effort to put yourself in the "right" place though.

<comment><USER4> Where do you think the "right" place is right now?

The problem I always have is that the right place isn't really apparent until years after the decision about where to be is made. At the time, there're many places that look appealing, and little reason to choose one over the other. And then it's only with hindsight that one of those becomes a big success and the rest become has-beens.

I was thinking about this today when responding to a Reddit post whining about how there're no good high-paying jobs left in this country:

[http://www.reddit.com/r/economy/comments/eyu1o/the_unemploym...](http://www.reddit.com/r/economy/comments/eyu1o/the_unemployment_rate_is_it_right_or_wrong/c1c170c)

Of course that's false. However, when I think about how I got my good high- paying job, the answer that comes to mind is "pure dumb luck". I happened to like computers when I was a teen in the 90s, and I happened to stick with it through the dot-com bust in the early 2000s, and so now that these CS jobs are paying six figures easily, I've got close to ten years experience in skills that are very hot. But I wasn't really thinking about professions or salary at the time; I was thinking "Hey, this seems sorta interesting, I wonder what else I can find out..."

<comment><AUTHOR> YC. Of course I'm biased, but on the other hand I'm betting on it :)

Even companies that don't make it often lead their founders to other great opportunities (e.g. at other yc companies). I also believe there's something surprisingly powerful about witnessing success first hand.

</comment></comment></comment></comment><comment><USER10> I google his name and there is not much about him after he left google. He says 'I am now looking to share some of my knowledge and experience to benefit the next wave of those who aspire to do as I did' I am just curious what has he done to benefit the next wave?

<comment><USER11> Well, he just wrote an inspiring blog post.

And he started the Warrior Heart Foundation to "inspire and empower people to live their dreams". Unfortunately, I can't find much about it except some videos of their participation in the Gumball rally.

<comment><USER10> yeah they are racing on a Porsche Carrera GT, nice car :) do you think this post is newly written and that blog is really his?

<comment><USER11> I have no proof that it is his blog, but I have also no reason to believe it isn't. And yes, it's a nice car!

<comment><USER12> If I ever start a charitable foundation, I want it to be the kind of charitable foundation that allows the founder to race supercars and doesn't seem to have any other activities. That's my kind of charity.

</comment></comment></comment></comment></comment><comment><USER13> I wonder how different his story would be if he was still at Google today. I understand that there was a pretty magical feeling at Google in its pre- and immediately post-IPO days, and I'd be interested to hear from someone who lived through that and is still at Google now.

<comment><USER4> My VP is one of those double-digit-employee-ID people, and he recently said "People ask me what it was like to work at Google in the early days. This [the making of Google Instant] was what it was like to work at Google back then."

So in at least some parts, that spirit still exists at Google. The problem is that it's much harder to find well-defined problems that are ambitious and yet feasible.

<comment><USER13> You know, as awesome as Google Instant is in principle, I never find myself using it. The chrome omnibox is just too useful, although I get that's pretty much Instant anyway.

<comment><USER4> I'm the same way...I often find Instant actively distracting as a user, particularly since usually the only time it triggers for me is when I'm editing some numbers on a Calculator search. (For everything else, there's the Omnibox.)

But I'm not a typical user. Chrome's market share is what? 7-10%? That means that 90-93% of Internet users don't even _have_ an Omnibox.

Anyway, I think his point isn't necessarily that Instant is awesome (though I'd imagine he'd think it is), it's that the _making_ of Instant was awesome, and included the same sort of focused teamwork in pursuit of a seemingly impossible goal that early Google had.

[Side note: from everything I've heard, Chrome itself is one of those awesomely-managed projects that contains a large team of people working towards an ambitious goal. Much like early Google.]

<comment><USER13> RE: Side note: That's the impression I get. Given Chrome's release schedule and the pace at which they're improving it, it really seems like a balls-out effort by a fairly large group of driven engineers. I bet it'd be fun to work on.

</comment></comment></comment></comment></comment><comment><USER14> I wonder if this could've happened outside the Bay Area though. This is part of the reason the area works so well as a hub, because it really does maximize serendipity of the life-changing kind, since almost everyone in the area has been in a similar situation before.

<comment><USER15> Forget about the Google element. Forget about the technology element. It's an example of someone who was relentlessly resourceful.

If he wasn't in the Bay Area he would have found an incredible opportunity somewhere else, always throwing himself into the path of oncoming opportunities.

</comment></comment><comment><USER16> Loved the story, as of course, so many of you did.

At the risk of being sounding judgmental on other people, I will still say, that his now leading a retired(ish) life doesn't jell well with the story of a person, who can do such heroics (like putting a job needed board, on his chest and standing the whole day).

Again, apologize for being preachy, life is a journey, and stagnating at any point, doesn't help...I am about as old as him...have had my share of moderate successes in life... looking for more...some of the best code I've written in my life has been in the past couple of years...look to write lots more ...:)

<comment><USER16> May I know the reason, why my above comment was down voted?

Its quite insulting to be done so, after having written the comment, with the best of intentions.

PS: If I don't get a satisfactory answer. Will quit HN. It may not matter to you of course.

<comment><USER17> When he said, quote-unquote, "retired" he most likely just meant that he is no longer forced to work for his substinance. He is still out there, he is just free to pursue exactly what he wants.

<comment><USER16> I agree. Actually, at my age (approaching middle age), that 'retirement' word, doesn't sound right ... it may mean either 'resigned', 'lazy', 'tired' and other negatives... and success can indeed make you 'lazy' and 'fat'... so may be I read more into it. Personally, don't like that 'retirement' word. At- least not till I am actually forced to do :)

So my role models are people like Vishy Anand, who at 41, is still the world chess champion (I believe, hacking is also as energy-needing as playing chess)...

</comment></comment></comment></comment><comment><USER18> _Imagine a place where early-stage technology companies can get inexpensive development capital from the pooled investment dollars of individuals who trade their stock directly over the Internet._

(from the document TechnoEquity)

</comment><comment><USER19> When looking at these stories i always wonder if my computer science bachelor degree will really help me when i get in 2 years...

My time spent learning algorithms and mathemathics that bore me with lack of practicality could be spent working on my own projects...

What do you think, is a degree in CS important for someone who is able to employ himself and (soon) others?

<comment><USER20> Get your degree and work on your own projects. College is perfect for that since it's a few years where you have student loans as a financial buffer and nobody's pestering you about not having a job.

<comment><USER21> Exactly. Get the degree _and_ work on your own projects. This is how I described my experience recruiting at a college job fair:

"One student showed me her resume: it showed perfect GPA, lots of classes with impressive-sounding titles. But no summer job, no internship, no side project.

Another student showed me a less than perfect resume, but it had all kinds of extra-curricular projects and activities, showing exposure to technologies, people and business challenges." (from [http://blog.fairsoftware.net/2009/05/13/being-a-new-cs- grad-...](http://blog.fairsoftware.net/2009/05/13/being-a-new-cs-grad-in-this- economy-sucks/))

</comment></comment></comment><comment><USER22> It brings me hope that a non-coder can make a dent in the tech world. Job listings in the past few months have been a bit discouraging for business dev & marketing types.

</comment><comment><USER23> Would this story be interesting if he hadn't worked at Google? The only thing unique about this story is that he hit the IPO jackpot.

</comment><comment><USER24> "I left shortly after IPO to pursue other interests."

:)

</comment><comment><USER25> What does he do now?

</comment><comment><USER26> this guy sounds like a barnacle. good for him though.

</comment><comment><USER27> awesome and inspiring story. thank you for sharing.

</comment><comment><USER28> miracles favor the bold.

</comment><comment><USER29> Cool story, bro.

</comment><comment><USER30> How much did he cash out for?</comment>


Cities with highest concentration of filthy rich people - <AUTHOR> http://www.knightfrankblog.com/wealthreport/current-edition/onwards-and-upwards/

<comment><USER2> And you post this on HN, where many people are aspiring to GRODT with a great startup.</comment>


What3words: The app that can save your life - <AUTHOR> https://www.bbc.co.uk/news/uk-england-49319760 <comment><USER2> Extreme scepticism: [https://news.ycombinator.com/item?id=20704017](https://news.ycombinator.com/item?id=20704017)

Personally, I think that W3W is a really, _really_ bad system to solve a probably real problem.

Other submissions of this puff piece:

[https://news.ycombinator.com/item?id=20723965](https://news.ycombinator.com/item?id=20723965)

[https://news.ycombinator.com/item?id=20706030](https://news.ycombinator.com/item?id=20706030)</comment>


Show HN: Stowbots – Sort image downloads automatically using deep learning - <AUTHOR> http://stowbots.com <comment><AUTHOR> I'll be here in the comments if there are any questions. Thanks for checking it out!

<comment> fake-name What categories has the thing been trained on?

I assume you need a fairly extensive training dataset to train a net, and that would limit your ability to provide a net trained for arbitrary tags.

<comment><AUTHOR> I gather new images based on what users request.

<comment> fake-name So I've apparently "ordered" a bot. What does that mean?

<comment><AUTHOR> Normally it means that my server would be in the process of training a neural network which would get sent to you. Did you specify categories? I see a request that was just empty, which was dropped by the server as looking like a fake request.

<comment> fake-name How do I specify categories? There's a free-form text input field. Am I supposed to put stuff there? What do I put there? What works?

For that matter, I have multiple empty requests bots (apparently). How do you delete them? I could probably edit stowbotlist.json but I can't imagine that's the intended interface.

<comment><AUTHOR> Yeah each free form text entry field becomes both a image category and a new folder that images will get sorted into. If you need to clear out the empty bots you can just delete the contents of stowbotlist.json. There will be a cleaner interface eventually but this tool is very new and still a little rough around the edges, especially in those cases where things go wrong. The demo video on the website shows an example of things you can request and how it would work.

<comment> fake-name Yeah, from the video (videos for text? Really?) you have some categories, but the point is what is the available space of categories?

Do you specify tags you want to filter by? For example, if I wanted to do (random suggestion) SMT IC package identification, how would I do that?

\</comment></comment></comment></comment></comment></comment></comment></comment><comment>

From the sound of it, right now, it sounds like you review the requested categories, and manually/semi-manually generate each specific network?

\</comment><comment>

I'm basically in a position where it'd be much more valuable to me to have a thing I can point at a directory and have it tell me what it found then something I have to say "sort into these categories".

In general, there's very few cases where I have a dataset where I want to filter by a specific content, and don't already have that metadata. Content discovery would be much more useful.

</comment><comment><AUTHOR> The beta is available now and I'm sending out copies to anyone who signs up!

</comment><comment><USER2> thanks for saving my desktop!</comment>


Simplest and most concise Twitter OAuth implementation  - <AUTHOR> http://twoism.posterous.com/a-no-bullshit-twitter-oauth-example

<comment><USER2> Way to build a short and beautiful step path to the land of Not Invented Here. It's one think not to write a tutorial to using one of the well supported OAuth gems. But you didn't actually commit to helping people either. If (and when) someone finds a bug in your implementation, they won't be able to fix it with a gem update, they'll just have to return to your gist for the lifetime of their app.

On the other hand, you've done a beautiful job at showing how simple OAuth can be. If I ever want to write a twitter client in Io or something, I'll definitely be ripping off your (apparently still copyrighted) code to do it.

<comment><USER3> _On the other hand, you've done a beautiful job at showing how simple OAuth can be._

That seems to be the main reason for sharing the code ( _"unoptimized and ugly code, walking you through Twitter's OAuth madness"_ and _"All I wanted was a pseudo-code example of the steps involved in the auth process"_ ). Seeing it laid out in a step-by-step piece of code helps you grok the process for either building your own independent work or using other libraries. This is pseudocode that just happens to be Ruby code too ;-) It's far too unstructured for you to realistically be using verbatim in your app.

</comment></comment><comment><USER4> Just for fun, I thought I'd round it out by implementing the last two steps of OAuth (sending the user to Twitter and exchanging a PIN for an access token) since somebody else already did all the hard work :D

<https://gist.github.com/564687/>

<comment><USER5> Awesome, thanks! I'll update the gist.</comment></comment>


Why The Daily failed - <AUTHOR> http://www.marco.org/2012/12/03/the-daily-failed

<comment><USER2> The Daily's biggest competing app was the web browser. Thousands of websites with better information, accessible quickly and for free.

That's not to say a paid news magazine is not viable, but if you are going to start one, you need to know what you are competing against.

A fast, presentable application with unique focused content is going to be key in the future. It seems The Daily was the polar opposite of that - trying to put an old world concept on a new world device.</comment>


Ask HN: What are recorded webinars you find interesting, or webinar platforms? - <AUTHOR> Hi, I'm interested in webinar videos to broaden my skills.
Webinars are live presentations on video, but they are rarely recorded, with good sound being even more rare.
It could be on programming, web, design, scrum, marketing, or simply any interesting subject or feedback on an experience.
For context I'm already a web programmer myself. <comment><USER2> Truepush is hosting Game of Growth podcast this is the best podcastis all about interviews with entrepreneurs on how they started their business, what they've learned along the way, and how they make time to do it all for getting some ideas about how grow your bussiness. Truepush is a free-forever push notification company for both web and mobile. Truepush is working closely with 15000 + developers/marketers globally. Bloggers, Marketers, App owners & developers from varied industries including Media houses and E-Commerce websites are sending millions of notifications every day. Trupush has advanced features like Segmentation(Pre-defined and custom segments), Triggers & Templates that make it a user-friendly tool. for more to know [https://www.truepush.com/blog/briefing-up-your-digital- marke...](https://www.truepush.com/blog/briefing-up-your-digital-marketing- requirements-what-where-and-how/)</comment>


Canonical: Mobile OEMs are going to love our Linux - <AUTHOR> http://www.theregister.co.uk/2011/10/31/ubuntu_linux_phones_tablets/ <comment><USER2> Desktop users, on the other hand...does anyone still care about desktop users anymore (y'know, the ones with computers), or is HURR DURR MUST HAZ SMARTPHONES UR COMPUTAR ALSO IZ SMARTPHONE the sanest response I could hope for? (Cases in point: Windows 8, Ubuntu, Google Chrome, etc.)</comment>


The Future of Ad Blocking: An Analytical Framework and New Techniques [pdf] - <AUTHOR> http://randomwalker.info/publications/ad-blocking-framework-techniques.pdf <comment><USER2> We wouldn't need any of these techniques if advertisers weren't so abusive.(i know it's been said many times over) If you ever watch really old game shows like "What's My Line?", they sometimes show the same commercials from the 1950s; it's astounding to see commercials and promotions that are relatively short, not overtly distracting, and mostly focus on the merits of the product. If commercials were still like that, I'd probably still have a cable subscription, I _might_ even be paying for Hulu, and I would even have adblock turned off. But the nature of the advertising industry is that if you give them an inch, they'll take a mile and then some. So while there is certainly a valid ethics debate around advertising and ad blocking, until the advertising industry changes their methodology that they've had in place long before ad blocking plugins were invented, I will have next to no sympathy for them no matter how unethical a piece of adblocking software might go. Though it's been said numerous times before, turning off adblock after having it on for a significant amount of time(e.g. to denormalize the prevalence of ads) is all the evidence one needs to see how completely messed up digital advertising still is.

Fortunately, many YouTubers and a lot of podcasters have already figured out that the way to go for advertising revenue is not through AdSense or stock preroll ads, but through having hosts themselves endorse a product for a portion of the show(that they have supposedly tried themselves) and making up the rest through Patreon. This harkens back to how many radio shows used to be and, honestly, it works because it's not very repetitive and the fact that the host is speaking for it says something. The corporate world either doesn't understand or like this, and are still gung ho to ram advertising down our throats. Better than adblocking, I rather just don't pay for their overvalued media to begin with. I don't pay for cable, I rarely go to the movies or buy them, I don't pay for Hulu, and I support internet shows that don't rely on AdSense. Life is actually pretty good when you pull most of your plugs.

<comment><USER3> > turning off adblock after having it on for a significant amount of time(e.g. > to denormalize the prevalence of ads) is all the evidence one needs to see > how completely messed up digital advertising still is.

I have this experience every time I visit friends who don't have an adblocker. When we watch some videos or stuff, I'm like "Holy shit, _this_ is what your internet looks like!?"

<comment><USER4> YouTube in particular is really unbearable without adblock.

</comment></comment></comment><comment><USER5> "Our work refutes the belief that the battle between publishers and users is leading to a permanent arms race between the two parties, and presents a much more nuanced picture."

"There is a significant need for follow-on technical work into the expansion of techniques that we have introduced as well as a debate on the ethics of ad blocking."

Is there really a need for debase on the ethics of ad blocking at all? How could you defend presenting ads as being ethical at all? Do they really provide any value to our lives? I keep seeing it just as a waste of human attention and wondering what humanity would be like if we rejected the concept of spamming us with advertisements via every possible channel. Is it just me or we should stop accepting them and start working on building society where this is not accepted or at the very least, greatly excised?

<comment><USER6> From the moment that some ad sets you in contact with a product/service or a brand that brings value to you, it will become valuable to your life - on that particular moment.

Else how would you reach out to your possible customers, that would find your product/service of great value to them?

Do not fool yourself by saying that advertisement doesn't work... it does, and I bet it has influenced your decision plenty of times in your life - and I mean this in a positive way, not in a "mind controlling" way.

The problem of spamming is just a matter of cheap distribution, a lot of inventory and the need to monetize free content.

<comment><USER7> >or a brand that brings value to you

I have, exactly once in my life, connected with an ad in this way.

I remember it vividly, because even at the time, it struck me as amazingly strange an ad would actually be anything other that pointless noise.

I'd been house sitting at a friends place for a week, and so had been to all the takeout joints in the area several times. I didn't really want any of the options again, but was kinda hungry for lunch. At that moment a subway ad came on TV, and I remembered that there was a tiny subway tucked away off the main street, so I went there for lunch.

That's it, that's my story of ads putting me in contact with a brand that brought value to me. It happened once, and only once, and it happened at Norwood, South Australia.

I feel like I could have dug deep and lived without that brand connection.

<comment><USER6> I wonder if you ever clicked on a Google Adwords ad, after you searched for something.

<comment><USER7> No. Even in the cases where the adword result is at the top and the exact same result is right below it, I choose to click the non-ad version.

That situation is, in fact, a classic example of why adwords results are not relevant, ever. Either the actual google search result is literally the same as the ad word result, or the google result is more on point.

Never has there been a case where the ad word result has been what I wanted, but Google couldn't find it, and that's not surprising because Google is the one assembling both the search results and the ads, so if they can't find it in the search they also can't find an ad for it.

</comment></comment></comment></comment></comment><comment><USER8> I think adblockers will lead to something worse: extremely in-depth data harvesting. When publishers can no longer make money on ads, they will turn to companies offering them similar amounts of income ($1 per 1000 pageviews) for just placing a tracking pixel on the page. The pixel will just track absurd amounts of data, enough to justify the cost.

My example is Ibotta [1]. You can your entire shopping receipt and they give you cash back for buying certain products. While these 'coupons' prompt you to buy a product, Ibotta's real profit comes from data harvesting. They create a profile that knows where you shop, what you buy, how often, how much you spend, where you live, etc. etc. This data can be sold to companies like P+G for marketing intelligence ('Who is actually buying our products, for how much, how often? etc')

[1] [https://ibotta.com/](https://ibotta.com/)

<comment><USER9> ad-blockers can block tracking pixels just as easily. If they want to move it server side, well the same could be done with ads too, the problem is that website owners can then manipulate and defraud extremely easily.

<comment><USER8> Ads can't be moved served nearly as easily as a single tracking pixel. Fraud on server side code is a good point, but that seems like a technical hurdle that could be solved.

</comment></comment></comment><comment><USER10> > But the model makes clear that no further escalation is possible. That is > because active ad blocking runs at a higher privilege level than publisher > code, so it cannot in turn be disabled — at best it can be evaded.

This is arguable. HTML5 EME can be used to mix ads into video in realtime. EME _must_ run in isolation, so even browser vendor can't implement neither active blocking, nor ad detection. Still banners also can be implemented as video elements.

<comment><USER11> DRM is basically in the same boat as ads, the user / operating system has all the power. The code is running in a sandbox; it can do integrity/sanity checks of the sandbox, but if the emulation is good it can't look outside the sandbox to discourage "bad behavior" like blocking ads or recording the stream for later.

To paraphrase an old thread: [https://news.ycombinator.com/item?id=8439165](https://news.ycombinator.com/item?id=8439165)

> Nobody cares about cracking Widevine to extract 4 Mbps Netflix streams when > Blu-ray rips are already available on the Pirate Bay. But Netflix's content, > which people do care about, is being shared on torrent sites. DRM is > effectively useless.

</comment></comment><comment><USER12> Eventually advertising will either 1.Merge with content: a single jpg/png render of a webpage + imagemaps for links. 2.Use canvas and emulate the browser output in it(webkit.js which creates a browser-within-browser contraption) 3.Require loading ads to function: some already merge functionality with ad javascripts. Since there is commercial pressure to have working ads, one of the methods will become commonplace eventually and will be really hard to filter(if at all possible).

For #1 machine learning to recognize what an ad looks like and replace it with black rectangles or if imagemap block its coords, for #2/#3 there will be some sort of javascript filter/hijacker that would remove the ad code from content/emulated browser. But with WebAssembly these methods will not works, as content will become obfuscated binary stream which has to be decompiled& deobfuscated to even begin searching for offending "javascript"(essentially something like a virus pattern in binary).

<comment><USER13> The prospects of everything "bad" that will be done in the future via WebAssembly makes me cringe. It seems like it could be a major tipping point.

<comment><USER14> WebAssembly bytecode is relatively simple; it shouldn't be any worse than dealing with obfuscated JS today.

<comment><USER12> It isn't a single javascript can map to many bytecodes streams. i.e. inserting dummy instructions, alternative code paths, etc, all the tricks malware uses to escape detection.

</comment></comment></comment></comment><comment><USER15> Ads are targeted with machine learning, the only possible long term defence is fighting back with machine learning. It's already been done and both sides will still improve over the next few years. But in the end, much like spam, online ads will go away, automatically. On the tech side, using character based convolutional networks already frees the defense from writing endless rules, image ads can be nuked with another convnet, there's no technological lock.

</comment><comment><USER16> We need a future of advertising, a company that disrupts that sad state of ads. Leaner ads, less junk, bare pics, little JS, more trusted content, more generic content related to the page itself, less specific to the visitor and his browsing history. An ad about something I bought already last week on a completely unrelated site still freaks me out, and not only me. </r>

<comment><USER17> This already exists - our company has been doing this for years, amongst several others.

The problem is a major global 12-figure industry with little oversight or regulation combined with tons of subpar talent and overloaded with politics. Until the major advertisers learn and want to do better, the (good) vendors, websites and users will suffer.

</comment></comment><comment><USER18> If ads were served from the same domain the page came and integrated into the page so it didn't affect the navigation of the website or grab the navigation from you if you're trying to read the page, far fewer people would object. It would be like the way ads used to be in newspapers or magazines. You look at it, and if you're not interested, you turn the page.</comment>


ASk HN: Best small business banking practices? - <AUTHOR>

Basically, which banks do you use and why? What services or perks do you look for? How do you manage your ramen profits? I'm in the bay area, so if you know of any gems let me know. <comment><USER2> Do they have TD Commerce out there? They have been absolutely wonderful for me.

Reasons: \- 1st year free checking, $50/year afterwards,

\- they generate debit cards on the spot in the branch,

\- 7-day banking, branches open late 4 days out of the week,

\- 24-hour customer support number, always answered by a human

[ long story warning ]

Why do I really love Commerce?

When I started banking with them, I was spending a lot of time with a client in DC. I'd drive down to DC for the week, and drive back to NY. I'd park in a garage that was $10/day. It wasn't 24 hours, but it did the trick.

This one particular Friday, I left the client's office late (about 7:45pm). The garage was cash-only so I had to go to the ATM. My Citibank card had some sort of fraud block on it, so I couldn't take money out, and I had forgotten my newly-issued Commerce PIN.

So I had a bum card from Citibank, and the ATM ate my Commerce card because I tried so many times in desperation. I called Citibank, and after navigating the IVR, a rep said they could not help me until Saturday morning when a branch opened. Overnight hotel stay? I'm on ramen money at this point.

Next option was Commerce: I'd been a customer a total of probably 3 weeks at this point, so I didn't expect much. I called Commerce, who transferred me to the local branch which was still open (they close at 8pm). I explained the predicament I was in (garage closes in 5 minutes, don't want to do overnight hotel stay).

Commerce promptly blew my mind. The person on the phone said if I could make it there in the next 5 minutes, she'd withdraw $100 from my account and have cash waiting for me at the branch so I could be on my way.

I jumped in a cab, got to the branch, collected my $100, paid the taxi. The rep issued me a new debit card on the spot, set my PIN (to something I could remember this time). Caught a taxi back to the garage, and arrived there at 8:02pm.

The garage guy left a note saying I should call him on his cell if I arrive back before 8:15pm. I called him, paid the garage, and set out on my journey back home.

So, if it hadn't been for Commerce, I would have had a really bad weekend. Instead, I had hands-down, the best clutch performance by a bank for someone who was too new to fall into the "loyal customer" category.

<comment><USER3> Heh. You didn't "fall into the 'loyal customer' category", you were firmly _pushed_ into it by that Commerce branch employee, who obviously had enough authority to Do The Right Thing. The latter alone is a very good sign.</comment></comment>


Hatetris: Tetris That Hates You - <AUTHOR> http://qntm.org/hatetris

<comment><USER2> A guest on Speed Demos Archive had an impressive 20-point game:

"56AA AAAA AAA6 AAAA AAAA 8AAA AAAA AB55 AAAA AAAB 00AA AAAA AA9A AAAA AAA6 0AAA AAAA A96A AAA8 AAA9 A808 AAAA AA9A AAAA AAAB 55AA AAAA A82A AAAA AA97 5AAA AA9A AAAA A6AB 5AA6 AAAA 6AAA AAAA C02A AAAA AABF BEAA AAA9 E9AA AAA9 AAAA AAFE AAAA AD5A AAAA F0AA AAA9 BF00 AAAA AA9B AD56 AAAA FC02 AAAA AABA C02A AAAA AB5A AAAA BAAA AAB6 AAAA AB55 6AAA A02A AAAA A82A AAAA ACAA AAAC 02AA AAAA FE9A AAAF EAAA 9D5A AAA9 6AAA AD57 AAAB C2AA A9BF 00AA AAA6 BBF0 0AAA AABA D56A AAC0 2AAA AAD6 AAAB AAAA DAAA A80A AAAA 82AA AAB5 5AAA B2AA A0C0 AAAA AFDA AABF AA9D 5AAA 5AAA 57DA A6AB C2AA 6FC0 2AAA 6BBF 00AA AAEB 00AA AA03 5556 AA02 AAA8 282A AB0A AAB2 AAB6 AA9D AAB5 02AB 55AA 80C2 AAB0 22AB AAD6 AB55 AA00 AA40 AA79 A"

[http://speeddemosarchive.com/forum/index.php?topic=11523.msg...](http://speeddemosarchive.com/forum/index.php?topic=11523.msg321815#msg321815)

</comment><comment><USER3>
      	--- hatetris.html	2010-04-10 03:37:17.491337444 +0100
    	+++ Downloads/hatetris.html	2010-04-10 03:32:08.264902582 +0100
    	@@ -65,6 +65,8 @@
    				var replayOut;
    				var replayIn;
    				var replayTimeoutId;
    	+			var gravityTimeoutId;
    	+			var gravityInterval = 500;

    				// draw the current scenery
    				function drawWell(thisWell) {
    	@@ -415,6 +417,8 @@

    					// take user input
    					document.onkeydown = keyhandler;
    	+
    	+				gravityTimeoutId = setTimeout("gravityHandler();", gravityInterval);
    				}

    				function showReplay() {
    	@@ -554,6 +558,14 @@
    					}
    				}

    	+			function gravityHandler() {
    	+				var down = 2;
    	+				var gameContinues = transformHandler(down);
    	+				if(gameContinues) {
    	+					gravityTimeoutId = setTimeout("gravityHandler();", gravityInterval);
    	+				}
    	+			}
    	+
    				function keyhandler(event) {

    					// only handle one key at a time.
    	@@ -626,4 +638,4 @@
    				/>

    	-
    	\ No newline at end of file
    	+

</comment><comment><USER4> Interesting!

I particularly like the fact that the author's top score was five lines and he has absolutely no idea whether it's possible to come up with a strategy to beat the machine (it's completely deterministic).

edit: I've been thinking about it some more, and what's interesting is that you ought to be able to analyze it using regular game theory and prove interesting things about it. There must be an optimal strategy for both players, and there ought to be some highest possible score on the assumption that both players play with optimal strategy. Even if this game is too complicated to fully analyze, perhaps thinner games can be analyzed completely? For instance, is it possible for the computer to prevent the player from getting any lines in a 4x4 game? I _think_ two S shapes, a square and an L would do the trick, but I could be wrong. What if it were four wide by eight high?

<comment><USER5> If his algorithm is correct, it is known that it is possible to guarantee a loss in truly random Tetris with the right sequence of Ss and then Zs; you can force a hole, and this means that the player must eventually use.

Now, he may not be implementing his "worst possible piece" algorithm correctly, and it is certainly the case that the requisite sequence of Ss and Zs will take its sweet time about killing you.

<comment><USER6> It looks like he's choosing the worst piece by looking one step ahead. In general, choosing strategies this way can back you into corners. I'd be interested to know whether in this case, looking ahead 1 move is enough to get a global win as well (for the AI).

<comment><USER7> The paper "How to Lose at Tetris" (<http://www.geom.uiuc.edu/java/tetris/tetris.ps>) says that you don't even need to know what the player is doing. And that even almost all [1] random tetris games are bound to be lost, even with perfect play.

[1] "Almost all" is a technical term in probability theory and means "with probability 1" (which is not the same as "all games".)

<comment><USER8> I wonder whether that is equivalent the same technical term from set theory which mean "all except for a finite number of exceptions", and thus with a finite underlying set, it's correct to say that "almost all" elements have a property when in fact _none_ of them have it...

<comment><USER6> It's similar, but with a finite set it wouldn't show up unless you had some outcomes have probability 0 (in which case, why not just delete them from the outcome space?).

Where you need the idea is in continuous spaces - like a uniform [0,1] random variable. With probability 1 it's not a rational number, etc.

</comment></comment></comment></comment></comment></comment><comment><USER9> It'd be funny to port this to the Android Market, label it as just another tetris clone, and wait for the reviews to start coming in...

</comment><comment><USER10> I played for a couple of minutes, and I already want to punch someone.

Really cool though!

</comment><comment><USER11> I got the five points he did without too much difficulty, but going beyond that seems difficult. This is fun!

replay:

      D516 AAAA AAAA B55A AAAA AAA5 D6AA AAA5 D6AA AAAA 95D6 AAA9 5DAA A5D6 AA9D AAAA AAAA 9DAA AAAA A9DA AAAA A9DA AAAB 5AAA AA9D AAA9 7A87 00AA AAAA 956A 0055 BAAA AAAA AEAA AAAA EAAA AAEA AAAE AABA AA0E AAAA AAAB CC2A AA2A AAA9 8CAA AAAA A82E AAAA AAC2 AAAA A0EA AA83 AAA8 3AA8 0CAA AAAA A80D 5540 2A7A A5DA A00E AAAA A80C AAAA A80C AAAA 00DD AAA5 EAAD 55AA BAA8 3FC0 AAA0 4D55 6A9D AA4E A83A A803 DFCE A82A

</comment><comment><USER12> 6! This is a cool game.

"55AA AAB6 AAAA F6AA AA9A AAA2 AAAA AAAA 009A AAAA AAAA A977 0AAA AAAA A755 AAAA AA40 02AA AAAA AAC0 6AAF AAAA AAC2 6D54 30AA AAAA A805 400A AAAA AAB2 9AAA AA9D AAAA AAAB 0000 2AAA AAA5 AAAA AAA0 AAAA AAA3 0FD5 575A AAAA A94A AAAA AB55 6AAA AAAA AAAA 0756 AAAA 9D56 AAAA 752A AA9D 5AAA 9DAA A756 AB5A A0C3 5EA6 AAAA 0D6A AAAB 2AAA A000 03DC AAAA AA0D 555A 80EA BF4A AAA0 02AA AA83 AAAA 81AB DAA0 05D5 6A80 A9AA 36AA 002A AAD5 5AAB 1A80 AAA0 02AA B5A8 0DAA A8"

</comment><comment><USER13> Mandatory xkcd reference: <http://xkcd.com/724/>

<comment><USER14> You can play it here: <http://www.geekosystem.com/xkcd-tetris-hell-game/>

</comment></comment><comment><USER15> This game would be much more punishing if it did not keep repeating the same piece over and over again. The way that a piece would repeat itself until just before a line is cleared makes the game's AI way too obvious.

</comment><comment><USER16> And now, we can up the problem even further:

Build a tetris clone which forces the player to "win" with 13 lines scored.

</comment><comment><USER17> l-tris has a hardmode which is a similar idea... although it plays like tetris rather than a logic puzzle.

</comment><comment><USER18> It gives me nothing but S-pieces. I've had one 4-line bar. Hardly fun. Hardly interesting.

I can create a tetris clone that only gives one piece as well.

<comment><USER19> He warns that the preferred piece is an S in the docs. But I was able to force the game to generate squares and lines with "good" play. (I could predict by the end which piece it would pick with reasonable accuracy.) To do better (at least based on my watching the high score replays), you have to intentionally "play badly" and make gaps that open up if you clear a middle row of the gap. The 17-replay I saw generated _tons_ of lines, which I honestly wouldn't expect this app to generate.</comment></comment>


How Popular Are Wix, Weebly and Squarespace? We Ran the Numbers - <AUTHOR> https://www.ostraining.com/blog/general/wix-squarespace/

<comment><USER2> They didn't "run the numbers", they googled the numbers. I was expecting someone to have resolved millions of domains and matched them up with IP ranges for each company.</comment>


Amazon Shuts Down Associates Program in NC - <AUTHOR> http://www.newmediacampaigns.com/page/amazon-shuts-down-north-carolina-associates-program

<comment><USER2> Really simple. Internet merchants have to collect sales tax on residents of any state where they have a physical presence.

Amazon has been careful to limit their physical presence to Washington so that their sales are tax free in the 49 other states.

North Carolina doesn't like all the lost sales tax revenues caused by people buying things from Amazon.

So they changed the law so that having an AFFILIATE in North Carolina is the same as having a physical presence in North Carolina.

Amazon retaliated by eliminating all North Carolina affiliates. (Many of whom will probably just change the address on their account. Since Amazon pays by direct deposit, this won't matter).

It's the only way Amazon can keep from having to charge sales tax to ALL North Carolina residents which would make them more expensive.

</comment><comment><USER3> Can anyone find the specifics in the legislation that is causing this. I can't find anything. They really should put all legislation in progress up on github or something.

<comment><USER4> It is in the Appropriations Act of 2009 / S202, currently in revision 6: [http://www.ncleg.net/Sessions/2009/Bills/Senate/HTML/S202v6....](http://www.ncleg.net/Sessions/2009/Bills/Senate/HTML/S202v6.html)

See sections 27C.2 and 27C.3.

<comment><USER5> The appropriations act?

Someone needs to explain modularity to lawmakers.

<comment><USER4> From their perspective, hiding stuff like this in large appropriation bills is a feature, not a bug. Sadly.</comment></comment></comment></comment>


One-liner to sort clipboard - <AUTHOR> http://some.gonze.com/2016/08/22/pbsort/ <comment><USER2> On X-based systems, xsel -ob | sort | xsel -ib

But if you're in a high-octane development environment like vi, there's no need to resort to a separate terminal window to invoke 'sort clipboard'. just mark a range of lines (v) then :!sort to filter through good old unix sort.

<comment><USER2> Iterating on this idea just a little bit, you realize you want to apply _any_ shell filter to your clipboard ...

        #!/bin/sh
        # save as xfilt
        xsel -ob | "$@" | xsel -ib

so, for instance, get a bit of json in your clipboard [http://json.org/example.html](http://json.org/example.html) and run xfilt jq .glossary.title. Now your clipboard contains "example glossary" instead of the whole json file.

One wrinkle is, if you get your filter wrong, you have to return to the original source to copy again, because the operation is destructive each time...

</comment></comment><comment><AUTHOR> This is a trivial but super useful hack. The way you use it is:

1\. You're in an edit field in any old app - browser, Atom, vi

2\. Select lines to sort and ^c

3\. alt+tab to command line

4\. pbsort

5\. alt+tab back to app

6\. ^v</comment>


Show HN: [p]ortal - <AUTHOR> https://github.com/fbeline/portal <comment><USER2> One really cool trick I recently learned is defining $CDPATH. This way, when you do `cd some-directory`, you can navigate to it even if you are not on the same level.

So, if you add ~/projects to your CDPATH, you can do cd project1 from any directory on your computer and it will navigate to to the right place.

Cool project though, I like the idea.</comment>


Linux on Pixel C is now "an usable system" - <AUTHOR> https://twitter.com/DenysVitali/status/992697430968864768 <comment><USER2> "missic gpu acceleration". Well, um, that's sort of the only hard part. The rest are kernel drivers that are open source from Android tree</comment>


Ants: locks vs stm - <AUTHOR> http://groups.google.com/group/comp.lang.lisp/msg/a86c91091ae16970

<comment><USER2> I don't know anything about this and the flame/troll aspect of the thread makes me not want to. I was kind of hoping that a new Lisp on a new platform might have a chance at a fresh start clear of all that stuff.

I did notice one thing, though. Assuming that what Rich Hickey's saying is true, it would be better to point to something visible that the demo does that the knockoff can't do. If it's possible to appear to reproduce a demo without doing the hard parts, then maybe the demo wasn't actually _demonstrating_ the hard parts. In that case a better demo would be a good idea. Such things can be hard to come by, though, as demos tend to be relatively simple and thus knockoffable.

<comment><USER3> This locks vs. STM debate is a lot like the old malloc vs. GC debates. "Look at my fancy new Java code. I just do foo = new Foo(); and everything is taken care of" and then a C++ guy responds with "so? I can do foo = new Foo(); delete foo; That's only one more line than your fancy GC system. My version is also faster because it doesn't _waste_ time on GC".

Locks vs. STM will play out about the same way. It's hard to demonstrate all the things you _don't_ have to care about with GC. Making a _good_ demo that shows you don't need to worry about memory leaks, double freeing, memory corruption, etc is hard. The same is true of making a good demo for STM that illustrates all of the problems you don't have to worry about compared to locks.

I think the ants demo is a good idea technically. Now it just needs a set of "rules", similar to what Rich just posted.

<comment><USER4> The similiarities between GC and STMs extend beyond this particular debate as Dan Grossman describes in his 2007 OOPSLA paper: [http://www.cs.washington.edu/homes/djg/papers/analogy_oopsla...](http://www.cs.washington.edu/homes/djg/papers/analogy_oopsla07.pdf)

</comment></comment></comment><comment><USER5> talk about loop abuse:

         (flet ((make-random-move (rankf)
                         (loop for place in places
                               for rank = (funcall rankf place)
                               collect (cons place rank) into ranks
                               sum rank into ranks-total
                               finally (loop with r = (if (zerop ranks-total) -1
                                                        (random ranks-total))
                                             for (place . rank) in (shuffle ranks)
                                             sum rank into current-ranks-total
                                             when (< r current-ranks-total)
                                             do (cond ((and (eq place ahead) (move ant)))
                                                      ((eq place ahead-left)
                                                       (turn ant -1))
                                                      ((eq place ahead-right)
                                                       (turn ant +1)))))))
                  (if (ant-food ant)

<comment><USER6> Yeah, this piece illustrates why Python is such a success and Lisp is not. Lambda may be the ultimate imperative, but certainly not the most convenient in many cases.

<comment><USER7> You're not serious? The loop macro is the most Pythonic aspect of CL (c.f. list comprehensions). Your trouble handling that loop has nothing to do with lambdas.

<comment><USER5> right, but i'm guessing his (and mine) trouble handling that loop has more to do with loop that it does with us - at least that's what i tell myself so please be gentle

</comment></comment></comment></comment><comment><USER8> full thread is somewhat more interesting than one guy's bitchy smackdown. [http://groups.google.com/group/comp.lang.lisp/browse_thread/...](http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/1d014c846acaadc8/a86c91091ae16970)

<comment><USER9> um, no it isn't. And that one guy happens to be the guy who invented clojure. Rich Hickey does often seem a bit testy at times, but I think it's because he is a bit of a visionary and it is tiring always having to drag along people that don't quite get it.

<comment><USER10> If you follow CLL, Rich and Pascal have had a back and forth on the newsgroup on more than this occasion.

<comment><USER11> That actually makes a lot of sense, in context; I was wondering why/how Rich had enough time to pore over some random guy's implementation of ants, not knowing much about Pascal (until this HN thread). I think if people ignorant to his own accomplishments, it's because many F/OSS project mailing lists or IRC channels see messages from someone new to the project claiming a more naïve version of Pascal's email every few months (or weeks).

</comment></comment></comment></comment><comment><USER12> I haven't seen a smackdown like that in a while... but that was just too easy, the OP had no clue what he was dealing with.

Had he watched the Clojure concurrency video in which Rich extensively discusses the ant colony simulation and its purpose, he might not have made that mistake:

<http://blip.tv/file/812787>

<comment><USER7> Pascal Costanza (the OP) is a smart guy. He's behind the ContextL and AspectL frameworks, and he just published an interesting paper on implementing hygienic macros within an unhygienic macro system [1]. But in this instance, it seems he clearly missed the point of the Ants exercise.

[1] <http://p-cos.net/documents/hygiene.pdf></comment></comment>


Ask HN: How do you get profile picture for arbitrary email address? - <AUTHOR> <comment><USER2> Some services use Gravatar[1] or Libravatar[2] but a user has to first register their email with those services.

[1] [https://en.gravatar.com/](https://en.gravatar.com/)

[2] [https://www.libravatar.org/](https://www.libravatar.org/)

</comment><comment><USER3> [https://unicornify.pictures/](https://unicornify.pictures/)

source code: [https://bitbucket.org/balpha/go- unicornify](https://bitbucket.org/balpha/go-unicornify)</comment>


Ask YC:  Instead of voting in social news, why not have submitters compete via a game/puzzle? - <AUTHOR>

If the submitter wants to push his/her submission to the front page, then he/she will need to be quite skillful at a game/puzzle chosen by that news site.
Note that the submitted news item may have nothing to do with games/puzzles.
Note also that you would need to compete separately for each submission.
If the game/puzzle is chosen carefully, then I think you may get interesting results.  For example, imagine what would happen if doing well in the game/puzzle requires strong math skills vs strong verbal skills, etc. <comment><USER2> Waste of my effort if all I wanted to do was share a link. I'd rather just not share the link and get back to work.

</comment><comment><USER3> nickb is by far the most prolific submitter. many great article everyday are submitted by him, and users like him who use a bookmarklet to quickly add links from their RSS feed.

your method, while interesting, would put an end to users like him...

perhaps the games and such would be a better idea if they were related to a user's class. for instance if someone had stronger verbal skills, their submissions may have a higher weight, or something like that.

<comment><USER4> We have an incredibly diverse community of people here. Using that kind of system would ostensibly create a disparity between users who have the capacity for such skill tests, and those who don't. We'd have a giant rift, lapses of communication and before you know it, HN will have turned into Reddit.

And I'm very certain if that happens I'll probably hurt myself.

<comment><USER3> i thought we were having a hypothetical discussion about social news sites in general.

</comment></comment></comment><comment><USER5> And the point would be what?

<comment><AUTHOR> To see what people who are strong along some dimension think is interesting news. It also encourages people to play with the puzzle more.

<comment><USER6> How about to post to the front page, you have to sing one of the solos from Carmina Burana post it to youtube, and the best one gets the most points...

</comment></comment></comment><comment><USER7> I don't get it, but agree with the other comment that it seems overly time consuming... But alas I don't understand...?</comment>


Network Identity and Public Key Crypto - <AUTHOR> https://cacm.acm.org/magazines/2018/12/232883-self-authenticating-identifiers/fulltext <comment><USER2> If you want to see (some of) these ideas implemented in practice, check out the work that the brilliant folk at [https://handshake.org](https://handshake.org) are doing.</comment>


Vocab: An online dictionary integration to the command line - <AUTHOR> https://github.com/Mckinsey666/Vocab <comment><USER2> Slightly OT, just in case someone has a similar problem: I (ab)used Wikipedia as special dictionary (1) during my thesis by means of a script that looked up the english article to the search-word and extracted the title of the link to the article in my mother tongue out of it. Admittedly it was a crude solution but it worked well enough then.

(1) It was meant to be used for technical terms that wouldn't be in most normal dictionaries.

<comment><USER3> I used to use this trick as well. Wikipedia is easily the best jp <-> en technical dictionary I've ever used.

</comment></comment><comment><USER4> Is this using dedict? That is a tool released in 2015 that parses the Mac OS built-in dictionaries, including ODE.

"After I wrote my post about Apple's dictionary files, I got a mysterious email showing up in my inbox. The email was from someone who's spent some time writing code to do the same thing, but doesn't want to post it under his own name in case he falls fowl of his country's DMCA equivalent. Crazy. He said I could post his code under the condition that I took his name off it."

[https://josephg.com/blog/apple-dictionaries- part-2/](https://josephg.com/blog/apple-dictionaries-part-2/)

Vocab adds a few other features such as adding new words, so it's a welcome addition to this space. It seems that most custom dictionaries use the Stardict format, so perhaps adding that file format would be a way to bring in more of the community.

<comment><AUTHOR> Thanks for the feedback. I simply scraped the oxford online dictionary using requests and bs4, no fancy stuff. Also, thanks for your advice!

</comment></comment><comment><USER5> And what was wrong with dict?

<comment><AUTHOR> What is the problem you are facing?

<comment><USER5> Getting a definition or spelling correction for a word or a list of synonyms and antonyms, maybe a brief etymology, without interrupting my workflow at the command line or opening a slow heavy program like a web browser or office suite.

<comment><AUTHOR> Wow, thanks alot for the feedback. To be honest, I didn't know the 'dict' command prior to your reply (what a shame lol). It is true that 'dict' is much more lightweight and robust, but since I myself is ESL, this was initially aimed at ESL-people, so I added some features to help them learn English.

</comment></comment></comment></comment><comment><USER6> If this could have a thesaurus included, i'd set it up in a heartbeat.

</comment><comment><USER7> Man, leaving in your typos in the first GIF "screen recording" is IMO just sloppy. It's the first thing I looked at on the page and, boom, it's a typo. Personally it gave me the impression of unprofessionality.

<comment><AUTHOR> Thanks for the feedback. I will fix this issue.

</comment></comment><comment><USER8> Bah! It is not a "command line", it is a shell!

</comment><comment><USER9> this is badass, thanks

<comment><AUTHOR> Thanks. It's really just a simple script (less than 300 lines of Python).</comment></comment>


Ask HN: Open-source user management API that uses AWS? - <AUTHOR>

I am looking to set up a user management system that would allow users to login/edit/ect from websites and apps.
Although I have found a few different options, I can not seem to find any service built on top of Amazon Web Services. My application runs on AWS so it would be nice to have the user registration be in the same place.
Does anyone know of such a service?
If not, is there a reason it does not exist? <comment><USER2> StormPath ([https://stormpath.com/](https://stormpath.com/)) can probably achieve what you want. It's not part of AWS, but available through the AWS marketplace: [https://aws.amazon.com/marketplace/pp/B00CX845OE/](https://aws.amazon.com/marketplace/pp/B00CX845OE/)

</comment><comment><USER3> Not sure if this is exactly what you're looking for but Amazon offers "Amazon Cognito" ([http://aws.amazon.com/cognito/](http://aws.amazon.com/cognito/)) which allows you to save user data in the AWS Cloud without writing any backend code.

</comment><comment><USER4> You don't need something to "run on top of AWS".

AWS is just an infrastructure provider and your user-management tool will run under some type of BSD/Linux OS, so it just needs to run on that and integrate with your app.</comment>


Stock market update: going much higher - <AUTHOR> http://greyenlightenment.com/market-update-going-much-higher/ <comment><USER2> Is this post satire? The rates of return quoted within are so absurd that it would be more beneficial for everyone to quit their job and live off the supposed returns.</comment>


The Single Page Interface Manifesto - <AUTHOR> http://itsnat.sourceforge.net/php/spim/spi_manifesto_en.php <comment><USER2> Good luck with that.

Pages are a good metaphor for many websites. Many RIAs are better suited to a single-screen metaphor (for example, my own business, Woobius, or GMail, or Google Maps), but to claim that, for example, a blog, or HN, should be single- page, is silly.

Use multi-page metaphors where it makes sense. Use single-page metaphors where it makes sense. Don't go on crusades trying to force round pegs into square holes, or vice versa.

<comment><USER3> One of the projects I'm working right now is sort of a hybrid between multi- page and single-page in hindsight (even though the implementation is in single-page).

This particular project chose to use GWT. While GWT provides a lot of good abstractions to build such application, I find the requirements for the project is disturbing: want to be like desktop, but looks like a web-app, but can do bookmarking, etc etc.

It suffers a lot of issues from:

1) Having to re-implement how the history works

2) Having data freshness issue vs not re-fetching every visit

3) Huge DOM structure within the single page

It's just too crazy. Luckily GWT ease the pain a little bit, but I wished we wouldn't go that far or at least cap the requirements with some limitations.

</comment></comment><comment><USER4> I've implemented this before. The site was standard MVC, built in CodeIgniter. I then built a middleware layer that would either decorate the content with a layout template to generate the HTML version or create a JSON structure with linked elements (CSS and JS files) and page title.

The JavaScript would parses the incoming JSON and attach listeners to all the elements. It had to do a few tricky things like tracking JS and CSS files and provide alternatives to dom:loaded so scripts could be rerun on dynamically loading content. Really Simple History was then used to track the state.

I built and tested the functionality as a plain HTML site first then builf the dynamic loader afterward, which was relatively easy to implement. Some of the trickiest parts were gettingand the DOM to update in a timely fashion and to get the interface to "feel" right (when do you clear the old page, when do you scroll user back to top of page, etc.).

Like emilis said, there are still a few small cases where the implemetation breaks down, mainly when sending or publishing links. I ended up enforcing clean links: if you hit a HTML page when you had JavaScript enabled it would take you to the homepage and reload your desired page from there. This was mainly because not doing so would make the copy-paste problems worst. E.g. If you expecting to see "bar" but had no JavaScript then example.com/foo#bar (showing foo rather than bar) would be more confusing seeing the homepage at example.com/#bar. The redirect logic was the first thing encountered on the page so was pretty quick. E.g. [http://www.google.co.uk/search?q=http%3A%2F%2Fwww.thebeatles...](http://www.google.co.uk/search?q=http%3A%2F%2Fwww.thebeatles.com%2Fuser)

I wouldn't recommend implementing this unless you absolutely had to. For me the requirement for a streaming music player was a "must-have" feature. Even the quickest page load would still lead to skipping music.

<comment><USER5> "I then built a middleware layer that would either decorate the content with a layout template..."

Methinks you might have a somewhat non-standard definition of the term middleware. Please have your buzzword generator re-calibrated ;)

<comment><USER4> Too much time spent around Django :P

</comment></comment></comment><comment><USER6> Do not want. <http://www.innowhere.com/> is cited as an example of this kind of interface, and is a total disaster - I'm browsing on a 3G modem on a train (tunnels etc mean my connection is a bit spotty) and clicking the links on that site offers me no feedback at all on whether or not a page is about to load - it either fails silently or eventually throws an alert() box with a weird type error. Call me old fashioned, but I like links that work. I can just about forgive Gmail for being a single page interface (though I'm frequently frustrated there as well), but for a content oriented site it remains a terrible idea.

</comment><comment><USER7> In regards to "Goodbye to Back/Forward buttons", while the author is correct that browsers don't offer a good API to observe the back and forward buttons being invoked, there are at least two workarounds. One way is to poll window.location.hash via setInterval or whatnot. Another has something to do with a hidden iframe which can observe the back and forward buttons.

For example, SproutCore's routing system uses the first technique: <http://docs.sproutcore.com/symbols/SC.routes.html>

From the observer, the developer can then ensure the web app is in a state consistent with the hash part of the url, enabling the user to use the back and forward buttons within the app.

<comment><USER8> Really Simple History packages this in a library, and it will be introduced natively in HTML5.

</comment></comment><comment><USER9> A case when this will still break bookmarking:

\- user with JS enabled opens the website and navigates to some inner page

\- user with JS copies the url for the inner page (e.g. <http://example.org/#foo/bar>)

\- user with JS sends this url to a friend

\- a friend with JS disabled opens the url and does not get the inner page.

Also -- what if a search engine "bookmarks" the page and a user with JS opens it? Do you:

a) redirect him from example.org/foo/bar to exmple.org/#foo/bar or...

b) do you leave the url untouched and wait until the user bookmarks another page as example.org/foo/bar#foo/baz ?

a) -- you waste processing power on visitors from search engines.

b) -- you waste processing power on the next opening of the bookmark. Also this looks like a bug waiting to happen.

Disclosure: I browse with JS turned off (Firefox NoScript extension) and websites that rely on JavaScript when a static page would do annoy me.

<comment><USER10> Not to defend the author's bad idea, but actually, the apps I've built with hash-based navigation would still work fine in the case you describe.

The server needs to be smart enough to read that hashtag and display the initial page in the correct state. It's just laziness to always load the same app and then immediately swap everything out based on hashes.

<comment><USER4> I prefer to send the page to the index before loading dynamic content. Imagine two scenarios:

I send a link to a friend saying "check out the kittens": <example.com/product/pr0n#/product/kittens> My friend ends up on a completely different page and there is no explaination as to why the page is wrong. Secondly, the URL leaked information about my browsing history. Finally, Google page rank goes to /produces/pr0n rather than the cute kittens.

If the URL is <example.com/#/product/kittens> then my friend sees the homepage rather than the correct product page. At least they'll know they're on the right site and can easily search for the correct page manually. Google page rank goes to the homepage rather than some arbitrary page.

</comment></comment></comment><comment><USER10> Google did this for a few days not too long ago, and got a firestorm of bad press about it. Twitter Search is doing it now and annoying the crap out of me every time I use it. Unless it's done VERY right, it's a really bad user experience.

GMail can get away with using hashtags for navigation because it's an application you're never going to search or bookmark externally. Most plain- old web apps don't have that advantage, and therefore are bad candidates for hash-based navigation.

So yeah, this is tech that's been around for a while, and it's a convenient way to allow the browser back button to work in a single-page app. But I wouldn't recommend using it unless you have a good reason.

</comment><comment><USER11> This is the model that padmapper.com follows, and it has worked fairly well. Users don't have to ever leave the tool's main interface (except that listings open a new tab/window), which has had a number of benefits. Making the possible states crawlable by search engines was a pain, but in the end I think the tradeoff was well worth it.

EDIT: As swombat says below, though, this isn't a natural fit for all types of websites, and it's a bit hyperbolic/silly to call this the next model of web development. That time might come, but it's not nearly here for the vast majority of sites.

</comment><comment><USER12> Facebook and Lala have done this. We added this to the Posterous Manage page, and it reduces page load times and makes that part of the site feel faster, especially when a user is exploring what's there and trying to find a particular setting or tool.

The key is to use the URL hash to drive page changes in JS, so back button, browser history, and bookmarks all still work.

<comment><USER3> I use Facebook everyday and they're quite slow and buggy. Sometime pressing back button doesn't work. Sometime even pressing the "previous" or "next" image icon takes a while or failed to load.

Especially in their image section: press "next" and use the back button immediately (but not too fast), you'll see some "oops"

</comment></comment><comment><USER13> Frameworks like Sammy take the approach of treating states as URIs. I'm not sure it's strictly necessary to abandon browser history functionality.

<http://code.quirkey.com/sammy/>

</comment><comment><USER14> Some of this is fine, if a bit dogmatic (but what do you expect from a manifesto). However the section on SEO is a potentially bad idea. It seems borderline black-hat and very similar to cloaking.

</comment><comment><USER15> Facebook does this now, so you can keep chatting while surfing through its pages. But used like that, it does feel like a bit of a hack somehow.</comment>


Show HN: BookFlocks - <AUTHOR> http://bookflocks.com

<comment><AUTHOR> Interviews about books, in the spirit of usesthis.com.

I'm publishing a new interview every week (you can follow @bookflocks on Twitter for announces).

There's still much work to do:

. RSS feed

. A page collecting all the books mentioned in the interviews

. Better mobile version

. And so on and so forth…

I hope you'll find it interesting, feedbacks are definitely welcome</comment>


Virtual machines are the answer to most problems - <AUTHOR> http://blastar.in/crawfraud/?p=584

<comment><USER2> Except to ... to many layers of indirection.

<comment><AUTHOR> Virtual machines cannot solve every problem.

The thing is there are a lot of retro and legacy software out there that people need to run, but won't run on modern systems.

Virtual Machines solve that problem, but they don't do things like 3D acceleration very good so that 3D video games for Windows won't run in a virtual machine. But as far as the 2D business apps go, they run quite well.

Most business software is written for DOS, OS/2, and 16 bit Windows. None of the modern 64 bit systems will run it. DOSBOX can run most 16 bit DOS programs but lacks printer support and other things. With a virtual machine an IBM PC- DOS 2.0 for example it is possible to emulate a parallel port and redirect the printing using a DOS based Postscript driver so that the printing goes to a Postscript file and then using Ghostscript it can be printed on any modern printer.

I really don't see why this subject is not discussed more on Hacker News. Many businesses are still running very old DOS, OS/2 and 16 bit Windows PCs because the modern systems break their critical business software. If those machines fail, there are no new ones to buy and replace them. So these 386 and 286 PC systems have become rare and worth a lot of money. But a Virtual Machine can run an old DOS, OS/2 or 16 bit Windows version to run the old business software on a modern PC using QEMU or VirtualBox or even VMWare.

I know people who want to do virtual machines for these businesses, but how does one start out doing that? Most of these businesses have a limited budget and cannot afford to pay developers to write new modern versions of their mission critical apps, so they keep using the old PCs and hope they don't break.</comment></comment>


2D polygon-based collision detection and response - <AUTHOR> http://elancev.name/oliver/2D%20polygon.htm

<comment><USER2> The best thing about this is that Crayon Physics like games would become more common because more people can easily code 2d physics and it will also help in creating 2d simulators!</comment>


Scientists develop "transparent wood" - <AUTHOR> http://pubs.acs.org/doi/abs/10.1021/acs.biomac.6b00145 <comment><USER2> Anybody has a picture of this transparent wood?

<comment><AUTHOR> [http://www.gizmag.com/transparent- wood/42560/](http://www.gizmag.com/transparent-wood/42560/)</comment></comment>


Bitbucket down - <AUTHOR> https://bitbucket.org/?andItsGone <comment><USER2> Main site is back up for me, outage page[1] is still reporting that everything is down.

Edit: Everything looks to be golden again.

[1] [http://status.bitbucket.org/](http://status.bitbucket.org/)</comment>


Memory corruption security bug in Linux since 2009. Can we move away from C now? - <AUTHOR> http://arstechnica.com/security/2014/05/linux-gets-fix-for-code-execution-flaw-that-went-unpatched-since-2009/

<comment><USER2> You have my permission to "move away from C." Chances are you're not writing much of it right now anyway.</comment>


Can the European Union Learn from Switzerland? (2014) - <AUTHOR> http://tillrahn.com/2014/11/28/eu-ch/ <comment><USER2> Switzerland also moved far more slowly than the EU, and waited with common currency until cultural and political unification had come much further than EU today. I think one of the authors central themes was the need for pragmatism over ideology.

I think that is the main problem with the EU today. Too many career politician with grand visions. We need people more rooted in reality who understand and respect national differences and don't pretend we are all so dam equal.

To clarify, we are equal in value, but not in customs, expectations and nature.

I think all Europeans want to be together, but we don't fully trust each other and that must be taken into account.

<comment><USER3> > _I think that is the main problem with the EU today. Too many career > politician with grand visions._

I have a lot of things to say about career politicians, but _grand visions_ clearly isn't the first thing that comes to my mind.

> _We need people more rooted in reality_

I know many people who would say that Realpolitik and lack of ideals is actually what is poisoning the EU.

<comment><USER2> I suppose it all depends on perspective. I just don't think the ever closer EU integration is driven by pragmatism. I think it is driven by grand visions for a superstate because they have this rosy idea of how nice it would be for all Europeans to share one country holding hands and singing happy songs.

They don't seem to take any practical considerations to things like there are countries like Greece which simply hasn't solved the problem of collecting taxes and spending within means. 100 German economist signed a petition against Greece joining the Euro, because they said exactly what happened would happen. Instead the pragmatists were overruled by the dreamers.

The ones who have suffered the most due to these dreamers are the Greeks themselves. Real love is setting proper boundaries and not just give into anybody's indulgences.

</comment></comment></comment><comment><USER4> > _A solution to more democracy in the EU could be bicameralism as practiced > in Switzerland - or many other democracies for that matter - as proposed by > federalists. Here the people of Europe would be represented in one body of > the legislative and the nations in equal parts in the other._

This is a shockingly good and after-the-fact obvious suggestion. Can someone help me understand why the Parliament (popular)/Council (national ministers) structure [1] isn't this?

[1] [https://en.m.wikipedia.org/wiki/European_Union_legislative_p...](https://en.m.wikipedia.org/wiki/European_Union_legislative_procedure)

<comment><USER5> We kinda have it: the people are represented in the European Parliament and the nations in the European Commission.

</comment></comment><comment> saiya-jin short answer? not that much.

longer - yes it's supremely well working society. society built from single atomic pieces called citizens. remove/change them, and whole thing will fall apart like house of cards. people here are given a lot of freedom, hence responsibility over their lives, ie through direct voting. as we saw with britain, similar approach clearly fails when tried even in another modern western country (yes I call it a failure, not because of result, but because the way whole thing has been done)

I mean, this is the country that publicly voted NO to extend 4 weeks of paid vacation per year to 6. I don't know a single other place where people would vote against their own interests (maybe Singapore? but that's not democracy to start with). And countless other examples.

this country was done via 800 years of struggle through violent events in Europe, and somehow it remained what it is now. you cannot expect to have this "national experience" present somewhere else, and randomly copy pasting something that makes sense here to other place won't work. because of people. don't get me wrong - I wish it would be possible, but I don't see any way.

<comment><USER6> Don't get me wrong, I admire the swiss. But attributing a nations success to higher moral standards of individual people is crazy. The swiss might exhibit admirable qualities worth emulating but those qualities might as well be the result of a rich and stable environment the country had over the generations. That environment was also bought by providing "safe havens for the wealth of dictators and despots, mobsters and arms dealers, corrupt officials, and tax cheats of all kinds" and staying equally un-committed to both sides in WW2 when one of them was Hitler is not something to write home either.

</comment></comment><comment><USER7> Good read! Maybe it's my swiss blood but I have been thinking along the exact same lines this last week.

</comment><comment><USER8> Internet has been UNITING the world. Hence it's prudent to DIVIDE nations into smaller countries to protect the interests of Common man.</comment>


Wrong about Japan and Sex - <AUTHOR> http://kotaku.com/wrong-about-japan-and-sex-1450567428 <comment><AUTHOR> The original article ([https://news.ycombinator.com/item?id=6579294](https://news.ycombinator.com/item?id=6579294)) was discussed here, and has now been linked/referenced all over the place. The original article was _interesting_ but flawed in so many ways. It's absurd how easily long-form pieces get boiled down into tweet-friendly, linkbait headlines that are not at all supported by the document they link to. I worry about the future of well-reasoned analysis.

Good that kotaku picked up the counter-aguments and a few good journalists are now tweeting out counter-arguments but like the saying goes, a lie can travel half way around the world while the truth is putting on its shoes.</comment>