The 48 Laws of Power - anybody read the whole thing? - <AUTHOR> http://www2.tech.purdue.edu/cg/Courses/cgt411/covey/48_laws_of_power.htm

<comment><USER2> I read it also, and I found it quite interesting. Particularly the historic tidbits, which the author uses to put the rules into context.

In Venezuela for example, many of our politicians actions can be analyzed and compared with some of the book's stories.

I wouldn't be to eager to dismiss it as a Machiavellian Field Guide -although Machiavelli appears quite a lot throughout the book-. Many of the examples, in a less drastic way, happen all around us, all day long. So being prepared, can't be bad, right?

I wouldn't use the book word-for-word for my daily interactions.

That being said, this is a book I wouldn't swap out of my personal library at all.

PS: LOL @ the Rules of Acquisition! Thanks for the link, LogicHoleFlaw.

</comment><comment><USER3> Yeah, a few years ago. It's basically the Dummies Guide To Being an Abusive, Manipulative Bastard. At a bookstore this weekend I saw the author has another book out titled "33 Laws of War", it looked to be much of the same.

</comment><comment><USER4> I read it. I refer to it occasionally as a field guide to decode the behavior of management, politicians, and other people with power. A few years ago I found some clues in it on how to deal with an evil boss.

</comment><comment><USER5> I own it and his other books, to me I find it more fascinating for the snippets he attaches to each item. I can't tell you any of his laws but I can recount a number of the stories in it.

</comment><comment><USER6> Personally I think the Rules of Acquisition may be more useful:

<http://www.sjtrek.com/trek/rules/>

</comment><comment><USER7> wow. i guess i'll never be powerful because these look like rules on how to make enemies and destroy people's trust.</comment>


When did the OOP principles change? - <AUTHOR> I have a stupid question - when did the Object-oriented programming principles change? In my childhood, I was told that there are three OOP principles: encapsulation, inheritance, and polymorphism. Now I get more and more articles about four OOP principles - one new came out eventually, it's called abstraction. One of the common definitions of abstraction: "An abstraction denotes the essential characteristics of an object that distinguish it from all other kinds of object and thus provide crisply defined conceptual boundaries, relative to the perspective of the viewer." — G. Booch, Object-Oriented Design With Applications, Benjamin/Cummings, MenloPark, California, 1991. Is it really a principle, it seems like it the idea on which other principles was built. <comment><USER2> Today many pedants rehash old lists of what the definition of OOP is and I think it's not useful. You see articles in broken English spammed to the Java discussion board on LinkedIn and the occasional person wanders into Hacker News traumatized by a job interview where they were asked to come up with a specific list, etc.

Abstraction is a basic principle for dealing with life, never mind software. For instance, imagine you are keeping track of bowling scores.

Well, you probably use the abstraction of "integer". Integer is overkill however because it can be negative, and could possible take an infinite amount of space to represent. Practically you might write the scores by hand with base-10 arabic numerals and you know how to execute an algorithm for abstract operations such as "addition".

Doing it on a computer?

Bowling scores can be as high as 300 so a "int8" is not quite big enough, but a "int16" is just fine and you wouldn't care if it was signed or unsigned.

In the 1960s you would learn how addition is implemented in circuitry if you studied computer science, today you might not -- you don't need to because Intel or ARM did it for you.

If there is a real problem with "Paradigm X" where "X" could be "OOP" or anything else, is that software tends to reify one particular view of a situation whereas different people involved in the situation see it differently.

<comment><USER3> Extremely confusing discourse. I can only assume that was your goal.

<comment><USER2> I wish I could explain it better.

It is not some glib mantra like REST or SOLID or SCRUM that you can repeat over and over again and imagine that you understand something.

It's about the gap between the map and the territory which is the most mysterious and confusing place in the universe. (e.g. the "Dark Matter" is there)

</comment></comment></comment><comment><USER4> Our understanding and experience with OOP has evolved significantly since 1991. Heck, the GoF book didn't come out until 1994! You are correct that encapsulation, inheritance and polymorphism used to be preached. Then Microsoft brought out COM and noted _you really don 't need_ inheritance.

Fast-forward to 2019 and OOP is on SOLID ground:

S - Single responsibility principle

O - Open-closed principle

L - Liskov substitution principle

I - Interface segregation principle

D - Dependency inversion principle

I would argue that abstraction is the base principle of all programming and really isn't terribly useful principle with which to differentiate OOP.

</comment><comment><USER5> Perhaps your or another's understanding changed. Avoid the cargo cult of millennial software design. It's generally polluted.

It does no harm to reference the GoF that perhaps the same G. Booch is associated with:

Design Patterns: Elements of Reusable Object-Oriented Software

Replace word first thinking with thought first thinking and you'll be fine.</comment>


Cilium 1.4 released - <AUTHOR> https://cilium.io/blog/2019/02/12/cilium-14 <comment><USER2> Support for multi-cluster routing is _huge_. One of the main pain points managing Kubernetes in the large-deployment or cross-cloud use case is how to bridge multiple clusters. SIG multi-cluster works on related architecture issues/designs full time, and there are lots of other solutions out there, but they're all kind of large and bulky.

If one "thing" (Cilium) can give me local-node breakneck speed (via eBPF magic) _and_ cross-cluster (v1.4) _and_ node <-> node routing I would absolutely drop everything and switch to it (my deployment is _very very_ small).

All that said, I'm currently very happy with kube-router[0], because it gave me all-in-one node & service/pod routing (as in, you can actually _get rid of_ kube-proxy. Cilium is now way higher on my short list of things to check out now as well.

[0]: [https://www.kube-router.io/](https://www.kube-router.io/)

<comment><USER3> How does kube-router compare to Project Calico?

<comment><USER4> Calico or Cilium? ;)

Compared to Cilium I would spontaneously say it's bpf and fqdn based network policies.

</comment></comment></comment><comment><USER5> For those of us that don't know everything, it is sometimes helpful to put a description of a project in the title when announcing a new release.

In case anyone is ignorant like me:

> Cilium is open source software for transparently providing and securing the > network and API connectivity between application services deployed using > Linux container management platforms like Kubernetes, Docker, and Mesos.

<comment><USER6> How does Cilium compare to HA-Proxy or Traefik? Are they operating in the same realm or is that on another layer?

<comment><USER2> They're completely different products for different uses -- Cilium is a overlay networking solution (so, more than one program working together) for use inside container orchestration frameworks like Kubernetes/Mesos/Nomad, where as HAProxy/Traefik are applications that do reverse proxying and load balancing.

Cilium may happen to do some proxying and balancing but you dont do things like "add a backend to Cilium" \-- you "add a backend" to Kubernetes, Cilium is handling your networking, so it sees that, and ensure your frontend (which is already deployed let's say) inside the same kubernetes cluster can speak to the backend when it reaches out for it.

HAProxy is a TCP-only reverse proxy and load balancer similar to NGINX.

Traefik is a reverse proxy and load balancer (currently HTTP only I believe) built relatively recently with modern features like a HTTP administration interface, OpenTracing compliant (IIRC) request tracing, let's encrypt for certs, and automatic polling of a container orchestration layer (if you have one) to populate backends/frontends.

<comment><USER7> This seems cool, but maybe I don't understand something... Wouldn't your frontend and your backend be in the same kubernetes cluster?

<comment><USER2> Yeah, they would be -- Cilium handles your inter-cluster routing first and foremost (making sure those two things can talk to each other, and have a unique IP, which is a requirement of Kubernetes).

Some companies that are trying to do multi-cloud or really large kubernetes installations (or just multi-tenancy) are finding that they have to split up the clusters for isolation or availability as well, so now Cilium offers a solution for that as well.

<comment><USER7> Thank you for explaining!

<comment><USER2> No problem! Counting on the HN community to speak up and correct any mistakes I may have made :)</comment></comment></comment></comment></comment></comment></comment>


How WhatsApp messages and contacts can be intercepted by Intelligence Services - <AUTHOR> https://maikel.pro/blog/how-apts-can-intercept-messaging-apps/#whatsappsmsreactivationande2eencryption <comment><USER2> Title: Messaging apps and SMS: How "secure" platforms rely on insecure authentication

</comment><comment><USER3> Can old messages be retrieved once a new key exchange has taken place? Or are the old messages stored only on the device?

<comment><AUTHOR> On WhatsApp: No, messages are only delivered once.

On Telegram: Yes, you can read all history of "normal" chats.

</comment></comment><comment><USER4> Isn't WhatsApp "security" based on "Signals's" platform?

So presumably Signal has this same issue.</comment>


Yelp deleting negative reviews for Dentist who killed Cecil the Lion - <AUTHOR> http://www.yelp.com/biz/river-bluff-dental-bloomington <comment><USER2> To be clear, I think this guy is complete scum, and he should go immediately to jail. That being said, I think Yelp should removes reviews of a business from people who have clearly never used the business' services. The purpose of the site is to review the performance of the business -- not pass judgement on the owners' unrelated activities. In this case, reviews should about the dentistry provided. While this case is well-known, trending, and the actions of the owner quite clearly repugnant, if they don't generally cull such reviews then the ratings will become untrusted as people will wonder whether or not the business' ratings are the result of actual experiences or based on completely unrelated factors.

<comment><USER3> What crime would you send him to jail for? You can't jail people for being "scum". That isn't rule of law.

<comment><USER2> He violated the Zimbabwean anti-poaching laws by killing a protected animal. Extradite him and let him rot in one of their prisons.

</comment></comment></comment><comment><USER4> Yelp's statement[1]:

"Media-fueled reviews typically violate our content guidelines. One of these deals with relevance. For example, reviews aren't the place for rants about a business's employment practices, political ideologies, extraordinary circumstances, or other matters that don't address the core of the consumer experience."

Agree with their decision. Just because he's a heartless poacher doesn't mean he is a horrible dentist. Plus, there are a dozen or so others who work at the practice. If he goes to jail, this type of social media vigilante justice only harms the innocent.

This reminds me somewhat of reddit's DIY investigation into the Boston marathon bombings. The justice system works well but is slow. Social media vigilante justice is fast but not fair.

[1][http://www.marketwatch.com/story/yelp-pulls-reviews-of- lion-...](http://www.marketwatch.com/story/yelp-pulls-reviews-of-lion-killing- dentist-2015-07-29)

<comment><USER5> _" Social media vigilante justice is fast but not fair."_

That's because "social justice" isn't about justice. It's about punishing an entity with a real or perceived advantage, in order to appease a victim- mentality group. Righting any possible wrong or establishing true equality has nothing to do with it.

</comment></comment><comment><USER6> I think this is correct for Yelp to do. It is brigade-voting / spam. Similarly, if a bunch of folks from Fox News saw something about Y Combinator controversially and started dumping things in the threads I'd expect it'd be deleted.

</comment><comment><USER7> They are right. If you haven't actually visited the establishment and used its services, you shouldn't be able to review it. Same with products reviews on Amazon or app reviews on phone app stores.

</comment><comment><USER8> Business is closed and the comments don't have anything to do with the business itself. While I don't condone him killing the lion, I have no issue with them deleting the comments.

</comment><comment><USER5> At this point, I don't know what's more disgusting: the poaching or the slavering, bloodthirsty mob who wants to punish the dentist without due process.

<comment><USER9> Excellent question. Poaching is worse. Glad to help. :)

</comment></comment><comment><USER10> well, he closed his practice, so does it really matter what the reviews say, positive or negative?

</comment><comment><USER11> Why shouldn't they?

This is the shitty, mob mentality that needs to stop.</comment>


How my boss monitors my work from home - <AUTHOR> https://www.nytimes.com/2020/05/06/technology/employee-monitoring-work-from-home-virus.html <comment><USER2> This software is gross and I'll live on the street before I install it on any device I own. If my employer wants to use it on my laptop, fine, but I'll be looking for another job after I setup mouse wigglers and GPT2 models to type slack messages in the interim. Sure it's unethical, but so is spying.

The article is short to the point of almost uselessness, but maybe more people will see it this way.</comment>


Show HN: IfLoop, a new programming style, designed for mobile phones and tablets - <AUTHOR> http://www.tapirgames.com/blog/ifloop-web-demo <comment><USER2> Interesting concept. Point 3 here is however really worrisome.

> Your IfLoop programs are always runnable, at any time. IfLoop programs even > has no runtime errors. If you get a property of a null object or get an > array element with an index out of range, a null value will be returned. If > you use the null value as a Number, it will be viewed as 0. If you use the > null value as a Boolean, it will be viewed as false. If you use the null > value as a String, it will be viewed as a blank string.

That is not good. Programs will just show unexpected behaviour. This is exactly what is terrible in PHP-land. You should not autocast values to other types.

[http://www.tapirgames.com/blog/ifloop-programming- language](http://www.tapirgames.com/blog/ifloop-programming-language)

<comment><AUTHOR> It looks many programmer don't like this feature. Ok, it can be an option. :)

</comment></comment><comment><USER3> It's an interesting idea, but it's hampered by a few things. First, you can only use variables or direct values as conditions, or as arguments to functions, etc. That's a severe restriction, and it feels time consuming to keep creating local variables to put those values into before-hand.

Speaking of which, it would be nice if you could tap on an if-expression condition, and create a new local variable from inside that screen. It would save several clicks to get to the local variables screen.

<comment><AUTHOR> thanks for your comment. like it very much.

Yes, there are advantages, and also some disadvantages and restrictions, comparing to text coding style.

Your suggestion is very great and workable I think.

It is just v1.0 now. The improvement space is still very large. In coming versions, it will support drag-and-drop, drag to move items, etc.

</comment></comment><comment><USER4> I like it. Example of what's cool:

 _Syntax is just a theme

You program can look like a python program, a golang program, or any other ones. Each code line can end with ; or not, etc._

Is there program samples somewhere? Is there any lib for it?

<comment><AUTHOR> Ah, currently, there is only the one default theme. I will add others in coming versions.

There is no lib for it. This implementation is very simple. Contrary to text programming languages, which convert texts to object file, IfLoop converts object file to texts. A theme is just to define how texts are produced from the object file. Converting from obj file to texts is much easier than converting texts to obj file.

</comment></comment><comment><USER5> If you're interested in coding interfaces on mobile, I've yet to see an on- mobile coding app as slick as Lisping[1].

Touch C[2] on WP8 showed potential, but sadly seems to be all but abandoned.

[1] [http://slidetocode.com/lisping](http://slidetocode.com/lisping) [2] [http://www.windowsphone.com/en- us/store/app/touch-c/3fb34f3f...](http://www.windowsphone.com/en- us/store/app/touch-c/3fb34f3f-83e9-4199-a70e-d05a47172794)

</comment><comment><USER6> I'm confused - you say it's designed for mobile - but the link requires flash and therefore I'm unable to use it on mobile.

<comment><USER7> I assume it's just the web demo that won't work on mobile.

<comment><USER8> Yeah, it's a native app, not a web app: [http://www.tapirgames.com/App/IfLoop](http://www.tapirgames.com/App/IfLoop)

</comment></comment></comment><comment><USER9> Something that requires me to install the flash plugin on 2015?

Pass.

<comment><AUTHOR> The reason I use Flash is to save development cost. Adobe AIR can help me distribute this app to web, pc/mac and mobile devices. I know HTML also works for these devices, but I am not familiar with HTML5.

If there are many people like this app, I will try to port it to HTML5.

<comment><USER10> If you want to launch anything in 2015 it's HTML5 or bust. If you know ActionScript, you know Javascript.

Instead of Adobe Air, use something like nw.io / node-webkit, or Github's awesome Atom Shell.

<comment><USER11> Throwing in my two cents: Atom Shell is now known as Electron[1]. Clever, eh?

[1] [http://electron.atom.io/](http://electron.atom.io/)

</comment></comment></comment></comment><comment><USER12> Nice description, ACPUL is made for same purposes.

1\. IfLoop has no compilers

ACPUL also compile on fly + Live coding

2\. IfLoop has no keywords

ACPUL is no keywords & fully native translatable language

5.Every custom function can be used as the entry function

Same, like JS. No-args functions.

Also, ACPUL made for full UI customization, developer can made & run self-IDE. Here is easy sample, how I made new touch-input control for graphics, that much better than code editing like Codea, Mobile-C or TouchDevelop, IfLoop.

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

ACPU: The Matrix - is remote control extension for integration with Desktop OSes. Here is demo video:

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

Another sample is working version of DOTA-like game prototype with Physics, Networking & Graphics in some lines of code:

[https://github.com/d08ble/acpul- demo/tree/master/dota](https://github.com/d08ble/acpul-demo/tree/master/dota)

I think, mobile developing is the Future, I'm very happy, than more & more peoples going in dev @ mobile.

[http://acpul.tumblr.com/](http://acpul.tumblr.com/)

</comment><comment><USER13> This is pretty neat!

I didn't test it personally because flash / chrome but from the video I'd strongly recommend changing the selection animations / dialogs; at the cost of a bit more jarring UI I'd much rather have instantaneously available selections to choose so that I'm not bound by sliding windows, etc.

<comment><AUTHOR> Thanks for the suggestion. Yes, part of UI will change much later.

</comment></comment><comment><USER14> If you are interested in C coding/running in iOS/Android/WP8/Kindle , Search "Mobile C" for each platform.

</comment><comment><USER15> This is really cool!

Recently I've felt we need to advance in our programming tools, and this feels like a good step in that direction.

<comment><USER16> I got about two minutes into the fibonacci tutorial before I couldn't stand watching any more.

If you don't mind my asking, why do you feel this is an advancement?</comment></comment>


Show HN: I kinda fixed the textures on my JavaScript ray cast engine - <AUTHOR> https://github.com/victorqribeiro/myRaycast <comment><AUTHOR> Support to multiple textures added</comment>


Skills Kids Should Learn - <AUTHOR> http://www.dailygood.org/view.php?sid=194 <comment><USER2> I thought that was a good article. Indeed, I think some areas like tolerance should go much further. The idea of celebrating differences, especially those which are shocking of fear-inducing is essential but most people (of any political ideology btw) completely lack this.

I teach my children to be willing to sit down and each roasted guinea pigs in Ecuador, sea cucumbers in Indonesia, to understand and be tolerant of different belief systems, and to explore and try to find value in understanding different people.

All too often cultures collide and the result is political activism to correct the "misguided ways" of the strange and alien others. It's something which must be deeply resisted.

</comment><comment><USER3> Well, one skill I thing is quite essential to anyone anywhere at anytime is socialization, something you won't learn easily being homeschooled.

Kids need to be out and see lots of different people and characters before their adulthood, otherwise they're gonna have an schewed view of others.

Why not try to teach them all this different skills and values while they go through traditional venues of growing up instead of alienating them from the rest of the world around them?

<comment><USER4> I used to think that (and was not homeschooled myself), but as far as I can tell, the research doesn't actually show much difference in socialization between otherwise comparably situated homeschooled and non-homeschooled kids. There seem to be some aggregate differences mostly because of the different distributions of religiosity: a lot of homeschooled kids are homeschooled for religious reasons. But if you compare middle-class-secular homeschooled kids to middle-class-secular public-school-goers, they seem broadly similar.

</comment></comment><comment><USER5> Good article. I feared "programming" would be one of the items, but I'm glad it wasn't.

<comment><USER6> Well I don't know, words like "solving problems", "acquiring new skills", and "training" sound inadequate to talk about children education.

<comment><USER7> Perhaps. But on the other hand, when I see children sitting in nice orderly rows quietly to watch some adult scratching chalk against a blackboard -- I really can't help it. It's like there's a knot in my heart and an odd feeling of, "what a waste."

I don't have children, but I have seen my nephew and niece grow up. I can at some level appreciate that our hard-working lifestyles demand that we pool our babysitter service in this way -- and that while we're pooling those reserves we might as well have some noble motives like teaching them the patterns that are important in life -- reading, calculating, political rights they do and don't have. I am also at some level afraid of them inheriting some artificial culture of unquestioning authoritarian worship: sit in place, do not question, obey, obey, or else you're in trouble. That's a crucial but underestimated part of the problem of whininess: it's not just that your parents give you everything you ask for which makes you whiny, but it's the fact that you've lived atop this social order, and have been taught that it's proper to be bossy at the top: that that's the way you get what you want when you're an adult in front of a class of children.

When I see these rank-and-file kids and part of my subconscious inadvertently blurts out, "what a shame," I don't know what's better. One great thing I've heard from people who have been to third world countries is, "it was so beautiful, I saw kids assemble a ball out of grasses, and _just play_." Acquiring new skills, solving problems -- these are just sophisticated abstractions atop "you have to learn how to play." Give them a wood shop, make sure they know how to control the machines so that they don't injure themselves, then give them a goal and problem they've never solved before. Something like that.

Surely there has to be some hybrid here, if we want every child to be able to do mental arithmetic and speak a second language and so forth. But surely there is also something heroic missing from the public schools as they now stand.

</comment></comment></comment><comment><USER8> I'd like to add: self-control. This is a skill that everyone needs to improve, regardless of how much you already have.

</comment><comment><USER9> These are also skills most adults should learn as well.

</comment><comment><USER10> I can see why people get all fuzzy and romantic about their children and their children's future, but these people are just going to end up crippling their children for lack of realistic ideas about real skills to learn.

Let's set aside questioning the notion of whether or not there even can be one universal set of skills that guarantee success merely through some conformance to a Platonic Ideal of Humanity for a second, and begin to construct a somewhat harsher, but more realistic, list.

1) Shutting up and getting to work--Yes, your mommy thinks you are special, and you think your kids are special, but nobody else does. Whether you're in service of a crappy manager inside some sucky megacorporation or trying to pry cash out of fickle customers, the only thing your gatekeepers care about is what you can do. So, do it. Turn off Facebook. Turn your phone off. Write your damned code or design your damned bridge and deliver it. Or push your resume around. Just turn off the distractions and make yourself go.

2) Conform--Again, Snowflake, you're one among a million lower-case-s snowflakes. Get over it. Go along to get along. If your so stuck on yourself that you can't dress down like a slobby developer when working with slobby devs, or put on banking attire if you code at a bank, then you're going to make people uncomfortable and make things worse for yourself. Go ahead, feel smugly superior about it as you do it, but do it. I'm sure they are all mindless automatons, but you can do it out of a conscious choice. Just remember, they can kill you, but they can't eat you. Snowflake.

3) Perform while depressed or discouraged--You're not a hothouse flower. You are an employee. Or an entrepreneur. You're a name to you and your friends, but your a number to somebody who's between you and a promotion. Or your next paycheck. You're not always going to be happy, and you're still going to have to meet your obligations, still going to have to provide value to someone or make progress to a goal that provides value to someone. Take a pill or drink a beer or cry on a shoulder, but don't stop performing until you can afford it.

4) Recognize bullshit--And recognize that it's everywhere. That's not a moral judgment. It's just the way it is. It's easy to spot in the obvious places, like advertisements, but not so easy in others, like when someone is blogging about the wonderful things they're going to instill in their children that the Bad Old Education System just won't for some reason. Everyone wants to blow smoke up your ass. Especially your parents. Especially parents who want to view themselves as enlightened friend-peer-guides to their crotch spawn. You're special, but not more special than Daddy's ego. Not really.

5) Watch out--Look out for number one. I don't mean to not play on a team. Just recognize that it's play, that it's a thing you do for certain reasons. Everyone else on the team is in the same situation, whether they realize it or not. Are your skills a threat to someone else on the team? Watch them. Be careful around them. Be a little paranoid while maintaining some perspective. It is not at all uncommon for someone of either gender to trump up a harassment claim to neutralize a rival. (Among many other stupid and counterproductive things.) Don't be paranoid, but be aware and smart.

That's a start. You get those things down, and "Problem solving", "Compassion", and "Tackling projects" will seem like the stress-free child's play that they are.

Good luck out there. You're gonna need it.

<comment><USER11> Wow. This is such heinous and poisonous advice I actually considered flagging this post.

Learning how to focus and building a high quality work ethic is important, but your advice is horrid. Following it is likely to lead a person to becoming a burnt out husk of a human being by the time they are 40, if not sooner.

<comment><USER10> Actually, it turns out that it's neither heinous nor poisonous. You seem to be having an allergic reaction to the contrast between advice about how the actual world functions and how actual productive people function in it, and the flowery advice given in the article.

Basically, each of the 5 points I listed comes down to, "Momma said there'd be days like this, days like this Momma said!"

I guess, at this point, I'd be curious about what, in particular you found "heinous", "poisonous", "horrid", or likely to lead to one becoming a "burnt out husk of a human being" before the remarkably specific age of 40. However, I suspect that you'll find you've imported a bit of your own baggage into your explication.

<comment><USER4> I found your post to be a bit unproductive (despite legitimate content) because it was so deeply ridden with spite and disdain; too much focus on name-calling! Without the smug superiority complex and palpable hatred for a certain group of people you clearly consider beneath you, it would've been a bit easier to engage with.

Even a bit of humility about whether your personal vantage point and opinions are accurate pictures of the entire "real world" would help...

</comment></comment></comment></comment><comment><USER12> I enjoyed how on every paragraph you switched between the genders of the subject. Nice touch.

<comment><USER13> Yeah, that caught my attention more than the actual article (which was a great one)!

</comment></comment><comment><USER14> The most important thing you can do for your children is to prepare them to leave.

</comment><comment><USER15> I think the title should be changed to: Skills 'Everyone' should learn.

Of course if you are taught this as a child then everyone will know in the future but many generations at this moment in time still do not accept all these points..</comment>


SQLite is easy to compile - <AUTHOR> https://jvns.ca/blog/2019/10/28/sqlite-is-really-easy-to-compile/ <comment><USER2> > But then I tried to run it on a build server I was using (Netlify), and I > got this extremely strange error message: "File not found". I straced it, > and sure enough execve was returning the error code ENOENT, which means > "File not found". This was kind of maddening because the file was DEFINITELY > there and it had the correct permissions and everything.

This is an infuriating property of the runtime linkers on both Linux and Windows: if you're trying to load file A, and dependency B of file A does not exist, you just get "file not found" with no indication of which file it was, and it's extremely hard to debug. At least on linux the "show dependencies" tool is built in.

<comment><USER3> There is also LD_DEBUG, which is quite helpful.

</comment></comment><comment><USER4> > All the code is in one file (sqlite.c), and there are no weird dependencies! > It's amazing.

This is because the author of SQLite publishes it this way as a convenience to integrators; the actual day-to-day coding is _not_ done in a single C file.

In fact, the README[1] calls out twelve "key files", and explicitly warns that SQLite "will not be the easiest library in the world to hack."

[https://sqlite.org/src/doc/trunk/README.md](https://sqlite.org/src/doc/trunk/README.md)

<comment><USER5> I'm not a C/C++ developer, but why can't more C/C++ projects be distributed as source amalgamations? What prevents this from happening?

As in, source to source amalgamation rather than a more complicated build system to generate a binary.

<comment><USER6> > why can't more C/C++ projects be distributed as source amalgamations

* Build time and memory increases.

* Debugger locations are less clear. MSVC debugging doesn't even work past 64KB lines.

* You still need to link it anyway when using as a library.

* Linker optimization has improved (especially clang).

* It's more difficult to modify.

SQLite has some decent reasons for it especially historically; I'm not sure those reasons are as strong for other projects.

For applications, distributing binaries is even more convenient than source code (assuming they exist for your platform).

And for libraries, "header-only" can be more of a convenience than "single- file".

<comment><USER5> Interesting, thank you!

Are there any ways of doing that sort of distribution header-only then, rather than single file?

</comment></comment></comment></comment><comment><USER7> Short Tcl script that combines everything into one file:

[https://www.sqlite.org/src/artifact/5fed3d75069d8f66](https://www.sqlite.org/src/artifact/5fed3d75069d8f66)

Some other details / rationale:

[https://www.sqlite.org/amalgamation.html](https://www.sqlite.org/amalgamation.html)

 _Combining all the code for SQLite into one big file makes SQLite easier to deploy — there is just one file to keep track of. And because all code is in a single translation unit, compilers can do better inter-procedure optimization resulting in machine code that is between 5% and 10% faster._

</comment><comment><USER8> One of the benefits of this is Alon Zakai's wonderful compilation of the SQLite C code with Emscripten to generate sql.js, which I have found very useful for teaching SQL.

[https://github.com/kripken/sql.js](https://github.com/kripken/sql.js)

<comment><USER9> Awesome! "Web SQL Database" rides again!

[https://en.wikipedia.org/wiki/Web_SQL_Database](https://en.wikipedia.org/wiki/Web_SQL_Database)

</comment></comment><comment><USER10> Yeah, so, this just blew my mind. I compiled it with an older version of gcc that I had on my Windows machine and it worked just as easily (without threading, or -ldl)

But there it is, a fully featured SQL engine in an EXE file that I can use with any application I want.

In a world that requires a million SDK's, DLL's, dependencies, etc, this is the most refreshing thing in the world.

</comment><comment><USER11> Being easy to compile is a very nice thing to have about any software. Redis for example, is also too easy to compile, and quickly too. I think a lot of software using autotools is easy to compile (atleast on the POSIX compliant systems). Even postgresql is easy to compile, although not very quickly.

</comment><comment><USER12> > run ./configure > realize i'm missing a dependency

If only there was like, a tool, to help you manage compile-time dependencies.

I wish there was a `yarn` equivalent for C projects.

<comment><USER13> This problem is 1000% harder than you think it is, and everyone has a different idea on how to solve it.

<comment><USER12> Sure, but like... `package.json` as a source of truth for dependencies (package names + semver criteria to match) followed by abstracting fetch + build away through one command `yarn install`

Those two concepts will always remain the same despite the underlying workings, no?

<comment><USER14> That's what distributions do. For example in Debian, the lists of build and run-time dependencies are in ./debian/control

</comment></comment></comment></comment><comment><USER15> Another good example is the Go compiler. Assuming you have any version of Go in your PATH, it's:

        git clone https://github.com/golang/go
        cd go/src
        ./make.bash     # or make.bat for Windows

And that's it. You can then use "bin/go" to compile your projects.

<comment><USER16> It's a whole lot more complex to run a build script like this than a simple call to a C compiler, and has many more dependencies: you even need bash installed, and it looks like the script would fail if the kernel isn't compiled with selinux support... The script itself isn't that compilcated, but complicated enough that I didn't want to spend too much time reading it.

Moreover, you cannot compare cloning a git repository with downloading a single c source file... This seems equivalent in complexity to the good old "git clone; ./configure; make"

</comment></comment><comment><USER17> The amalgamation file is a really interesting idea -- is this common in the world of C applications? The documentation is quite clear, however, that the amalgamation file and the source files are not the same thing. The source code (1,848 files in 40 folders) can be pulled down here -- [https://www.sqlite.org/cgi/src/doc/trunk/README.md](https://www.sqlite.org/cgi/src/doc/trunk/README.md) \-- but more assembly will be required if you're planning to build the project.

UPDATE: maybe not so much assembly is required... just running "make" built the project without any drama (I'm on macOS with XCode and tooling for Xamarin already installed - YMMV in terms whether you might need to install something to compile from source).

<comment><USER18> It's not common, but there are other projects like this for easy integration, especially on embedded systems. You see some C++ libraries that are a single header file include. And here is a collection of single file headers for graphics tasks, like loading images, resizing images, rendering font glyphs, etc:

[https://github.com/nothings/stb](https://github.com/nothings/stb)

</comment></comment><comment><USER19> Every time an article about SQLite hits the front page here, I find myself stunned at how well-designed it is.

</comment><comment><USER20> I haven't checked yet but was curious if it post processes the file into a single source file or that's how it's developed. The former sounds useful for build (as her blog suggests) whereas the latter sounds frightening to audit. (Unless it's written literate?)

<comment><USER21> I believe they use TCL scripts to generate the amalgamated .c file. Oddly enough there is a post about TCL on the front page as I type this.

</comment></comment><comment><USER22> It's far more easier. I had some sqlite2 database on an old system but nothing to convert it or even dump it. Had to download sqlite2 source and delete all _tcl_.c files. Then ran

        gcc *.c -o sqlite2

and it was done. That much simple.

</comment><comment><USER23> I love a happy ending!

(Especially when many of _my_ compiling-from-source experiences resemble what the author was anticipating)</comment>


Advanced AWS S3 Questions for an Interview – With Answers - <AUTHOR> https://levelup.gitconnected.com/10-advanced-aws-s3-questions-for-an-interview-with-answers-40316c8eb8ba <comment><USER2> great, let's waste interview time with useless flavor of the month storage solution triva</comment>


How do such obvious things get past a QA team  - <AUTHOR> http://imgur.com/6NYCc Looks like there is a bug in the AppStore. My question is I am sure there is a dedicated team for testing before release. My question is how does these obviously visible bugs get past standard manual and automated testing procedures <comment><USER2> If I had to guess: test while the server providing (part of) the data your app needs is up and serving the data format you expect, later run while it isn't.

This could be as simple as a date parser that doesn't know about December.</comment>


Installing Fonts Using Homebrew - <AUTHOR> http://collindonnell.com/2018/04/20/installing-fonts-using-homebrew/ <comment><USER2> Linux users might laugh at us but this is still very convenient and according to the upvotes still new for some people.

It might be less polished than this solution but on Windows the same can be done with Chocolatey: [https://chocolatey.org/search?q=font](https://chocolatey.org/search?q=font)

<comment><USER3> > Linux users might laugh at us...

Why? I have my system config source controlled and even have a bootstrap script to set up a new Mac from scratch that installs Homebrew, which installs git and Python, and then installs via Homebrew all my system packages and casks like Google Chrome, iTerm2, Spotify, etc. plus programming language packages through their respective package managers, etc. And now fonts (which I only discovered the tap for a little while ago). That's one less thing to install/update manually and it's very appreciated.

<comment><USER4> Can you share this magical file?

<comment><USER3> Here's my setup repo with all my system config:

[https://github.com/kbd/setup](https://github.com/kbd/setup)

Here's the bootstrap script I mentioned:

[https://github.com/kbd/setup/blob/master/bootstrap.py](https://github.com/kbd/setup/blob/master/bootstrap.py)

Here's the config file with everything I install, settings, etc.:

[https://github.com/kbd/setup/blob/master/settings.py](https://github.com/kbd/setup/blob/master/settings.py)

</comment></comment></comment></comment><comment><USER5> The best way to me is just clone [https://github.com/ryanoasis/nerd- fonts](https://github.com/ryanoasis/nerd-fonts) and look into the `pateched- fonts` folder, see what font you might like and do `./install.sh <font name>`. That's it.

</comment><comment><USER6> I use Skyfonts to install fonts from Google Fonts. Unfortunately you can't create account for Google Fonts, so you end up doing select-and-install for each device you own (i.e. no syncing).

At least it's (slightly) better than manually downloading it, unzipping, double-clicking, etc (you get the idea).

</comment><comment><USER7> > I could even have the script in Dropbox and have it run periodically in the > background using a launchd service to keep everything in sync.

I recommend GitHub over DropBox for storing this script.

</comment><comment><USER8> Simple `brew install` shell script for many fonts:

[https://github.com/SixArm/sixarm_brew_install/blob/master/br...](https://github.com/SixArm/sixarm_brew_install/blob/master/brew- install-our-fonts.sh)

If you prefer using a `Brewfile` for many fonts:

[https://github.com/SixArm/sixarm_brew_brewfile](https://github.com/SixArm/sixarm_brew_brewfile)

Feedback and PRs welcome.

</comment><comment><USER9> I am surprised that so many people write scripts to do stuff that Homebrew offers already - Homebrew Bundle [0]!

Also, why do people copy & paste `brew install` or `brew cask install` so many times in a script when you can do something like `xargs`?

[0]: [https://github.com/Homebrew/homebrew- bundle](https://github.com/Homebrew/homebrew-bundle)

</comment><comment><USER10> Apart from a few apps that are App Store exclusive, I install everything on my Mac using Homebrew and Homebrew Cask. I highly recommend it to anyone who has not used them before.

<comment><USER5> Yep, and below line will help you a lot.

$brew update && brew upgrade && brew cu -ayq

</comment></comment><comment><USER11> Author didn't mention it but you can then list available fonts with `brew search font-`

</comment><comment><USER12> Anyone got any strong recommendations?

<comment><USER13> Anonymous Pro, especially when you use a smaller font size

Terminus for fans of the old school</comment></comment>


Skype vulnerability allowing hijacking of an account if you know just the email - <AUTHOR> http://pixus-ru.blogspot.ru/2012/11/hack-any-skype-account-in-6-easy-steps.html <comment><USER2> OP at <http://habrahabr.ru/post/158545/> (russian) says that he reported this vulnerability about 3 month ago. The lack of any reaction is unbelievable.

Hint: you can change your email to something like firstname.lastname@example.com to avoid registration of new email address.

<comment><AUTHOR> Even now Skype reaction is unbelievable. They are "investigating the issue" for almost 2 hours.

<comment><USER3> Stop saying "Skype", use "Microsoft" instead, and it's not unbelievable at all.

<comment><USER4> Except that Microsoft has a pretty stellar reputation when it comes to security procedures. They're well known as being among the best in the industry.

<comment><USER5> Well, they've certainly cleaned up their act, but I definitely wouldn't say that they're known to be among the best in the industry.. I remember just a few year ago, you could get to ring0 in Windows and install a rootkit just via the registry.. Let's not forget all the hotmail vulnerabilities similar to this that have been active for an indeterminate amount of time..

<comment><USER6> A few years is an enormous period of time especially when it comes to tech and infosec.

</comment></comment></comment></comment></comment></comment><comment><USER7> Microsoft reports they have disabled password resets during the investigation: <http://heartbeat.skype.com/2012/11/security_issue.html>

<comment><USER7> That text was replaced, here is the old text:

        We have had reports of a new security vulnerability issue. As a precautionary
        step we have temporarily disabled password reset as we continue to investigate
        the issue further. We apologize for the inconvenience but user experience and
        safety is our first priority

</comment></comment><comment><USER8> It's even worse! Their website is so broken you can't change your password (new password fields are disabled) and you can't set a new email address as primary (the "make primary" button only appears when the new email address field is empty). Also, if you first add a new email address, save, then set it to primary, it disappears. Wtf.

I see no recourse other than closing my account, if that's still possible. [edit] No, not even that is possible.

<comment><USER9> This appears to be a bug.

After adding the email address and clicking save, logging out, and logging in, I found the email address was successfully added. At this point I could change it to the primary one, click save, paste my password, and click the button on the password prompt to successfully change my primary email address. If I tried to add the email and make it primary in one session, it would not work. If I entered my password and hit enter, it would not work.

<comment><USER10> Doesn't work for me - I can add a new email address, but when I sign out and back in it's vanished. Feels like they might have disabled parts of the account management system.

<comment><USER11> The site is very buggy indeed. But it is possible to change the primary email adress if, when you are prompted to retype your password, you "type password and click button by mouse, not by "Enter" key" (as the post says). Maybe that would work for you...

</comment></comment></comment></comment><comment><USER7> Skype reports this has been resolved: <http://heartbeat.skype.com/2012/11/security_issue.html>

        [UPDATE:14/11/2012@15:28GMT]
        Early this morning we were notified of user concerns surrounding the security
        of the password reset feature on our website. This issue affected some users
        where multiple Skype accounts were registered to the same email address. We
        suspended the password reset feature temporarily this morning as a precaution
        and have made updates to the password reset process today so that it is now
        working properly. We are reaching out to a small number of users who may
        have been impacted to assist as necessary. Skype is committed to providing a
        safe and secure communications experience to our users and we apologize
        for the inconvenience.

<comment><USER12> Good to hear they fixed it but it was responsibly disclosed a month ago and Skype did nothing whatsoever. We really need a better way to hold a company accountable for appropriately reacting to proven security threats without requiring a public disclosure.

</comment></comment><comment><USER13> I confirm. Just tested on Win7, Skype 126.96.36.199

The notification about the password reset token does appear in the Skype client, but no reset code is shown at first. Then I've pressed Ctrl+F5 on the home screen, skipped the Facebook thing, and here they are!

<http://www.xiag.ch/share/2012-11-14_1021.png>

On OSX doesn't work, though. The password token notification doesn't come.

<comment><USER14> also it seems the password reset link, is not working for me.

<comment><AUTHOR> MS is fixing the problem right now. They turned off password recovery form few minutes ago.

</comment></comment></comment><comment><USER15> By the way, Skype's registration page has inexplicable password rules.

 _aaaaa1_ \- strength: medium

 _aaaaa12345_ \- strength: poor

 _=aStu!et$aQ@212345_ \- strength: poor

<comment><USER16> Yeah, at my last job, someone implemented a password strength checking feature that would actually reject stronger passwords. It required:

1\. At least 3 out of the 4 categories uppercase, lowercase, digit, special character

2\. No character could be repeated more than two times

3\. No sequence of 3 or more increasing or decreasing letters or numbers could be present (and not even consecutive: "ta/Tbs#cz" would be rejected because it contains "abc").

4\. No English words or names could be present.

5\. It must be at least 8 characters

There may have been other restrictions too, I don't recall the exact details.

This meant that perfectly reasonable passphrases (like "correct horse battery staple") would be rejected. Even if you tried to come up with a good password that met the rule, you might fail by accident because "89cRbcThe*)" has the word "The" in it. You would generally have to come up with a password, then whittle it down slowly until you passed all of the rules, usually making it weaker in the process.

<comment><USER17> They must have really dedicated customers. That, or their users are required to use their system under the pain of multi-year imprisonment. I see no other way why would anyone agree to suffer through this.

</comment></comment></comment><comment><USER18> You can't even delete your Skype account if you want to. You can only change some of the information:

[https://support.skype.com/en/faq/FA142/can-i-delete-my- skype...](https://support.skype.com/en/faq/FA142/can-i-delete-my-skype- account)

<comment><USER19> If you contact support you can set the account as deleted. So that screenname becomes unavailable (or at least that is what they told me when I did it).

</comment></comment><comment><USER20> I think as a precaution, you can change your Gmail address, using the + operator. In case you didn't know, you can receive emails sent to firstname.lastname@example.com

</comment><comment><USER21> In August I received an email from Skype thanking me for registering an account. But I already had an account, I didn't register this one. After comparing the new account name with part of my email, I came to the conclusion that someone mistyped their email address, and registered an account on my address. I contacted their live support, here's the conversation:

        George A: Hello! Welcome to Skype Live Support! My name is George. How
        may I help you?

        me: Recently I have received an email welcoming me to Skype (not
        phishing, I verified). The problem is that I didn't create the account
        mentioned in the email. The account name was "[NEW SKYPE ACCOUNT]" and
        my email is [MY EMAIL 1], so I think that user mistyped his email
        address, and then Skype sent a welcome message to me. Doesn't skype
        verifies email addresses before sending a welcome message?

        George A: I understand that you are concerned about your email address
        being used to setup a Skype account, I'll be happy to help you with
        that.  May I please have your Skype Name?

        me: [MY SKYPE ACCOUNT]

        George A: I would also need the email address, please.

        me: [MY EMAIL 1]. let me check that this address in on my Skype
        account... ok, my email on file in Skype is [MY EMAIL 2].  and a few
        other too, all mine :)

        George A: Well, I see that there is only Skype Name registered under
        that email address, the Skype Name is [NEW SKYPE ACCOUNT]

        me: Yes, for my account ([MY SKYPE ACCOUNT]) the primary email is [MY
        EMAIL 2], but other emails on profile are [MY EMAIL 1], [MY EMAIL 2],
        [MY EMAIL 3].

        George A: May I please ask you to confirm which Skype Name that you do
        not authorize?

        me: Does Skype sends verification message before assigning the email
        to account? The Skype name which I didn't create is [NEW SKYPE
        ACCOUNT]

        George A: May I also have the email address that was used?

        me: [MY EMAIL 1]

        George A: Well, I would need to send you a confirmation to that email
        address. I would kindle need you to reply back to that email.

        me: Please do

        George A: Then, we will be able to delete that Skype Name for you.

        me: thank you

        George A: You are most welcomed, please expect me email within 10
        minutes.  Is there anything else I can help you with today?

        me: Could you tell me if email accounts that are registered with Skype
        are being verified by sending a message to them? If so, maybe there's
        bug in your system?

        George A: We send a welcome email to the registered email address
        whenever a new account is set up using that email.

        me: OK, that's what I received. And then you also send other emails
        with offers to the same account. So, basically, anyone can create an
        account for any email. Why don't you verify emails?

        George A: Please understand that all of us here at Skype take our
        customers' privacy and confidentiality very seriously

        me: OK. Thank you.

        George A: You are most welcomed. It's been a pleasure speaking with
        you today. Thank you for contacting Skype Live Support, have a great
        day. We value your feedback. Please be aware that we will ask you a
        few questions after closing the chat window about your experience with
        us today.  Once you are ready please click on the "Exit" button.

        me: I suggest adding a link to Welcome email that says "I didn't
        create this account". Bye!

Realizing that there's nothing this support person can do about this, I sent email to their "security" people. I received no reply.

And now this failure to verify emails leads to the linked vulnerability. Nice.

<comment> grey-area The same is, or was at least, true of xbox live - someone registered using my email, and there's obviously no account confirmation, as the account is live and I receive email notifications etc, but I can't get into it or remove it, since I don't know the password. I wonder how many other sites do this to avoid friction on sign up?

<comment><USER22> Happened to me too. I have no way to tell them that I am indeed _not_ xXx_Rastafarian_xXx .

<comment><USER23> You're going to end up on some federal agency list for being a suspected pothead ;)

<comment><USER24> Fortunately even our fear of drugs isn't that insane.

</comment></comment></comment></comment></comment><comment><USER25> After successfully exploited this on my own account, tried again with my SO's account and <https://login.skype.com/account/password-reset-request> has been blocked. Pretty good emergency reaction.

It should be noted that after my account password is changed, I tried to login with the old password, the Windows Skype app told me the username and password combination is wrong but it still let me logged in. This may be a different bug in caching?

Hope we can get a postmortem report out of this...

<comment><USER26> Apparently, <https://login.skype.com/account/password-automation> still works.

<comment><USER27> It only works if the account had a credit card on file and/or made purchases in the past. Unless you know the credit card number or the purchase ticket number, this link isn't much help.

Can't believe Skype has been ignoring this issue up until in got to the top of Hacker News and HabraHabr.

</comment></comment></comment><comment><USER28> I think it's a good practice to always use unique, unpredictable email addresses when signing for online services.

1\. Most people use the same or similar password, so once one account gets hacked, the attacker is probably able to use many other accounts on different services with the same email address/password combo.

2\. It's easier to spot services that spam, or that leak your email address (I became aware of a leak of email addresses on Box... luckily it was only emails that got leaked, at least according to Box support).

3\. It's easier to block spam, once a service misbehaves or gives away the email.

I wrote a little more about using it as a "passwordless password manager" at [http://blog.gingerlime.com/2011/passwordless-password- manage...](http://blog.gingerlime.com/2011/passwordless-password-manager/)

update: (if blog post is too long...) this does not mean setting up hundreds of different email accounts. On most services like hotmail, google and yahoo you can simply append some unique string to your email address, e.g. email@example.com. Making this _unpredictable_ is important however, so appending +facebook and +twitter is not helping much though...

<comment><USER29> Are you suggesting to have a different email address for every online service we use? Today I manage about 100 different unique passwords for every online service. This is already very inconvenient. Adding as well as having different bogus email addresses would be at least 2 times more difficult!

I think something is really broken in today's web authentication scheme. I think there is really huge need for some independent and reliable service (Mozilla's Personas maybe).

<comment><USER30> I use unique and secure passwords for all online services, <https://agilebits.com/onepassword> makes it really simple.

</comment></comment></comment><comment><USER31> And they said I'm crazy to create an extra email address just for Skype back then..

</comment><comment><AUTHOR> Password recovery form was disabled and as of now the vulnerability can not be exploited. See announcement [http://community.skype.com/t5/Security-Privacy- Trust-and/Pas...](http://community.skype.com/t5/Security-Privacy-Trust- and/Password-vulnerability/m-p/1207232)

</comment><comment><USER32> Not quite as bad but it is also possible to get a user's IP address just by sending them a friend request. This has been known about and exploited for months, possibly over a year. It's meant that high profile users of Skype on sites like youtube or twitch.tv have to keep their skype private and/or connect to it specifically with a proxy to avoid getting DDOSed

</comment><comment><USER33> Any idea the period of time this bug has been present? I remember the login process being inconsistent (especially among the iOS apps) when I signed up four years ago, but I attributed it to me just being unfamiliar with the service.

<comment><USER34> Yes. Wow yes. The interface is getting better, but its still awful. At least you can now return a missed call without going out the page, into contacts, and hunting the caller down. The OSX client is a whole other world of pain. FaceTime briefly looked like a promising replacement, but no.

</comment></comment><comment><USER35> I'm genuinely curious- what's keeping people on Skype? There are better alternatives out there now (Google+ Hangouts, for example). Will this push any of you Skype users over?

<comment><USER17> Hangouts are very different use case from Skype. Skype is a messaging platform, g-hangout is a teleconference platform. They have intersecting, but not identical uses.

<comment><USER36> In my experience, the people that want me to use them have that exactly backwards.

</comment></comment></comment><comment><USER37> It looks like they've fixed it now. <https://twitter.com/Skype>

</comment><comment><USER38> Forgot password no longer working, seems like they switched the function for now. Step in right direction.

</comment><comment><USER39> Didn't work for me on the Mac version of the Skype client. Will retry on Win7.

</comment><comment><USER40> Nice work MicroSoft.</comment>


Impact of Go AI on the professional Go world - <AUTHOR> https://medium.com/@hajinlee/impact-of-go-ai-on-the-professional-go-world-f14cf201c7c2 <comment><USER2> Chess went through a similar transition in the last 10-20 years when computers became much stronger than the best human. Some of her points are valid, some of them are temporary.

1\. Professional gameplay changes a lot.

There are no more secret openings/midgames/endgames, you will hardly be able to cheese a top pro (not that it was easy before). Professional gameplay requires memorizing tons of lines and then adding on to add it. There are many chess openings which require memorization till the end result (50 moves) or you risk losing the game. We are going to see a similar trend of memorization in Go.

2\. Online casual gameplay changes a lot.

There are lot of cheaters in online forums. Cheat detection has to be built in to the sites or you risk being taken over by cheaters. Easy availability to best moves allows the dedicated player to learn a lot faster than previously where there was a discoverability issue. We see this in the professional chess world where its not uncommon to see 14-16 yr old GMs nowadays.

3\. Professional teaching still survives.

Engine can tell you the best move but it doesn't give you a teaching path from beginner to amateur professional to grand master. I am not a master but based on anecdotal evidence people still employ coaches but for much more focussed tasks and more specialized skills (e.g. openings, midgames, endgames).

<comment> i-am-curious What's the incentive to master a game already beaten by AI?

<comment><USER3> What is the incentive to run faster, when a car can drive faster, or build strength when a tractor can lift more?

What is the incentive to do any artistic endeavor, if you are not planning on being one of the world's best pianists, or painters, or singers, or furniture- makers?

Go was probably already solved by some distant species on a planet far away. Did that make it any less enjoyable for us to play? What's the difference?

</comment></comment></comment><comment><USER4> The article is an interesting discussion by a Go insider in Korea.

Regarding the impact on pro-level teaching:

"The demand for pro-level teaching games and private lessons has plummeted. Professional players used to command a high price for teaching games and lessons, and this has been a critical source of income for many pros."

I think the community would also be interested in articles which discuss the impact of AI on professionals in other fields, obviously chess, but also more distant ones such as e-sports and language translation.

——

On language, I would guess that the demand for non-certified translation might plummet between many major languages and English since automatic translation of documents is now quite close to human level when there is sufficient training data.

Down the line, might this reduce the demand for advanced foreign language skills and thus change the career paths of language majors as well?

<comment><USER5> This is interesting and doesn't make a lot of sense. You can't learn good form just by playing a good opponent.

<comment><USER6> I think you can. Especially when you can browse the tree which is similar to asking your teacher "what if" questions.

Many players I know learned how to play pretty well on 9x9 by playing a computer program.

I'd argue you can even learn much faster playing a program, because for high level players many sequences were based purely on memorization (including point values) but now seeing different results quickly you can understand it better.

And the level where your play is based on high level abstractions like influence and group strength is not that hard to reach and it wouldn't take much to reason them out just from the games.

<comment><USER7> I think the proper statement is that it's possible, but not efficient. Learning go from a go-program seems much like learning assembly from gcc.

<comment><USER6> People I know that went studying go to Asia had output from their teachers likely worse than you get from the program given the language barrier and general approach. It was about playing games with strong players (playing different styles, which I admit may teach a bit more than Alpha) and having teacher to point you which of your moves were bad and what to do instead (and that's it, only seeing some sequences and hearing "good", "bad"). Because knowing how and when you lost the game is huge. And doing shitloads of go problems of course.

That said, it still may be worth having a teacher/trainer I guess. To motivate you, give you that dopamine in person and all that jazz.

I would say it's more like learning to code yourself rather than at the university than learning assembly from gcc.

</comment></comment></comment></comment></comment><comment><USER8> Along with a response from Antti Törmänen 1p, a Finnish professional: [https://www.nordicgodojo.eu/post/276/impact-of-go-ai-on- the-...](https://www.nordicgodojo.eu/post/276/impact-of-go-ai-on-the- professional-go-world-response)

<comment><USER9> I think this might hit on the key as to why demand for teaching is dropping even though AIs don't really replace good teaching:

> Lee seems to combine these two with the silent assumption that the > professionals' goal is to strive for the 'highest possible level of go', > which is no longer possible because the ai cannot be beat; incidentally, Lee > Sedol remarked something similar when he announced his retirement. To me, on > the other hand, it seems like nothing has changed because I have always > reached for the 'highest possible personal level of go', and this should be > the same for most players who are not near the top of the world.

Perhaps it has less to do with being at "the top of the world" and more to do with the role of the game in the broader culture. If what attracts you is not just your personal drive to improve, but the sense of overall societal contribution, that will surely wane if training goes towards study of AI rather than active research in play. On the other hand in the US/Europe such a thing hardly exists at all even for professional players.

Maybe a comparison point: What happened to voice and instrument lessons once recorded music became commonplace? In the fairly recent past any social group that wanted to listen to decent music must have had a member who was at least a slightly-above-average musician; and once they didn't need that anymore, that skill may have significantly dropped in social standing. That doesn't mean no one takes lessons anymore, but it seems like the number would have greatly reduced. (On the other hand, the median interest level and drive among people taking lessons probably increased.)

(Does that mean the go world is going to have to find its equivalent of Kurt Cobain to get lessons started again?)

<comment><USER10> Could you explain the Kurt Cobain statement? Not being snarky, just unfamiliar with what you're referencing.

<comment><USER11> _> Could you explain the Kurt Cobain statement? Not being snarky, just unfamiliar with what you're referencing._

I believe they are saying that Cobain's work (and the popularity of Grunge generally) brought new life to the Rock music scene, leading to an uptick in garage bands forming (and therefore demand for music lessons?) as a second order effect.

</comment></comment></comment></comment><comment><USER12> I love the idea of tea ceremony before a lesson. I'd hate for that culture to be lost entirely.

Ironically, the AI-Explainability problem is, at least for now, an asset. The model can't explain its strategy, only that it judges some positions stronger than others based on a huge amount of experience.

That reduction of aggregate experience to comprehensible language is still (mostly) in the realm of humans and so should provide a bridge for talented, insightful teachers to teach the next generation.

<comment><USER13> Top chess engines are atleast 700-800 points above top human. Engines have been absolutely unbeatable for humans for 10 years. Still I don't see the culture lost. In fact, it is easier for anyone to see mistakes after every match in less than a minute and you don't need a coach to point it for you.

<comment><USER14> Seeing mistakes after the fact is one thing. Developing the thought process you need to see the mistakes during the game is a whole different thing, and that's where a coach helps. Also a computer won't tell you its plan and why it chose it.

<comment><USER15> The computer makes the tactical blunders very clear.

For strategic/positional issues, it is not nearly as good a teacher.

</comment></comment></comment></comment><comment><USER16> Slight tangent, but the barrier of entry to play Go is quite high. I've been learning over the past few months and it's very frustrating.

My biggest complaint is that the jargon is just out of control. For whatever reason, instead of localizing go jargon like the chess community has done, the Go community just uses native japanese terms for everything. This makes it super confusing as a beginner and you basically have to have the wiki[0] open all the time if you have any hope of understanding what people are saying.

For example, when reading a beginner's article:

"In this case you can't move here because of ko, so you would instead look for other pieces that are atari or close to atari - just be careful of seki"

Would a bit of localization killed the go community?

"In this case you can't move here because of the repetition rule, so you would instead look for other groups of pieces that can be captured or are close to being captured - just be careful not to get in a capture-stalemate scenario"

My second biggest complaint is that scoring is not straightforward at all and there are 2 rule sets (Chinese, Japanese). Which ruleset should I use? Are there any subtle strategy changes you need to make when switching between rulesets? When playing I have no idea who is currently winning if it looks close (i.e. roughly equal white/black areas) and I basically just wait for the computer to announce the winner at the end.

Anyway, just venting about my frustrations learning Go. Chess, by comparison, was much easier to learn. I didn't feel swamped with jargon and it was much easier for me to grasp which side was winning (though occasionally good chess players can pull a checkmate out of a seeming disadvantaged situation that I didn't see coming!)

[0] [https://en.wikipedia.org/wiki/List_of_Go_terms](https://en.wikipedia.org/wiki/List_of_Go_terms)

<comment><USER17> > instead of localizing go jargon like the chess community has done,

Yah, we never say Zugzwang or J'adoube or Desperado or En Passant or Fianchetto or Zwischenzug.

There's not so many foreign words to learn to understand Go compared to chess. For lots of the fundamental Go words, they'd need a new English word coined anyway or an imperfect metaphor.

<comment><USER18> > For lots of the fundamental Go words, they'd need a new English word coined > anyway or an imperfect metaphor.

This. Even the chess words that are anglicised have special meanings in chess. Being a native speaker of English doesn't help you understand what a "Bishop" is or what is "Checkmate" (OK, that's an anglicised Persian word) or the difference between a "Pin" and a "Skewer".

Also, most of the Japanese terms don't have a meaning outside Go, so it's not like Japanese people get a leg up there.

</comment></comment></comment><comment><USER19> If you haven't seen it, the documentary on DeepMind's AlphaGo is very well done. The climax revolves around the AI expressing what we humans call "creativity" in a match against decorated player Lee Sedol. Watching Lee Sedol's reaction is deeply moving.

Free to watch on YouTube: [https://www.youtube.com/watch?v=WXuK6gekU1Y](https://www.youtube.com/watch?v=WXuK6gekU1Y)

<comment><USER20> This comment, that AlphaGo showed "creativity", seems so ridiculous to me. Alphago is operating purely on bayesian statistics (with very good priors) so it's decisions are exactly the opposite of creativity.

<comment><USER19> It's an invitation to define (or re-define) creativity, my friend :)

If it seems ridiculous to you, that's a good signal that you'd get a lot out of digging into philosophy of mind.

Where do our thoughts come from? Creativity? Is it so preposterous that these too arise from probabilistic electrical storms - but in wet matter as opposed to hard?

Where thoughts come from may be too complex for us to model now, maybe ever. But if you look deep enough, I think you'll find at heart deterministic processes driven by networks that were trained through nature + nurture.

Maybe creativity is less ethereal than we perceive. Maybe it would benefit us to start considering how non-sentient intelligence can achieve it.

<comment><USER20> I am not making, and do not explicitly agree with, the statement that only human brains are imbued with 'creativity'. However, the core of the alphaGo algorithm is just a monte-carlo tree search of the game initially populated with prior estimates of the value of each game state(with the generation of the prior value estimates being carried out by the DNN). I see no space in this simplistic statistical game analysis for concepts such as creativity. The move in question was chosen because it's prior value estimate by alphaGo was favorable and upon further analysis was concluded to be the most likely to result in a game victory relative to all other available moves. If alphaGo was only trained on human matches and subsequently was able to discover moves that drastically deviate from typical human strategies, I would be more open to labeling it as creative. However, most of alphaGo's training is carried out against itself, it's entirely possible that alphaGo has made this particular(or similar) move many times against itself during training.

<comment><USER21> Much of human creativity is likely linked to some sort of Bayesian analysis, but it also can happen based on limited sample sets and unseen situations. As you point out, the Alpha Go likely just saw that scenario out of millions of random scenarios never explored by humans before. Given the enormous compute resources used, it's possible AlphaGo has made more Go moves than all of humanity ever combined.

Reminds me of a quip about Richard Feynman that he'd spend many hours honing a new way of doing a physics problem, but carefully present it as if he just did it off handed. So we just need to link human brains with cybernetic implants to compete. ;)

</comment></comment></comment></comment></comment><comment><USER22> Lol. This a pointless comment to the people interested, but I'm so amused with my stupidity I had to share.

I opened this thread with absolutely no thought about the _game_ Go, and read the top comment about how chess changed in the last 10-20 years thinking it was tangentially related because of Watson and whatnot playing AI chess.

I came here thinking I was going to read comments about how the Go language has been impacted with the introduction of ML and AI packages that attract data science types from Python and R. I thought it would be interesting to see how a newer/smaller language was impacted by a group co-opting the the development and platform.

Whoops.

<comment><USER23> My advanced Go AI, written in Go, is now able to predict, with modest accuracy, the next line of Go code that should be bashed into the text editor:

      func PredictNextCodingMove(ctx context.Context, source string, cursor int) (string, error) {
          return "if err != nil {", nil
      }

</comment></comment><comment><USER24> I'm told that in the 70s, when backgammon players had a dispute about the correctness of a move (usually a double), they would agree to continually setup the board from that position and play game after game, until somebody capitulates (or runs out of money).

Nowadays we just make a side-bet about what XG mobile will think about the move.

</comment><comment><USER25> A friend put out a related post that I found enjoyable. It has some good background information.

[https://brantondemoss.com/writing/kata/](https://brantondemoss.com/writing/kata/)

</comment><comment><USER26> This is one of the unfortunately reality of advances in technology specially AI. It started with games like Chess and Go, wait and watch as AI will eat into other creative human endeavors - both logical like accounting, programming and creative like art, music etc. How humans will deal with watching AI get better and better than us in many areas will be interesting to see.

<comment><USER27> The thing is games are relatively innocuous but then when it works well you'll see ai applied to higher stakes decision: why not trading by example? Is AI trading a thing? Does it provide an advantage yet? And what is the impact on trading when all of it is automated?

<comment><USER28> Trading is harder because people start with different amounts of capital and different risk tolerance. The more capital you have the more illiquid the market becomes and less predictable.

<comment><USER3> Capital and risk level seem to me something that AIs would be extremely good at adjusting for -- more so that humans, who will bring irrational thoughts into it.

</comment></comment></comment></comment><comment><USER29> I remember the first time something like this happened: Drum machines. All my drummer friends were seriously in their cups. OTOH, they complained that the machines were too perfect, without the human touch. OTOH, they complained that it was impossible to play that perfectly, so they were out of a job.

In the end, there were still drummers, and it is generally recognized that live drumming is, aesthetically speaking, a different thing than sequenced, sampled drum tracks.

I've never heard a drum machine that can truly capture the sound and feel of John Bonham, Keith Moon, Stuart Copeland, or Ringo Starr. It's just a different thing.

<comment><USER30> >I've never heard a drum machine that can truly capture the sound and feel of John Bonham, Keith Moon, Stuart Copeland, or Ringo Starr. It's just a different thing

The only way to establish that would be through blind listening tests.

<comment><USER29> Nerdy but true</comment></comment></comment>


NIMA Codes – A simple addressing system for the places without address - <AUTHOR> https://nima.codes/ <comment><USER2> How does this compare to [https://plus.codes/](https://plus.codes/)? I know that people (maybe just one) on the google maps team came up with plus codes for similar use cases.</comment>


Edge of the Abyss (2012) - <AUTHOR> http://www.smh.com.au/lifestyle/edge-of-the-abyss-20120819-24h4r <comment><USER2> Maybe note that this article is from 2012?

Since then, Bodhi (the brother) has been diagnosed autistic and they suspect he is also a paranoid schizophrenic, but he just doesn't verbalize like Jani does. Michael (the dad) had an affair and the parents are now divorced.

It is a truly tragic story. There is a well-written post from Michael which I can't seem to find where he gives advice to other parents raising children with mental problems.

(I found the quote, but not the whole piece)

> All I can tell you now is you have to decide what is more important to you > In this life, with mentally ill children, something is going to have to go. > You have decide what that is. It our case, it was our marriage. May Jani and > Bodhi forgive me. I couldn't do it all.

<comment><USER3> I stumbled across a post ending in your quote. Looks like somebody started a foundation which turned up on a search of Michael Schofield's name; you might be thinking of this post: [http://janifoundation.org/blog/](http://janifoundation.org/blog/)

<comment><USER4> [http://janifoundation.org/the-fallen/](http://janifoundation.org/the-fallen/)

<comment><USER5> This is indeed where the quote of the parent parent comment can be found.

</comment></comment></comment></comment><comment><USER6> It's stories like this that make me wish as hard as I do for better pre-birth screening for mental disorders, including autism, and continued support of abortion. It's an unbearable burden - to the parents, society, but most of all to the children themselves, who are utterly blameless and must suffer the rest of their lives as a result. I try to debate rationally and understand that other people have their own opinions but I feel sick arguing with people about this. My family has had it easier than many, certainly nowhere as bad as the family in this story, and I love my brother, but if we could choose between him existing and him not existing the latter is clearly better for all involved, including him.

<comment><USER7> But if we aborted every deviation from the norm, we'd probably slip into monoculture as a species, and risk falling prey to a mass extinction event, beyond our understanding.

Somehow, the cold statistics of DNA mutation would leave us behind, and we'd become creatures with no means of adapting, until one vast catastrophe forces the issue.

What might feel practical in the moment, for one, might be terrible for the collective.

<comment><USER8> > But if we aborted every deviation from the norm, we'd probably slip into > monoculture as a species, and risk falling prey to a mass extinction event, > beyond our understanding.

But he wasn't talking about that. A lot (most?) people with serious disorders will not have children, and from an evolutionary perspective that's practically the same as if they died young. There's already selection against those traits.

<comment><USER9> Human evolution is more complex than the survival of an individual, since many of our adaptations are transmitted as ideas not genes.

Following that line of thinking leads to notions about the presence & importance of second-order interactions (especially the impact of ideas on the survivability of a group); these make it hard to reject the hypothesis: _production of outlier individuals is essential to our species_.

Sadly outliers occur on all sides of the distribution, including the unhappy ones.

</comment></comment></comment></comment><comment><USER10> There's a song that was made with the intent to bring this kind of issue closer to people, and it's approved by her parents:

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

</comment><comment><USER11> Title needs (2012), I'd love to read a more recent followup if anyone knows about one. My brother didn't show signs of his schizophrenia until his teens (it may have been triggered/hastened by drug use, I haven't kept up with the literature around that theory), it took over 10 years for him to get to a stable place with my mom's great efforts. The end of the article is encouraging, modern medications and ratios _have_ gotten better and it really helps when the person is a minor. Keep the love and support going, and don't discount her not being a good sister in the end.

"There is no cure for schizophrenia." Yet.

<comment><USER12> I know nothing of your circumstances, but many schizophrenics gravitate to drugs to alleviate their symptoms. I very much like your sentence. "Keep the love and support going, and don't discount her not being a good sister in the end."

</comment></comment><comment><USER13> If I read the article right, it sounds like Jani started immediately improving once people began talking and interacting with her.

I wonder how things might have been different if that treatment would have been tried much earlier on.

</comment><comment><USER14> Oh god I recall this article.

I have three small kids. I am blessed that they are 100% healthy.

I can't imagine how some people handle certain challenges.

</comment><comment><USER15> It's uncanny to me that Jani hallucinates cats and rats... Toxoplasa Gondii evolved in cats and rats, and is linked to early-onset schizophrenia ([http://www.ncbi.nlm.nih.gov/pubmed/16920078](http://www.ncbi.nlm.nih.gov/pubmed/16920078)). Makes me wonder...

T. Gondii is known to cause infected rats to become attracted to the smell of cat urine.

</comment><comment><USER16> i have a 3 yo daughter and a 1.5 yo son. this story is terrifying.

<comment><USER17> I find it amazing at the untold strength in parents like these. Just ordinary folks who somehow find a way to keep on trying and pushing and doing their best when faced with unimaginable challenges.

They fall and get up and keep going.

Makes so many other problems many of us have to face really seem more like "problems".

<comment><USER18> Sadly, story doesn't end here. Now the brother is autistic, possibly schizophrenic and the parents are divorced.

<comment><USER17> Ugh you're right. It seems they romanticized it in their own heads as well. And in the end they're just humans.

The dad wrote a post about it all : [http://janifoundation.org/blog/](http://janifoundation.org/blog/)

Wish them all the best either way, it cannot be an easy journey.

</comment></comment></comment></comment><comment><USER19> What interests me most about this is that even now we are so lacking in our understanding of the function and dysfunction of the human mind that there are not even good words, robust descriptions, or any scientific metrics or diagnostics for what is going on. Words like engagement and violence get thrown around without quantification and a parade of categories are fitted and later abandoned much like Jani's imaginary friends. It is important for us to understand what the mind is and how it is evoked from brain function, but now we are mostly helpless.</comment>


How did Apple's AirPods go from mockery to millennial status symbol? - <AUTHOR> https://www.theguardian.com/technology/shortcuts/2019/feb/10/how-did-apples-airpods-go-from-mockery-to-millennial-status-symbol <comment><USER2> Narrator: they're still objects of mockery.

<comment><USER3> Failure to escape mockery is fundamental to the human condition.</comment></comment>


Show HN: Interlocked - 500k Downloads in 5 days since it's Free - <AUTHOR> https://itunes.apple.com/us/app/interlocked/id554072547?mt=8

<comment><USER2> Well deserving of so many downloads. My feedback is that it sometimes takes two moves to get a piece far enough away from the others to disappear. It causes me to rewind one step which can get irritating because it happens fairly often.

I spent the last 20 minutes playing and thoroughly enjoying it. Thanks for sharing.

</comment><comment><AUTHOR> Hi, this is not my app. It's my cofounder's app. He's been hell banned and refuses to post here.</comment>