The 25 Principles for Adult Behavior (John Perry Barlow) - <AUTHOR> http://www.openculture.com/2018/02/the-25-principles-for-adult-behavior.html <comment><USER2> I am surprised to see "tolerate ambiguity" on the list because I've found that many arguments stem from one party interpreting a statement the other party made in an unintended manner because the way it was said allowed interpretation instead of being explicit.

Is there something to "tolerate ambiguity" that I am missing? Does it not apply to the case I describe?

<comment><USER3> And how would you react in such a case? If not by being tolerant to the fact most communication is ambiguous and learning to deal with it?

<comment><USER2> I double back and resolve the ambiguity rather than continue ahead to find myself in an argument taking past each other because our fundamental assumptions differ.

That very thing has happened to me enough times to become entirely fed up with it to the point that I strive to stamp out ambiguity when I come across it. Such an approach _seems_ to work well so far, or at least leaves me better off than I would be without it.

All that aside, my approach seems to be clearly different from the norm, and does cause some friction at times (although I would argue less friction than would arise if left ambiguous) which definitely has me wondering if I've not taken a wrong turn somewhere along the way.

I certainly would like to better learn to deal with it, assuming that dealing with it is a means to more effective communication (note here how I avoid the ambiguity trap by including my interpretation of your ambiguous statement)

</comment></comment></comment><comment><USER4> > Reduce your use of the first personal pronoun.

This seems out of place. Expressing my beliefs as a function of my experiences and understanding, is a fundamental step in adulthood (along with pragmatically taking charge of your life). Many of the other steps, listed, require the understanding that your views are that and not some other abstract truth.

<comment><USER5> I interpreted that as to reduce talking about yourself.

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

</comment><comment><USER7> Good stuff, but if Barlow's publishers want to compete with Jordan Peterson, this list needs more anti-socialist paranoia and dipshit manichean framing about how chaotic women are.

<comment><USER7> Oh, I'm sorry. Is Jordan Peterson not on top of the best seller lists with an entire book of rules for adults? Was I out of line to draw that comparison?

If not, what's the problem? JP _doesn 't_ hilariously and noxiously blame "cultural Marxism" and the "feminine chaos" of women for the life difficulties of incel basement-dwellers who need to be told to clean their rooms?

Barlow has never looked better than he does under today's comparison.</comment></comment>


Dawn of a New Day - <AUTHOR> http://ozzie.net/docs/dawn-of-a-new-day/

<comment><USER2> Am I the only one who finds Ray's language hard to parse?

In the first few paragraphs alone, Ozzie uses:

      - the realm of the service-centric 'seamless OS'
      - shifted Office from being PC-centric toward now also robustly spanning the web
      - intrapreneurial leaders stepped up to build and deliver an innovative service

I'm reminded of this recent John Gruber quip on Microsoft's "language problem": [http://daringfireball.net/linked/2010/10/11/microsoft- langua...](http://daringfireball.net/linked/2010/10/11/microsoft-language)

What do they feed people in Redmond that makes them such ineffective writers?

<comment><USER3> No, this post is a classic case of marketing, techno, gobbedly-gook. It has no clear thesis, and riffs from topic to topic.

I got bored halfway through, and I still don't understand what his point is.

My favorite use of language is the one you mention "intrapreneurial"!

<comment><USER4> The praise that techcrunch gives it almost seems like parody:

[http://techcrunch.com/2010/10/25/ray-ozzie-dawn-of-a-new- day...](http://techcrunch.com/2010/10/25/ray-ozzie-dawn-of-a-new-day-memo/)

"Below is a short excerpt from the end of the memo, as I wouldn't dream of stealing the man's thunder"

</comment></comment></comment><comment><USER3> I find it striking that the biggest, tangible impact that everyone has pointed to when discussing Ozzie's career at Microsoft is some memo that he wrote 5 years ago.

</comment><comment><USER5> I found that my eyes were unable to focus on any of the text within fifteen seconds of opening this link. Buzzwords floated in and out of view as I scrolled from top to bottom at speed.

</comment><comment><USER6> _"Certain of our competitors' products and their rapid advancement & refinement of new usage scenarios have been quite noteworthy. Our early and clear vision notwithstanding, their execution has surpassed our own in mobile experiences, in the seamless fusion of hardware & software & services, and in social networking & myriad new forms of internet-centric social interaction."_

Ouch!

Coming from the Chief Software Architect, that's quite an indictment.

<comment><USER7> That's probably why Balmer fired Ozzie.

<comment><USER8> By shooting the messenger, Ballmer gets rid of the bad news.

Two years ago, before shedding my managerish responsibilities here, I had to remind my team that I didn't care if they wait until the next briefing to tell me the good news, but that I want to know of bad news as soon as they learn them, even if that means waking me up in the middle of the night.

</comment></comment></comment><comment><USER9> Odd: It's dated 3 days from now, October 28th.

<comment><USER10> It's probably tied to the start of Microsoft's PDC 2010 conference on purpose.

</comment></comment><comment><USER11> In other news: Ray Ozzie leaves Microsoft.</comment>


Enemy AI: chasing a player without Navigation2D or A* pathfinding - <AUTHOR> https://abitawake.com/news/articles/enemy-ai-chasing-a-player-without-navigation2d-or-a-star-pathfinding <comment><USER2> A fascinating AI technique is used in one of the best roguelikes, Brogue. The author called it "Dijkstra Maps". Basically it's about generating a heatmap for all the squares on the level. You can start with 0 at player position, and from that point use a simple floodfill algorithm, putting down increasing numbers with each step. Then a monster simply examines all adjacent squares and selects the one with lowest number. This has at least two notable advantages:

1\. You only need to do the path generation once, and it scales very well with the number of monsters. 2\. It's really good at combining several concerns, because you can generate a couple of heat maps for different concerns and add them up. For example one heat map is about proximity to player. Another could be about proximity to health pickups, or proximity to cover, or proximity to open space if a monster likes to keep distance and shoot. If a gas trap is triggered, you can use a "danger" heat map. Then a monster can easily get closer to player and at the same time choose the path which has fewer harmful effects.

That's why centaur archers in Brogue are so annoying, monsters avoid traps intelligently, monster groups avoid wasting their numerical advantage by chasing player through a corridor.

He described it in detail in this article: [http://www.roguebasin.com/index.php?title=The_Incredible_Pow...](http://www.roguebasin.com/index.php?title=The_Incredible_Power_of_Dijkstra_Maps)

And in case you're wondering, Brogue source code is licensed on AGPLv3.

<comment><USER3> Sounds like a classic potential field implementation, and yeah, they're very useful. There are two problems: scaling with map size (large maps or high detail maps), and update cost in action-heavy games (if the field source moves on every frame). But for small roguelikes it's a very good fit.

<comment><USER2> Thanks for the alternative name! Helps further research the technique. The core idea is relatively simple so I'm not surprised these are known. But finding a name of something you know is not easy with just a search engine.

<comment><USER3> Sure thing! And as I mentioned in another comment, if you google for "potential fields" and "flow fields" in games, there's a whole bunch of papers and talks on this.

<comment><USER2> Now that you mentioned "flow field", I remember seeing it in a Supreme Commander AI demonstration technique. Two columns of tanks can navigate through each other seamlessly, without chaos. And in realtime. Imagine seeing this in the days of Warcraft 1, where it was common for a unit to use left hand rule across the entire map because the bridge was momentarily occupied.

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

</comment></comment></comment></comment></comment><comment><USER4> I'm always saddened that more works doesn't go into making fun and original game AIs. Most AAA games that are released these days have utterly predictable AI, modern shooters don't seem a lot more evolved that Quake 1.

It's too bad because games like F.E.A.R. have shown that even simple AI heuristics can lead to very interesting emergent behavior. TFA demonstrates that very simple AI tweaks can make the enemies feel more organic and realistic.

I suppose that some of the problem is that good IA doesn't make for nice trailers and ads (since you can just script those to do whatever you want anyway).

<comment><USER5> Yes, even a simple implementation of selfpreservation would make KI so much more realistic. Meaning, if the enemy has low health, he is likely to run away. Or if they see all their allies die, etc.

This is really not so hard to implement, simple games could do this for ages.

Or at least basic tactics, I think in Far Cry 1 enemies did not run away, but were smart enough to sneak and circle around you, later in Crysis or the other Far Cry titles, they were just cannon fooder. Makes everthing more hollywood kaboom

<comment><USER6> Does having enemies run away make the game more fun for the player, or does the need to chase them become an annoyance?

If an enemy sneaks around the player, gets in cover and concealment, and shoots them while the player does not understand where the fire is coming from, is it an enjoyable experience?

Smarter and more realistic does not necessarily mean better. We don't write enemy AI for the purpose of it being effective in fighting, it's there to provide entertainment for the player.

It's also about creating the intended emotions. Games are intentionally designed to create a particular set of experiences. There's a niche of games that relies on gratification of overcoming some frustration (e.g. Dark Souls series) but the majority of gamer market prefers a 'power fantasy' emotional experience, so many games are intentionally targeting that. If we want the player to feel powerful, then we design so that their character can defeat many enemies; if we want the player to feel smart, then we design enemies so that their behavior has exploitable weaknesses that they player can discover and feel satisfied while 'outsmarting' or 'tricking' the opponents. In most game genres we don't want the player to feel outsmarted by the computer unless they have made a substantial mistake that the average player is able to notice and correct.

<comment><USER5> "Does having enemies run away make the game more fun for the player, or does the need to chase them become an annoyance?"

A good game mode does not require finding and hunting down all enemies. It has targets, like "go there"(story continues), "blow up X", "clear area Y"

"if an enemy sneaks around the player, gets in cover and concealment, and shoots them while the player does not understand where the fire is coming from, is it an enjoyable experience?"

If the game gets the graphics and gameplay right, for sure! (I still have memories from Vietcong, where you get ambushed in the jungle and don't see anything and just die, until you learn to move in cover and watch the terrain)

And you have the muzzle flash for example. And if you do not see it ... the fun is in getting scared and rushing to cover. Where the enemy cannot see you anymore (if the KI is not cheating) and then move to a different position to find him. Or you can have the kill cam, where you see upon death, where the enemy was, that killed you.

"If we want the player to feel powerful, then we design so that their character can defeat many enemies"

True, but there are various ways to implement this, without ZombieKI. Like in crysis for example, where you have superior tech. Or more hitpoints, because you play a badass. Or in general, you as a player have quicksave and load. The computer does not.

So yeah, I know that the target audience is dumb and wants fast food, so to say, but they also consume what is avaiable. And the standard is mostly ZombieKI, or ultra hardcore realism like in Arma, which is clearly not for everyone, but I really don't see, why the "AAA" games could not invest a tiny bit more in KI that does not break immersion.

</comment></comment></comment></comment><comment><USER7> It might make sense to have the monsters repulse each other. By spreading out, they'll end up taking multiple paths around obstacles, coming at you from different directions, so it looks like more intelligent coordinated behavior.

<comment><USER8> I've used this pattern before in game AI's and it works well. If you combine it with a somewhat random searching incentive the "hive" will spread out and search for the player(s). I also let the "hive" communicate with each other if they find a player they let each other know and then set a new waypoint for that area. When they repulse each other they take different pathways around objects and it looks a feels great to play against.

</comment></comment><comment><USER9> So simple and obvious as soon as you see it in action. I love "hacks" like this: really easy to code, but with a big impact - and so many potential uses too! I'm adding "scent trails" to my bag of tricks for sure.

</comment><comment><USER10> This is how The Mighty Slime Mold hunts.

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

>How This Blob Solves Mazes | WIRED

>Physarum polycephalum is a single-celled, brainless organism that can make "decisions," and solve mazes. Anne Pringle, who is a mycologist at the University of Wisconsin-Madison, explains everything you need to know about what these slime molds are and how they fit into our ecosystem.

</comment><comment><USER11> This technique shows how game AI is different from academic AI. The goal is to create interesting gameplay with minimal performance overhead. This system is just as fun a as "correct" system, but far simpler to implement and cheap to execute.

<comment><USER12> It is academic AI. A lot of papers go on how to implement algorithms fast or how to implement the best approximation within a given time, etc.

</comment></comment><comment><USER13> This technique won't work if your player has teleport abilities like sorcerer in Diablo 2 or Assassin in GuildWars. In those case, you can teleport quite some distance and enemies in a 3D environment will get stuck on a upper slope while a simple path algorithm will make them still chase you.

<comment><USER14> Well, teleporting is a tough problem to solve to begin with. One way to solve it is to have enemies distributed uniformly and restrict their movement to subsections. Once the player teleports, only the enemies in the closest subsections will use the algorithm to reach the player.

<comment><USER15> You could use a traditional path finding algorithm, letting the mobs look around confused while the path is computed.

</comment></comment></comment><comment><USER3> TLDR: instead of doing generic pathfinding, the player avatar drops decaying "scent" into the world grid, and enemies follow the player by doing gradient ascent.

The first time I've seen this technique in use was in the classic SimAnt game by Maxis, in the 90s; in research it was also explored in the ALife community. It's a cool trick, but by itself it's not quite enough, it's good for insect behavior but not much more.

But what _has_ been useful is combining standard pathfinding with this. For example, imagine if one of your units dies and drops some "scent of death" into the surrounding area - and that scent gets incorporated into A* as a large cost value for traversing this terrain. Now all your other units will "smartly" start avoiding the dangerous area for a while, without having to do any expensive analysis of _why_ the unit died there, e.g. was there an ambush there or some such.

(Google for "potential fields" and "flow fields" in games for more examples from commercial games.)

<comment><USER16> "If no line of sight..." I might add

<comment><USER17> Makes me think you can add scent trails to many objects- like the path of a fired arrow. Would help mitigate the "stealthy archer" problem Skyrim AI has.

<comment><USER18> I'm not familiar with that problem.

<comment><USER19> The "stealth archer" build in skyrim is overpowered since the enemy AI can't usually know where the arrow came from, and they tend to aggro, look around their immediate area, then go back to the idle state allowing the player to shoot them again from a safe, hidden spot. Rinse and repeat, and almost any encounter in the game with hiding spots is trivial.

</comment></comment></comment></comment></comment><comment><USER20> A former colleague of mine Meghan Chandarana was doing some really awesome work which incorporated a similar "bread-crumb" algorithm for swarms dispatching groups for tasks and navigation back to the swarm. It wasn't the primary focus but was really cool to see work. If you want to see a application of it for swarms her paper is here:

[https://www.ri.cmu.edu/wp- content/uploads/2018/08/SMC2018.pd...](https://www.ri.cmu.edu/wp- content/uploads/2018/08/SMC2018.pdf)

</comment><comment><USER21> My first thought looking at the animation was Boids [0]. The scent trail approach is interesting because it simulates/respects fog of war (though the game doesn't seem to use it otherwise).

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

</comment><comment><USER22> Cool!

I was playing around with my lil asteroid sim[1] and I wanted to trace the trajectories of the asteroids, so I put a particle generator in the asteroid "base class" and set it to emit sixty particles with lifetime set sixty seconds, zero momentum and velocity, and unaffected by gravity. I bet you could adapt that to make a "scent trail", eh?

[1] [https://git.sr.ht/~sforman/SpaceGame](https://git.sr.ht/~sforman/SpaceGame) but it seems I deleted the experiment. The commit that has it is [https://git.sr.ht/~sforman/SpaceGame/commit/7cc3981631db22be...](https://git.sr.ht/~sforman/SpaceGame/commit/7cc3981631db22be3fa77dc479f111ff86f91a08) FWIW.

</comment><comment><USER23> All of the obstacles in that video are small and convex. This is the easy case of obstacle avoidance. Basically use modified steering behaviours. If that's all you'll ever have, then great -- don't build a system that you don't need.

If you ever move to large non-convex obstacles, like a maze -- there will be mounting problems until it would have made more sense to use a navigation or path-finding.

</comment><comment><USER24> Hmm... pretty sure I already saw something like that long time ago: [https://github.com/id- Software/Quake-2/blob/master/game/p_tr...](https://github.com/id- Software/Quake-2/blob/master/game/p_trail.c)

</comment><comment><USER25> What I'm surprised to not have seen more often is attempts to preprocess a map, group points of it into larger sections and then perform pathfinding on those sections - e.g.:

\- split a map into convex polygons \- use pathfinding to find out which polygins you have to traverse (either by making each polygon a node in the pathfinding graph or by selecting points on the polygon's edges and using those as nodes) \- move in a straight line _inside_ a polygon.

It seems, especially for "almost convex" maps, this could move a good deal of pathfinding computation into the build phase.

</comment><comment><USER26> I had this problem as well with a simple game i made. what i did instead is to just randomize the movement a little. And that was really enough. Making them any smarter would have made the game really short.

</comment><comment><USER27> If you're modeling an intelligent pursuer, the algorithm should anticipate future travel rather than just following.

<comment><USER28> In games the goal of the developer isn't necessarily to have intelligent agents, but to have agents that are fun to play against. Sometimes the goal is to have them be intelligent, but sometimes having them behave in "dumb" but predictable ways makes the game overall more fun.

<comment><USER29> This is the reason usually given for using relatively simple techniques like behavior trees, but, anecdotally, I find that the biggest let down in most games is that the AI is so dumb that it 1) is immersion breaking, and, 2) get same-y and boring very very quickly.

<comment><USER30> Yes. It depends on what the game is trying to achieve.

Subset Games, the makers of FTL and 'Into the Breach' have talked about this extensively. 'Into the Breach' deliberately has the enemies telegraph their plans one turn ahead of time, and the game is all about interfering with those plans.

The rest of the game's design carefully reinforces the message that the enemy units are not intelligent. The backstory has them as basically oversized insects.

If you have a game that pretends to give you realistic human antagonists, but they behave mechanically dumb and predictable, that breaks immersion like you suggest.

One big problem is that having very smart AI that's purely there to oppose you in a zero sum game ain't fun to play against for most people. The handicaps a modern chess or Go engine would have to give you a normal human for a fair fight are ludicrous. And people seldom want fair fights in their games. They want a feeling of accomplishment, but without actually putting in all that much work.

Even hardcore games like XCom cheat in your favour behind the scenes.

There are at least two ways out of this while still avoiding the boring repetition:

\- carefully make the NPC make believable human-like (or animal-like) mistakes, instead of easily exploitable repetitive mistakes \- give the NPC goals that are in conflict with the player, but not 100% so.

A silly example of the second option:

Take a game like Thief that's all about sneaking around stealthily and stealing stuff. Now realistically, most of the guards are just hired goons. They don't want to die, but they don't particularly care about protecting the place. They do care about being seen doing their job, so they don't get fired.

So your job as a player could be, in addition to staying unseen, to provide plausible distractions and reasons for the guards not too investigate to closely.

Higher ranked guards, and owners, would be under higher pressure to perform and won't get away with excuses. So they would be more alert.

Using the same trick over and over again would lower it's effectivity: guards can't plausible claim to their higher ups to have been tricked again and again.

If you are starting to become aggressive to a guard, or he learns that you called one of his friends, the guard's priorities will change towards more self-preservation.

A pacifist run might even earn you respect and admiration from the lower level guards. Just like cat burglars are often admired in real life.

Seen a bit more abstract, the game now becomes one of three factions: the thief (that's you), the low level guards and their employers. All with partially overlapping, partially conflicting goals.

You can throw insurance companies into the mix, if you want to make it even more complicated.

Thanks to the non-zero sum nature of the partial conflict, you can crank up how smart everyone acts, without overwhelming the player:

Eg smarter guards might figure out a way to de-escalate that still looks like a plausible and even courageous move to their employers.

<comment><USER29> I think you've hit the nail on the head. I absolutely agree that "dumb" AI can be explained away and integrated into a game's design and story in ways that make it much more interesting and believable than typical bad AI on its own. I also agree that by providing a flexible and interesting enough scenario, with conflicting goals and motivations, you can improve the AI in ways that are both noticeable to the player and add extra layers of interesting gameplay.

As an aside, unrelated to your reply, I just remembered another common excuse, which is that the enemies only exist for X seconds before the player shoots them, so effort on smarts would be wasted on them. For some games, I think its for sure the case, but I also feel that in many cases the enemy only exists for a few seconds _because_ they are dumb and uninteresting.

<comment><USER30> All agreed.

Both 'dumb' and 'interesting' AI can be useful in a game, it all depends on your game's design.

To give another silly example: Tetris by default has very 'dumb' AI that just gives you pieces at random. You could imagine variants of Tetris with more interesting piece selection.

For example, an AI that makes pieces as unhelpful as possible while keeping their distribution statistically indistinguishable from true random selection.

Or there was an inversion of the 2048 game, where an AI plays the normal game, and your task is to give them unhelpful numbers.

</comment></comment></comment></comment></comment></comment><comment><USER31> really great tutorial.

</comment><comment><USER32> Why are they calling it "AI", though? There isn't any AI or ML.

You leave a trail for the enemy to follow, and they follow it.

It's not even path-finding, it's path-following. Which is pretty much an if- then statement.

It's a neat, simple approach, and fun to watch. But there isn't any learning, or knowledge, or other AI.

<comment><USER33> AI does not mean ML, it is a broad field that is a superset and not a subset of ML. Or as Wikipedia describes it:

>In computer science, artificial intelligence (AI), sometimes called machine intelligence, is intelligence demonstrated by machines, in contrast to the natural intelligence displayed by humans and animals. Leading AI textbooks define the field as the study of "intelligent agents": any device that perceives its environment and takes actions that maximize its chance of successfully achieving its goals.

<comment><USER32> > AI does not mean ML

Hence the 'or' in my statement. Neither are present here.

<comment><USER33> >any device that perceives its environment and takes actions that maximize its chance of successfully achieving its goals.

This does exactly that.

<comment><USER32> Every program that has ever existed does this. So, you're saying that all programs that have ever existed, then, are all AI. You make no distinction whatsoever.

I would say that the more a program thinks on its own which actions to take to maximize its chances of success, the closer to AI it is.

If it's doing exactly what it's explicitly told, then it's not really intelligent, is it?

<comment><USER34> >>any device that perceives its environment and takes actions that maximize its chance of successfully achieving its goals.

>Every program that has ever existed does this.

No, not every program is self-tuning, nor do they all take inputs.</comment></comment></comment></comment></comment></comment>


How to Train the Aging Brain - <AUTHOR> http://www.nytimes.com/2010/01/03/education/edlife/03adult-t.html <comment><USER2> I'm in my 50s. I do some similar exercises: putting shoes on in reverse order, play a Wii sports game left handed instead of right handed, etc. Also, about 1/2 of my friends very much disagree with me on politics/economy (I have some very liberal and very conservative friends who, for example, don't like it when I slam, respectively, Obama or Bush). I spend a good 10+ hours a week learning new tech.

My Dad is a good example of the advantages of doing new things. He was a physicist (and a member of the National Academy of Science) and at 60 he became an oceanographer. Now, in his late 80s, he has a passion for computer animation and video editing. To say that he is still very sharp mentally is a great understatement.

BTW, one great thing about developing software is that you get to be a quasi- expert at many different application domains as you work on different projects.

</comment><comment><USER3> I listened to a panel recently discussing similarities and differences between human and machine learning. One thing I found interesting, was a human researcher who disputed the commonly held idea that computer memory is perfect and human memory much more faulty.

He pointed out that this comes from comparing human memory to simple RAM or disk access. Given an exact memory address, file path, etc. the computer always gives back exactly the right data. However, maybe Google is a better metaphor. You send in a query term or terms, and then evaluate whether what came back was really what you were looking for.

This highlights the importance of associations, indexing, and everything else that goes into using one piece of information to retrieve another.

Google doesn't always get it right, and there are lots of aspects of human memory that Google can't replicate (yet). But it's interesting that the article concludes with an acknowledgement that Google can remember for us much of the trivia we often forget.

<comment><USER4> You've missed one variation: I've spotted cases where Google "forgot" something.

Where Google had the information in part of its index and could retrieve it, but didn't have that same information in its more general searchable index.

Cases where you could get the data back from its residence (on Google's own servers), but where Google's indexes didn't offer up the data.

<comment><USER5> This is like when our brain remembers something but cannot recall it, unless reminded of something similar in either structural or superficial features.

Maybe Google (or other search engines) could improve its 'similar pages' functionality by emulating some of the ways brains recall things.

</comment></comment></comment><comment><USER6> The author suggests that you "bump up against people and ideas" that are different as a means to having a healthy brain. In my younger days we used to call it - keep an open mind and is good advice for young as well as older people. :)

In my case as I got older I noticed the following:

1) My capacity to absorb information has increased. I can read two/three books in a day (sort of semi-scanning it) and by the end of the day I would have absorbed the info although albeit not remember the nitty gritty. However, I would know where to look up the details.

2) I feel that my brain tends to _process_ new information, now - whereas in my younger days it accepted as a fact and just stored.

3) I was and I am still bad with names, but I think it is a trait of a lot of people that are into maths/science/engineering etc.

4) I have become sometimes too _logical_. I view this as negative and I am trying to work around it.

5) Creativity definitely goes down with age.

Overall I believe that my brain is now better - in middle age - than during my youth. I have made an effort to keep fresh in my mind things that interest me. Once a year I spend one-two weeks refreshing maths. I also code a lot and read a lot, even though I am into management and need not do any of these.

</comment><comment><USER7> do others notice the "symptoms" described in that article? as far as i can tell, i seem to be just as useless at names as i always was, and seem to be able to think just as much and as clearly as ever.

i do notice the physical side - i can't run as fast as i used to (and i am not timing myself, so it's not that one is measurable and the other not). also, my sight is really bugging me - having to hold things further and further away to read them. but thinking-wise i haven't picked up anything.

i'm 42 and write software.

<comment><USER8> Compared to my early 20s, I'm also better at remembering names and conversations, but worse at remembering insignificant things like what I wore the day before or whether or not I locked the front door. I'm also much better at seeing connections between things rather than the facts themselves, which I think is more valuable. I think I'm reworking the way my brain learns to focus on things I think are important.

For reference I'm 31 and write software.

</comment></comment><comment><USER9> "Educators say that, for adults, one way to nudge neurons in the right direction is to challenge the very assumptions they have worked so hard to accumulate while young. With a brain already full of well-connected pathways, adult learners should "jiggle their synapses a bit" by confronting thoughts that are contrary to their own, says Dr. Taylor, who is 66."

Socrates' mind will always be fresh.

</comment><comment><USER10> I'm 61 and my brain is probably a bit better than it was when I was younger. But I do a lot of math, programming and music, not to mention politics.

</comment><comment><USER11> The article doesn't in any way tell us _how_ to train the aging brain.

Perhaps I should be buying the book in April to find out.</comment>


Ask HN: Can someone solve this mystery for me about a saying at JFK's funeral? - <AUTHOR> I have been trying to figure out if this is a poem and if so, who wrote it.  In the video, https://www.youtube.com/watch?v=3KJQkn6zUvM, the saying starts from 1:40 - 3:46. It starts There was a sound of laughter and in a moment it was no more...
If it is not a poem, can someone tell me what that is about?  To add to my confusion, a poster in the comment section said "the ring was returned to her in Bethesda" Ok, so did something happen? <comment><USER2> I think that this is a poetic eulogy for JFK written by the person who delivered it (Mike Mansfield). I don't think it was intended to be a reference to a previously-published poem.

The wedding ring thing is a reference to something that Jacqueline Kennedy literally did (not a metaphor or a predetermined ritual).

<comment><AUTHOR> Interesting. Thank you. My next question is why was Great Britain's anthem played at the ceremony? Did it have to do with the colonization of America? Sorry, I born in the 80s and my attempt to get these answers didn't yield me any results and I figured I get an answer from here :).

<comment><USER3> "God Save The Queen" and "My Country 'Tis of Thee" share the same music (but have different lyrics).

<comment><AUTHOR> Got it. Thank you!!</comment></comment></comment></comment>


React native on windows with android sdk - <AUTHOR> http://davidanderson.io/2015/10/18/a-step-by-step-guide-to-react-native-on-windows/ <comment><USER2> Sounds good.

I looked into this mobile dev stuff a few times and it always felt a bit hard to get all this stuff up and running.

Then I heard about react-native was released for Android and was happy. But FB just supports OSX for development and I use Linux and Windows.</comment>


Stripe's 22-Year-Old Irish-Born Founder Is Just Getting Started - <AUTHOR> http://www.inc.com/matthew-wong/stripe-john-collison-irish-entrepreneur-tipperary-to-silicon-valley.html <comment><USER2> Patrick and his brother John are two of the smartest cookies on the planet that I know about. These guys will go very far, and I'll be cheering them on all the way. They are not only successful and smart, they're genuinely _nice_ , and that's a pretty rare combination.

<comment><USER3> +1 I've met John and spoken to Patrick on email. Both super nice dudes.

</comment></comment><comment><USER4> Very impressive achievement for his age, though there is of course also a lot of spin-doctoring involved[1]. Stripe seems to be heading into the right direction.

[1] The whole "millionaire at 17" bit decodes to getting a big stock-based exit for Auctomatic with modest cash. Said stock then dropping to pennies shortly thereafter (~40x drop in stock price). Add in the merger and $600k in financing and there probably wasn't left other than a bailout for the investors. <http://www.otcmarkets.com/stock/LIVC/chart>

<comment><USER2> So, if we limit the 'millionaire at 17' bit to 'those that made a non-cash exit for 6 figures and up' would that satisfy you?

To take cash or stock is a difficult decision for seasoned business people, I really can't fault a 17 year old for going that route and _through no fault of their own_ see the value of that stock evaporate a short while later.

I've known quite a few people that went bust during the .com debacle in exactly the same way and none of them was 17 or even close to it.

It's easy enough to identify your mistakes after the fact (heck, I've made _plenty_ , just this particular one I've managed to avoid), but the big trick is to predict them ahead of time.

How are you doing?

What company did you sell for any amount when you were 17?

And was that in stock or cash?

<comment><USER5> I didn't read the parent as saying 'not actually a millionaire because he's an idiot', you seem a little touchy here. It seems reasonable to ask for that clarification - if you make the assumption that both brothers came into control of millions of dollars worth of available assets, you might wonder what they were doing with the money, especially as related to their continuing business ventures. The additional information that they don't actually have it answers that question.

<comment><USER2> 'spindoctoring' indicates a conscious effort to increase the stature of the subject of the article, and is a word with a strong negative connotation.

The fact that they had an idea, built it and executed their vision successfully enough that another company bought them out are the bits that matter. That the buying party was significantly reduced in value after the acquisition is not their fault, and even if it had not it would have been stock (likely with all kinds of encumbrances) not cash.

Doing a stock deal is risky at best and can end very bad for the acquiree. Assets are not money, stock is not money, even so for a 17 year old that was an absolutely amazing track record.

I'm not clear on the details of that particular deal, and frankly I don't even care. All I know is that most people here would dream of doing a deal like that or even being in the position to make that particular mistake, and hindsight (the company acquiring tanking shortly thereafter) is 20/20.

<comment><USER6> > "The fact that they had an idea, built it and executed their vision > successfully enough that another company bought them out are the bits that > matter."

As far as I remember, it was a "buy the team, shut down the company" deal.

The very fact that people in this thread are mistakenly saying that eBay bought the company, shows how well the spindoctoring worked.

</comment></comment></comment></comment></comment><comment><USER7> Wow, this guy is amazing. Read his wikipedia page: <http://en.wikipedia.org/wiki/John_Collison>

<comment><USER8> I was born the same year as this guy . How do I reconcile myself to the fact that I may never achieve so much even in my entire life ? Is it a matter of lowering ones expectations ? If this is the kind of brilliance it takes to succeed in the start up world I'm quite discouraged.

<comment><USER9> Don't stress out over it.

I'm Patrick, John's brother.

I too constantly feel that I should be more successful, and I'm pretty sure the feeling doesn't go away -- no matter what's achieved.

I think looking at others can be a useful gut check: am I working as hard as I could? Am I as focused as I'd like to be? But given that there's so much randomness and circumstance there too, it's a bad _benchmark_ for anything.

(For what it's worth, the check I use personally is: "is there a difference between how those who know me best would describe me, and how I'd like to be?" Most of the time, I just try to fix those gaps.)

Good luck!

<comment><USER10> So, if you don't mind me asking, do speak about your (and your brother's) upbringing.

What was your childhood like? Did you parents teach you programming? Did you play with legos a lot?

Write as if you were giving advice to future-fathers.

<comment><USER11> Please, let's all stop this cult of parenting, and cult of personality. Let's assume that Patrick and John had played with legos, and that their parents taught them programming. What would that teach us? That we should teach our kids Programming and let them play with legos? Certainly not.

Much respect to John and Patrick, I hope that they continue to do impressive things and that a few years down the road they'll look at the things they did in their 20s as 'merely setting the stage' for whatever else they'll be doing then.

<comment><USER2> Yep. Cargo-cult parenting, that's got to be a new one. I'm quite surprised at how people will latch on to the parenting as something to imitate. I'm sure it can be a factor but you can't assume that you will get identical results by cloning the procedure. Nothing good can come of that.

</comment></comment></comment></comment></comment></comment><comment><USER12> What's also impressive is the choice of project: pg has written about this (think he calls it the schelp filter or something). Payments is one of the most difficult, red-tape entangled, regulation-choked domains to start a company in. Not to mention the extreme security requirements and general unsexiness of it all.

Think they've managed to do an awesome through all the hurdles - if I ever decide to follow their example and start a payments company in India it will simply be "Stripe-API compliant". That's pretty much all the marketing / features it will need.

</comment><comment><USER13> Loosely related with the article, do you need to give significant share to "locals" if you're starting a company in the US? For example, in Malaysia and Singapore (CMIIW), unless you put huge amount of money up front, foreigners are required to partner with locals and give >50% share to them. I.e. foreigners cannot have majority share if they start a "normal" company (not big).

<comment><USER14> No way what you're saying is true for both Singapore and Malaysia. Some shares need to be allocated to locals though if you IPO in the country.

<comment><USER13> [http://onlinebusinessmalaysia.com/starting-a- business/settin...](http://onlinebusinessmalaysia.com/starting-a- business/setting-up-a-business-in-malaysia-for-foreigners/)

and read the first comment (by Denis)

</comment></comment></comment><comment><USER15> It's interesting to see people put their studies on hold to pursue something they loved.

I don't quite understand why they moved to San Francisco; the article didn't really make that clear.

I'd love to have a cup of coffee with either of them though. Great people!

<comment><USER16> Patrick writes about this extensively here <http://patrickcollison.com/post/stripe-ireland>

</comment></comment><comment><USER17> Really amazing guy. Kinda makes me feel inadequate all of a sudden :(

<comment><USER2> I wouldn't worry about it, just try a little harder. In the long run it doesn't really matter what your situation is today, what matters more is how you allocate your future time and how you will deal with the opportunities that come your way.

The luck element is out of control for everybody, timing you only control so much, execution and attitude you control 100%.

</comment></comment><comment><USER18> This guy inspired me. I'm just reading about Stripe a while ago and I don't know the founder is just 22!

I'm 20, and I think I need to rush some things. I don't want to be late.

<comment><USER19> It sure would be a shame if you end up being a sluggard like Jeff Bezos who started Amazon at the ripe old age of 30. :)

</comment></comment><comment><USER20> The experience of reading young success stories is both exhilarating and depressing to me. On one hand it expands my vision of what is really possible at such young age, on the other I realize that I am at the point in my youth where people like Patrick and John have achieved so much. It shows a little ingenuity and complete persistence can make you go real far.

Kudos to both of them, and godspeed on their current endeavor.

</comment><comment><USER21> That's it. I'm doing a startup after med school.

...so what's the policy on using investment money to pay back loans?

<comment><USER2> > ...so what's the policy on using investment money to pay back loans?

It's a no-no unless you negotiate that up front. And likely you'll get a bunch of rejections as a result unless you can come up with a really good reason for that (I can think of a few).

<comment><USER21> I'm all ears, Jacques!

<comment><USER2> In your inbox. hth :)

</comment></comment></comment></comment><comment><USER22> For the hiring/visa issue, would a solution, say if two of their hires were from the EU, start a company in an EU country, employ them with said company, and then have the US company "contract" the EU company for their part of the work?

<comment><USER2> I've done the opposite: Launch a Canadian subsidiary from Europe, then employ myself at the subsidiary. That worked but it is a pretty roundabout way.

If you can qualify under some program that is less difficult then I would definitely not advise this route.

</comment></comment><comment><USER23> Amazing guy, inspiring and at the same time, depressing...

</comment><comment><USER24> Ok, stripe's wonderful, but... why is stripe wonderful?

It's a payment service provider. An expensive payment service provider. They have an API. It's nicely written - but a nicely written API doesn't make a product. They're available in the US and Canada. OK, but there's a whole planet out there.

So, yeah. What exactly is it that's so amazing about stripe?

I work in eCommerce, run and developed a little platform that does a few £bn a year through it, so know my PSPs, and fail to see the differentiation.

<comment><USER25> > It's nicely written - but a nicely written API doesn't make a product.

I believe you should revisit that assumption. Stripe is successful because of its API and UI. Likewise, Facebook and the iPhone largely succeeded because of their UI and API.

<comment><USER26> The Stripe API is really good...but it's not perfect. It still requires a huge amount of manual development that services like Recur.ly and Spreedly already implement.

Having implemented several Stripe sites, I found I preferred more of an automated recurring subscription management service, and then Stripe is just a gateway at that point.

That being said, I use Stripe extensively and love it.</comment></comment></comment>


Should have hired a tech co-founder - <AUTHOR> https://medium.com/on-startups/c00e3e2b2024

<comment><USER2> That he thinks of "hiring" a "co-founder" is perhaps telling.

ADDED: On the flip side, us techies shouldn't co-found a company unless we're willing to pitch in when " _[...] we found sales in other channels that required late nights of packaging (and lots of manly muscles)_ " (or, I'd add, womanly muscles, women have their place in this sort of work too). As I like to say, "You shouldn't be too proud to sweep a floor."

<comment><USER3> Fair point :)

I didn't co-found with a technical person. Would have had to bring someone on later, and then retroactively called them a co-founder (which I would have been fine with, titles are for ...). I think it's just about hiring a technical lead / peer early-on.

OH, and yeah, I don't have real muscles. One of my early teammates, a woman Liz who flew a rescue-vac helicopter in the Army, that's someone with muscles and heart.

Appreciate you taking the time to comment.

</comment></comment><comment><USER4> Why build an online store from scratch when it's obvious that's not where the value-add is? Use something like Shopify and focus on the business. Don't use a lack of technical expertise as the justification for failure. Keep moving.

</comment><comment><USER5> If he's looking to hire someone, it would help if he included the name of his company or link from his post.

I ended up finding it in small letters under his profile picture.

Also, saying "hiring a co-founder" is basically like saying "hiring a wife". You don't hire either one of those if you're looking for a partner. If you're not looking for a partner, you hire a contractor that will get the job done.

</comment><comment><USER6> hire and co-founder is a contradiction

</comment><comment><USER7> Well according to James Altucher he's wrong. You don't need a tech co-founder, just contract it out to the lowest bidder ;<).

#8 on [http://thoughtcatalog.com/2013/the-ultimate-cheat-sheet- for-...](http://thoughtcatalog.com/2013/the-ultimate-cheat-sheet-for-starting- and-running-a-business/)

</comment><comment><USER8> i still use powerpoint for that</comment>


Humans tend to use the same sounds for common objects and ideas in all languages - <AUTHOR> http://m.phys.org/news/2016-09-nose.html <comment><AUTHOR> Not that anyone's looking, but here's a strong critique of this methodological approach by a linguist(icist?):

[http://languagelog.ldc.upenn.edu/nll/?p=4685](http://languagelog.ldc.upenn.edu/nll/?p=4685)

</comment><comment><AUTHOR> Original title, 'A nose by any other name would sound the same, study finds', was uninformative, so the first paragraph provided the replacement.</comment>


Best practices of providing passwords to cronjob? - <AUTHOR>

A linux machine on my company's LAN is tasked with taking database snapshots daily, as tier-1 backup. Those are remote MySQL databases I don't have root access to. The machine has a cronjob running mysqldump, using password authentication to the mysql servers. Output goes into Git for efficient storage†.<p>What is a sensible way to store authentication credetials (the plaintext passwords) used by the cronjob scripts for database access?<p>† For reference, so far I have about 700 daily dumps, each daily dump amounts to some 100...350MB, git store size is about 125MB total after running git-gc. The dumps are about 5...50MB per database, as produced by mysqldump. <comment><USER2> Create a user to run this cronjob as. Store the credentials in a file owned by and readable only by this user.

</comment><comment><USER3> For this case use a /~.my.cnf file.</comment>


Xz format inadequate for long-term archiving - <AUTHOR> http://www.nongnu.org/lzip/xz_inadequate.html <comment><USER2> OK, I'll bite. This article is overblown in its criticisms and has some issues of its own.

1\. The article itself recommends that "a tool is supposed to do one thing and do it well". Well, xz is for compression, nothing else. If you want to check integrity, use a hashing tool such as sha256sum. If you want to recover from errors, generate parity files using par2 or zfec.

2\. The article claims xz was chosen by prominent open source projects due to hype. No, it was chosen because of its favorable size/speed tradeoffs.

3\. It's not clear what the author means by "long-term archiving". Archives professionals (as in, people who are actually employed by memory institutions) will tell you of many factors (all unmentioned here) that have a bearing on whether a file format (particularly a compressed one) is suitable for use in data preservation.

4\. The section on trailing data is particularly bizarre. By claiming that xz is "telling you what you can't do with your files", it seems that the author considers it perfectly reasonable to append arbitrary data to the end of a file and expect it to continue functioning. Is my normality detector off today or is this just a wacky thing to want to do?

5\. The article is written by the author of lzip (which it compares favorably to xz), but does not disclose this. Admittedly it is hosted on the lzip site, but overall the article comes across as an opinionated hit-piece designed to sow doubt in a competitor.

<comment><USER3> Regarding #4: Padding out a file is popular because of tape drives. You'll typically write the archive to the an appropriately sized tape raw, without a filesystem (which is just another format you have to maintain a parser for). So because the file will be smaller than the tape, there will be garbage at the end of the tape. Because we wrote the file to the tape directly, there is no way of knowing where it ends, and a tool reading the file will need to just deal with the garbage data.

<comment><USER4> Garbage data is not a problem since the length is known.

<comment><USER5> Hum, no. When you tar a set of files directly into a tape, you don't know the resulting tar size beforehand. Even less if you compress the result.

<comment><USER6> I would think you could just write the size at the end of the tape?

<comment><USER7> When you're reading the data later, how would you know where to find "the end" if you don't already know the length?

<comment><USER6> You don't know the end of the _data_ , but presumably(?) you know the end of the _tape_.

<comment><USER5> We are talking past each other here...

Making a backup with tar is done by typing something like that on bash:

> tar -c - dir1 dir2 dir3 > /dev/tape

That will (hopefully, I doubt I got the tar switches right) backup those dirs into the tape (that will actually have a weird name, not '/dev/tape').

Now, in practice Linux doesn't always know the size of a tape you inserted. But this is not the issue, if you accept the seeks needed for that, you'd better write at the beginning anyway.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> When I use xz for archival purposes I always use par2[1] to provide redundancy and recoverability in case of errors.

When I burn data (including xz archives) on to DVD for archival storage, I use dvdisaster[2] for the same purpose.

I've tested both by damaging archives and scratching DVDs, and these tools work great for recovery. The amount of redundancy (with a tradeoff for space) is also tuneable for both.

[1] - [https://github.com/BlackIkeEagle/par2cmdline](https://github.com/BlackIkeEagle/par2cmdline)

[2] - [http://dvdisaster.net/](http://dvdisaster.net/)

<comment><USER9> How much parity data (%) do you have?

What's the oldest disc you've tested?

What do you think about PAR3?

<comment><USER8> I'm afraid my archiving and testing are not very systematic. I don't usually go back and test my burnt DVDs, except when I need to get data off of them, which is not very often. But so far I haven't run in to issues, and have been pretty lucky with the DVDs I've used. I don't think I can recall a situation where dvdisaster actually had to recover from errors on any old DVD. Of course, it's a good idea to transfer valuable data from old DVDs to new ones every now and then, as they won't last forever.

I just tried a DVD from 2013 (Verbatim DVD-R, 16x, 4.7 GB) and it read fine, without any errors, and dvdisaster found that the checksums on it matched.

I usually try to use at least 20% redundancy, but will settle for less if the data's not very important. If the data's really important I'll max out the amount of redundancy (up to dvdisaster's limit, which I don't remember off- hand). Sometimes I'll even burn an extra DVD with the same data, both with dvdisaster error correction on them.

As for par3, I only heard about it for the first time today in this thread. So I have no opinions on it except to say that if it's an improvement over par2, I'm all for it. Backwards compatibility with par2 also would be nice.

<comment><USER9> Thanks for the info

Shame about the status of the dvdisaster project - as of 2015 the Mac OS X and Windows ports are discontinued.

<comment><USER8> That's just for the new versions. You should still be able to get the old versions and those should still work just fine.

</comment></comment></comment></comment></comment><comment><USER10> The article's right that you probably should not use xz (or even any similar formats) for archival purposes.

However what's totally awesome about xz as a container format is seekable random access to compressed files. I use it to store infrequently used disk images, which I can boot up without even decompressing them. ([https://rwmj.wordpress.com/2013/06/24/xz-plugin-for- nbdkit/](https://rwmj.wordpress.com/2013/06/24/xz-plugin-for-nbdkit/))

<comment><USER11> I agree completely, in fact it seems odd that the article is really complaining about the format being more complicated than bzip2 or gzip, when the comparison is not really apples-to-apples. Comparing it with zip would seem more sensible to me.

A compressed container format that allows quick access to individual files is very useful and actually improves data security - corruption in one part of the data will be far less likely to ruin the entire collection of files, whereas corruption in a compressed tar file may lead to the loss of everything (I know recovery tools exist, but they cannot prevent one file in the container being dependent upon data from another file.)

<comment><USER12> You are confused. xz does not provide the ability to find individual files inside of the format: it is not at all comparable to zip files, and like the other formats mentioned it compresses one file. The "seekable" property is that it lets you somewhat efficiently decompress arbitrary byte ranges inside of the file, which is why a compressed disk image (as used by your parent commenter) benefits from this property but the industry-standard usage of compressing a tar file (which is a file format which inherently makes it impossible to find individual files without reading the whole thing) totally throws away this benefit.

<comment><USER13> A tar file doesn't have a central directory like a zip, so you do have to search all the file headers. However, each file header contains the length of the file it describes, which lets you seek past the content of any files you don't care about if the tar isn't stored in a way that would prevent seeking.

<comment><USER14> That would work if your tar was uncompressed. The lengths in the tar are meaningless in a compressed file.

<comment><USER15> That's not true, xz allows efficient decompression of arbitrary byte ranges inside the file.

<comment><USER14> Does it let you seek by a decompressed byte count, or or does it let you decode arbitrary compressed byte ranges?

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> _Unsafe: 1 Likely to cause severe data loss even in case of the smallest corruption (a single bit flip). 2 Likely to produce false negatives._

It does seem like xz is somewhat overengineered, but I don't think that's a characteristic unique to it; any other algorithm with similar compression performance will yield similar behaviour on corrupted data, since the whole point and why compression works is to remove redundancy. I say use something like Reed-Solomon on the _compressed_ data, thus introducing a little redundancy, if you really want error correction.

<comment><USER17> I haven't read the whole article yet, but gzip and bzip2 recover fairly well from errors. As they are divided into blocks, flipping a bit will make you lose, at most, one block. This is not related to error correction though, but a way of mitigating losses.

>> Just one bit flip in the msb of any byte causes the remaining records to be read incorrectly. It also causes the size of the index to be calculated incorrectly, losing the position of the CRC32 and the stream footer.

This sounds severe enough to me.

<comment><USER16> _As they are divided into blocks, flipping a bit will make you lose, at most, one block._

What happens if bits in the block header are corrupted? If it can't find the start of the next block, the same thing will happen.

Also, breaking up the data into blocks will decrease compression, since each block starts with a fresh state. It is ultimately a tradeoff between compression ratio and error resistance.

<comment><USER17> > If it can't find the start of the next block, the same thing will happen.

This has been addressed in the article. "Bzip2 is affected by this defect to a lesser extent; it contains two unprotected length fields in each block header. Gzip may be considered free from this defect because its only top-level unprotected length field (XLEN) can be validated using the LEN fields in the extra subfields. Lzip is free from this defect."

> Also, breaking up the data into blocks will decrease compression

This has been tested very thoroughly. Larger block sizes give rapidly diminishing marginal returns (man bzip2). Now, the largest you can go with bzip2 is 900KB.

</comment></comment></comment></comment><comment><USER18> Of course, any archival strategy that leaves you vulnerable to the problems discussed in the article is defective. You ought to be backing up to multiple physically distant locations if you're really concerned about archival.

The argument makes more sense for the casual user who isn't paying for a professional backup service. But how many of those are using xz? They're more likely to be using zip files; and they'll be in a better place for it.

The zip (concatenation of compressed streams) vs tar.gz (compression of concatenated streams) distinction is useful in an archival context, if one is genuinely worried about bitrot and the risk of needing to recover partial data where the container is damaged. A concatenation of compressed streams will have worse compression especially for lots of small files, but it is far easier to recover from an error.

<comment><USER19> Another option, should you need better compression than zip with the same damage tolerance, is xz files in an uncompressed tar.

<comment><USER20> How does TAR mitigate the issues mentioned in the paper? Sincerely curious, my knowledge is limited. AFAICS, XZ can still "corrupt" the TAR stream and you'll need quite a bit of extra error correction to recover from that.

<comment><USER21> OP means xz all individual files, then tar them without compression.

<comment><USER22> Not as silly a suggestion as it sounds

</comment></comment></comment></comment></comment><comment><USER23> All of the arguments here seem to assume corruption (even extensibility is a form of it), and to treat it as a thing that can be fixed by the decompressor. It seems xz isn't ideal in that case, but none of the others are great either. As mentioned elsewhere in this thread, if integrity is your primary concern you should use PAR or some other error-correction mechanism. If you just need a binary integrity indicator you should have separate hashes published somewhere.

xz wasn't chosen for its archival integrity AFAIK, it was chosen for its size. Package distribution ought to spend as much resource as practical to reduce bytes over the wire. Size is why bzip2 "won" over gz despite being many times slower and requiring much more RAM. lrzip would be my first choice for maximum compression, but its downstream resource requirements are far too high vs any of the others, so from my experience xz would be the answer anyway.

<comment><USER12> > xz wasn't chosen for its archival integrity AFAIK, it was chosen for its > size.

No: that's why the LZMA compression algorithm is being used. The switch from the original LZMA container format to the "improved" xz container format had nothing to do with size, as the old container generated slightly smaller files in addition to not having this combination of negative properties.

<comment><USER24> I remember the hype around LZMA2 and xz being that, because it uses blocks, you can do the compression and decompression on multiple threads. LZMA was generally considered too slow to use for regular usage (only for archival, basically) and multicore was the new way to scale so this was perfect.

</comment></comment></comment><comment><USER25> The time for complaining about xz has well and truly passed. One might infer that the problems with xz are related to the attitude of other developers...

But I dogress. When you create archival packups you use must use error correcting systems. Par is a good place to start. [https://multipar.eu/](https://multipar.eu/) [https://github.com/Parchive/par2cmdline](https://github.com/Parchive/par2cmdline)

<comment><USER26> While I agree that you should use PAR-like error correction systems when doing archival, one of the points of the article is that xz has poor error detection and recovery, compared to any of the other formats available.

If it offered none, and explicitly stated that, it would be one thing, but it offers some that functions quite poorly in practice, which is rather another.

<comment><USER25> It's only a problem if you are relying in it to detect and correct errors. I've got SHA checksums and FEC and ZFS and cascading backups for that, which are deliberately not relying on one code provider not having critical bugs. Also, I may have crypto, and I need error detection and FEC on the outside of that. So it seems like a storm in a teacup really.

I think there is scope in xz to embed some FEC in the archive as a backwards compatible extension. Not such if the decoding scheme could be changed to reduce error cascades etc.

</comment></comment></comment><comment><USER27> > _This article started with a series of posts to the debian-devel mailing > list [Debian], where it became clear that nobody had analyzed xz in any > depth before adopting it in the Debian package format._

Debian source packages are cryptographically signed. Debian archives are also cryptographically signed. There's no error- _correction_ , but you don't want that. You just want to verify integrity every time you make a copy, and re- copy if it didn't copy right. And all the tools do that.

I remember this discussion on debian-devel, and there were a lot of people pointing out that the author's guesses at Debian's threat model had little to do with Debian's actual threat model, at which point the author became frustrated.

<comment><USER12> The Debian file format also doesn't take advantage of any supposed benefit of xz over lzma, and so is simply taking in the cost of xz's larger file size for what I consider to be "absolutely no good reason" (and as a major downstream of dpkg I pointed this out to its author a month or two ago when I re-asserted non-deprecated status for .lzma Debian packages as now one of only two noticeable changes I maintain to dpkg).

</comment></comment><comment><USER28> I very strongly disagree with the author's complaint that _" Xz is unreasonably extensible"_. The history of computers is _littered_ by numbers and numbers of restrictive design choices that ended up biting us in the ass later. Let's design FAT12. Oops a 32MB file size limit is no longer sufficient? Let's make FAT16, err I mean FAT32, err no really NTFS... How about 7-bit ASCII, err 8-bit ISO-8859, err I mean 16-bit Unicode, err no I really mean 32-bit Unicode, now that should be sufficient, right?

So it was the right choice for the Xz format to use variable-length integer encoding. Not all integer fields will need to represent values up to 2^63, but it doesn't matter.

<comment> TD-Linux I don't think the variable-length encoding itself is the author's concern, it's adding additional filters later without an overall version number. Unlike long file names in FAT32, adding additional filters is not backwards compatible. With a version number, it's super clear what can decode a file. Without, your xz file is only decodeable if your decoder implements the same set of filters as the encoder, rather than the much simpler approach of gzip where any gzip decoder can decode any gzip file.

</comment></comment><comment><USER29> That's certainly an interesting read but if I really care about something I'll usually generate PAR files. At that point, does it really matter what archiver I'm using at the time or should I still be worried?

[https://github.com/Parchive/par2cmdline](https://github.com/Parchive/par2cmdline)

</comment><comment><USER30> People who professionally care about long term archival usually don't care about heavy compression, as storage costs are always dwarfed by data governance and other costs.

Individuals may care about space more because the storage or medium is expensive for them. Even then, bulk data like photos and video doesn't compress well, so this argument is still pointless.

</comment><comment><USER31> Does anyone know zpaq compares? Lrzip [0] shows it as having desirable archival performance.

[0] [http://ck.kolivas.org/apps/lrzip/README.benchmarks](http://ck.kolivas.org/apps/lrzip/README.benchmarks)

<comment><USER32> ZPAQ is a defined standard format which embedds the decompression algorithm for each block as bytecode into the archive. One can define a transformation (eg. LZ77 or color transformations of a picture) and compress this data through context mixing and arithmetic coding. It uses checksums but I can't judge rightnow whether there is some issue implied concerning bitflips.

<comment><USER16> _ZPAQ is a defined standard format which embedds the decompression algorithm for each block as bytecode into the archive._

Is that a Turing-complete bytecode? If so, I envision some interesting applications with regard to procedurally-generated content...

<comment><USER32> Yes, there are two examples for pi here: [http://mattmahoney.net/dc/zpaqutil.html](http://mattmahoney.net/dc/zpaqutil.html) and one where the input does not exactly have to be pi, but can contain it: [https://github.com/pothos/zpaqlpy/blob/master/test/mixedpi2....](https://github.com/pothos/zpaqlpy/blob/master/test/mixedpi2.cfg)

But of course for real world use cases one would choose a general compression algorithm or write a specific one for a certain type of data you want to handle (because it will perform better than a general algorithm).

</comment></comment></comment></comment><comment><USER33> Is there any actionable advice here for a Windows user? I mean let's say one is using 7zip which defaults to .7z format. Does that correspond to any of the formats discussed in the article? Would it be better to use a different format or a different program?

<comment><USER34> It uses lzma/lzma2

</comment></comment><comment><USER35> _" the right way of implementing binary filters is to write a preprocessor that applies the filter to the data before feeding them to the compressor. (See for example mince)."_

So, what does _mince_ do? [https://github.com/Kingsford- Group/mince/blob/master/README....](https://github.com/Kingsford- Group/mince/blob/master/README.md) says:

 _" Mince is a technique for encoding collections of short reads."_

That doesn't tell me much.

Also, [http://bioinformatics.oxfordjournals.org/content/early/2015/...](http://bioinformatics.oxfordjournals.org/content/early/2015/05/25/bioinformatics.btv248):

 _" We present a novel technique to boost the compression of sequencing that is based on the concept of bucketing similar reads so that they appear nearby in the file"_

I'm still not sure I understand that fully, but guesstimate that it shuffles file content in such a way that it compresses so much better that it more than offsets the space needed to store the information on how to deshuffle the decompressed data. Is that correct?

Or does it require you to specify the parts and discards the reshuffling information, assuming you aren't interested in the order?

<comment><USER13> I think the latter. According to the decompression instructions in README.md, "The reads will NOT be in the same order as in the original file".

It sounds like it's meant results of DNA sequencing processes that produce sequences for random small pieces of the molecule.

</comment></comment><comment><USER36> > everybody else will blindly use whatever formats we choose

I'm a developer and I was LITERALLY in the process of backing up my iPhoto library (200GB) using Xz just now.

 _welp_

</comment><comment><USER37> [https://rzip.samba.org/](https://rzip.samba.org/) is pretty cool

<comment><USER38> I love rzip but it is important to note that it is not a stream compressor. So it is unsuitable for most of the use cases of LZMA2 which can compress data on the fly or have data appended on the end of a file at a later date.

So rzip is probably _excellent_ for archival situations (not counting any flaws the algorithm may have) but not so great for things like compressed tarballs (which are meant to be appendable).

</comment></comment><comment><USER39> Here's a description of the format [http://tukaani.org/xz/format.html](http://tukaani.org/xz/format.html)

</comment><comment><USER40> > The only reliable way of knowing if a given version of a xz decompressor can > decompress a given file is by trial and error. The 'file' utility does not > provide any help:

      $ file COPYING.*
      COPYING.lz: lzip compressed data, version: 1
      COPYING.xz: XZ compressed data

To me, this indicates a lack of data in the magic database used by file, more than something inherently bad with xz.

</comment><comment><USER41> I just put files in tars because everything is already compressed. Really, 99% of formats already have their own compression - you might get a couple % by recompressing them. Maybe a few text files that I have are not compressed but I can probably live with them taking up space.

<comment><USER42> Tar is not a compressed format.

This is why it's usually paired with gzip or xz.

<comment><USER41> I know it's not a compression format. My point is most formats that you put in tars are already compressed! Jpgs - compressed, RAWs - already compressed, any text format that isn't a plain-text file - already compressed. Compressing compressed formats is hardly worth it.

</comment></comment></comment><comment><USER43> I just use ZIP, that way I can still open it in 10 years.

</comment><comment><USER44> Not really related to the article, but would you look at that web page. This is what all of them should look like! Nothing fancy, just good content, 64.91KB in total.

<comment><USER45> And yet I can't read it on my phone without scrolling side to side.

<comment><USER46> That's because your browser sucks. Try Opera Mobile or something similar. Good browsers can reflow text to fit whatever screen size they display at. This website has zero CSS related to layout, so it is your browser's duty to render it nicely.

It boggles my mind why reflow is not one of the most important and most highly regarded features of any mobile browser.

<comment><USER47> The problem is quickly solved on Firefox thanks to its "Fit text to width" addon [1].

>it is your browser's duty to render it nicely

I think browsers should have the ultimate say on how to display websites, according to the user's preferences (think of text size and colors). Sadly, with websites gradually transforming into "web apps", users are losing control.

[1]: [https://addons.mozilla.org/En-us/firefox/addon/fit-text- to-w...](https://addons.mozilla.org/En-us/firefox/addon/fit-text-to-width/)

<comment><USER48> Thanks for pointing to that add-on. Works nicely.

</comment></comment></comment></comment></comment><comment><USER49> The only archival formats that are known to work over the long term are stone tablets, cave paintings and parchment.</comment>


52 percent of all money transfers in Kenya now done through Cell Phones - <AUTHOR> http://mobilemoneyafrica.com/archives/877

<comment><USER2> A question that everyone saying "this is so cool, why don't they do that here" should be asking is why so many people find this option necessary? The core reason is that the banks in Kenya suck. Period. (Okay, I was only there for two weeks but three trips to banks in that time period were more than I would wish on just about anyone...) They make US cable companies and telcos look like paragons of good service and low friction transactions.

In a country where there are not ATMs on every corner, credit card swipers in even the most insignificant bodega, and where you stand in line for an hour to get the cash you will need for a week or month's worth of purchases any system that reduces transaction friction (especially for small-scale purchases) is going to be a win. In places where the economic transaction infrastructure has already pushed down the cost of doing business the appeal of such a system becomes one of convenience rather than necessity.

</comment><comment><USER3> I used prepaid sims from MTN and SafariCom when I visited Kenya and east Africa this summer. 50 cent activation fee and $5.00 for all the minutes I needed (including to the US) for 3 weeks on a network that seemed as reliable as my at&t service. Humiliates American carriers in terms of value.

People from literally all walks of life use cell phones like this. From the Masai herdsmen in Tanzania to the dirt dwelling inhabitants of the Kibera slum in Nairobi. Here's a mobile shop in the heart of that slum: [http://www.flickr.com/photos/petermarks/4017875315/in/set-72...](http://www.flickr.com/photos/petermarks/4017875315/in/set-72157622326180485/)

</comment><comment><USER4> I suspect you can get away with things like these in Kenya because the state is weak and cannot enforce regulation in the banking sphere, i.e. demand banking licenses and proper accounting from phone companies.

Allowing for easy money transfer between cell phones leaves less control for the state and opens up opportunities for financing illegal activities and money laundering. From egoistical or anarchistic point of view it would be cool, but one can clearly see why it isn't allowed in many other countries.

In Russia banking system also sucks (though not so badly) and usage of banking services by the general population is low. So is quite widespread to pay small amounts, like for paid web services, with SMS, or to repay small personal debts by topping person's cell phone (prepaid system is prevalent). But phone to phone transfers are not allowed. And if you wish to receive payment for your online game via SMS, operators take commission of 30% to 50%. Is it that bad in other countries as well?

<comment><USER5> Overly strict regulators are actually one of the main reasons that banks in developing countries can be such a PITA.

Most of these countries in Africa with mobile payment providers have spent a lot of time with banking regulators getting these systems approved and they have received a lot of praise by people in the payment industry for doing so.

You idea that easy money transfer allows less control for the state seems to me to be misplaced. This fear of the money laundering is a huge problem in the US and Europe and is stifling innovation.

Most people in Africa work in the informal sector, so yes by OECD standards just sending money they illegally made selling Yam at the market back home would in theory be money laundering.

However there is pretty good anecdotal evidence that M-Pesa in Kenya is really helping develop the economy from the bottom up.

</comment></comment><comment><USER6> Maybe this will finally shame US banks into removing fees for wire transfers...

<comment><USER7> What parallel-dimension US are you living in? In mine, banks just see stuff like this as an opportunity to collect _more_ fees!

<comment><USER6> But...but...I come from a country where wire transfers are free. Surely it's possible here too? Please? Why am I still writing a check for my rent?</comment></comment></comment>


Meditation on Hacker News: What are you guys experience with meditation? - <AUTHOR>

<comment><USER2> I attended a 10-day Vipassana course (<http://www.dhamma.org/>). In my opinion, this is the easiest type of meditation to start with. There are sites for these 10-day course pretty much everywhere around the world. The course runs on a donation basis: you are fed and housed for free during the duration of the course and at the end you choose whether to donate or not.

I met a lot of very nice people in my course. Some were new (like myself) but some were experienced veterans (a couple of guys had been practicing for over 15 years) and everyone seemed so happy. The course is very difficult, both physically (you need to sit on the floor for at least 9 hours a day, and believe me you will only realize just how bad/painful this can be once you do it) and mentally (you are not allowed to talk at all during the duration of the course). But it was all more than worth it at the end.

During the actual course I became more at peace with myself and gained some important insights on my personality and some of the roots of my misery. There's a lot of philosophy behind the actual technique but the basic idea is that you are taught to be indifferent to sub-conscious sensations of 'good' and 'bad'. By no reacting to 'good' sensations, you limit your craving and hence your misery. Similarly, if you do not react to 'bad' sensations you can keep your cool, not get distracted and just be happier.

I am definitely very happy I was exposed to this technique at a young stage of my life. Even though I haven't been practicing since I took the course I am determined to make Vipassana a part of my every day life.

<comment><USER3> Ditto. I've actually done the 10-day course a couple of times (highly recommended btw). One thing that amazes me every time is how busy/noisy urban life seems afterwards. It generally takes me a couple of days to readjust.

<comment><USER2> Haha - oh absolutely! The first day I was out of the course I just could not stop smiling at people on the street. Have you been practicing regularly? Where did you do the course? I did mine in France - a little south of Paris, great center!

<comment><USER3> My girlfriend commented that everything I said or did seemed much more deliberate on the days just after I returned. Guess that fades as well ;)

Unfortunately I've been unable to keep up the practice for more than a couple of weeks after I get back from a course. I'm not even sure why ... I really enjoy it when I do meditate daily. Something to work on.

I really should do another course (<http://www.rasmi.dhamma.org/>) to see if I can get back into it. When I do go back I'll probably follow it up with a 10-day stint of kitchen duties as well; about time I gave back.

</comment></comment></comment></comment><comment><USER4> A couple of years ago, I was able to sit still and focus on my breathing, for upto 30 minutes at a stretch, and those days I felt more at peace with myself. It was like internal 'world peace' and harmony. Of late I haven't been able to sit still for longer than 15 minutes even when I try, but that may have a lot to do with the fact that I am in college, and constantly juggling n number of things.

These are some previous discussions that you might find useful:

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

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

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

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

</comment><comment><USER5> I've been meditating with different levels of practice for the last 7 years. I also attended a 10-day vipassana course (taught by s.n. goenka (<http://dhamma.org>). Recently, I've been sitting at least 30-60 minutes per day.

For the last two months, I've been sitting while wearing the NeuroSky Mindset and using it to record my brainwaves as I meditate!

The Mindset is a $200 BCI (brain-computer interface) that looks like a pair of headphones. It measures the electrical activity of your brain via 4 "dry sensors" and sends the raw 8-channel feed of your electrical brainwave activity (alpha, beta, gamma, delta, etc) wirelessly via Bluetooth to your computer. Additionally, the chip in the headset has algorithms that interpret the raw data stream and give readings of "attention" and "meditation."

The manufacturer has put together a pretty decently documented developer center with several different APIs you can use to create games and applications that make use of the headset.

The fancy headset costs $200: <http://store.neurosky.com/products/mindset>

Here's a link to the developer center: <http://developer.neurosky.com/>

I haven't written any apps yet, but I've been using this app to record and chart the brainwaves in my sessions over time: "[http://store.neurosky.com/collections/alchemy/products/medit...](http://store.neurosky.com/collections/alchemy/products/meditation- journal)

After I get a couple more weeks data recorded, I plan on writing up a longer post!

If anyone in the NYC area would like to come over and have their brainwaves recorded and try it out, give a shout. I'm in the East Village and I'd love to compare my brainwaves to other people interested in meditating and seeing some sort of "tangible" measure of "progress."

</comment><comment><USER6> Compares favorably to modafinil. Well, in my case modafinil tends to give headaches, so it loses by default, but comparing 50 mg to 10 minutes of meditation:

\- meditation works faster - 10 minutes compared to about 1 hour for modafinil

\- meditation tends to be shorter term (but it varies) - 2-4 hours vs ~6

\- modafinil has several side effects (though your mileage may vary)

\- meditation kills most of my social instincts. Unless I focus on interaction, I tend to be really quiet and slightly non-responsive. But if I do try to focus on being social, it's ok.

</comment><comment><USER7> I'm curious how the MagicRuby group is doing.

</comment><comment><USER8> Do hackers meditate? And if they do, what it is having to do to the condition of "hacker"? Maybe ask "do taxi drivers, meditate?" or "do traffic police meditate?"

</comment><comment><USER9> When I was between the ages 16 until I was about 22, I would meditate for at least 1 hour per day - at night prior to going to bed.

I would just focus on my breathing. If I had anything in my mind - I would choose a mono syllabic word to repeat over and over in my head, once with each inhalation and once with each exhalation.

I would breath slow and deep, typically, however - when I was focused on healing myself after strenuous workouts - I would breath more rapidly.

I was doing bujinkan six days a week for at least 4 hours per day.

I have recently been trying to regain that level of discipline in my meditation as the correlation between my awareness, my mental fitness and ability to focus while I was meditating then was amazing.

I am now 36 - and I regret very deeply not continuing to have this as my daily routine for the last decade.</comment>


Orion Nebula: The Hubble View (Image) - <AUTHOR> http://antwrp.gsfc.nasa.gov/apod/ap090222.html

<comment><USER2> I love the human ability to perceive objects and faces in objects.

The right side of the image looks like a giant hedgehog head or something. Immediately left of top-center is a human face, with mustache and beard. IIRC there's supposedly a dragon in this, it's like 1/4 in from the left and bottom, but I never thought it looked like a dragon. There's also lots of other cool things in there like skulls and crap, but honestly they're all so small it's really just perception, where as the face and hedgehog encompass areas as big as the local bubble.</comment>


Oracle Outlines Java ME Roadmap - <AUTHOR> http://www.theregister.co.uk/2010/09/26/mobile_java_oracle/

<comment><USER2> I certainly hope that jython is also included in their efforts towards opening the jvm to non-java languages.</comment>


Ask HN: Is Twilio too expensive for you? - <AUTHOR> Not sure if everyone is in the same boat, I made an app and one part of it allows you to invite your friends via text invite.
My users send about ~500 texts (each text is about 3 segments) and I am spending about $10 every 2 days. Note that I'm a sole developer and not a major company so dont have the funds to keep this up.
Is everyone else sort of in the same boat or have they been able to find some hacks that people are willing to share?
EDIT: Also if anyone knows any developer free offers, etc. that don't need pre-approved phone numbers for Twilio. <comment><USER2> I'm with Plivo, got a cheaper deal with them. Great dev team there too.

<comment><AUTHOR> That works, will check it out, much thanks!

</comment></comment><comment><USER3> Why don't you use whatsapp instead of text messages ?

<comment><AUTHOR> Will investigate, never tried it out, is there an automated part available? I always thought whatsapp API wasnt public.</comment></comment>


Graph Representations for Higher-Order Logic and Theorem Proving (2019) - <AUTHOR> https://arxiv.org/abs/1905.10006 <comment><USER2> ONNX (and maybe RIF) are worth mentioning.

ONNX: [https://onnx.ai/](https://onnx.ai/) :

> _ONNX is an open format built to represent machine learning models. ONNX > defines a common set of operators - the building blocks of machine learning > and deep learning models - and a common file format to enable AI developers > to use models with a variety of frameworks, tools, runtimes, and compilers_

RIF (~FOL): [https://en.wikipedia.org/wiki/Rule_Interchange_Format](https://en.wikipedia.org/wiki/Rule_Interchange_Format)

Datalog (not Turing-complete): [https://en.wikipedia.org/wiki/Datalog](https://en.wikipedia.org/wiki/Datalog)

</comment><comment><USER2> HOList Benchmark: [https://sites.google.com/view/holist/home](https://sites.google.com/view/holist/home)

"HOList: An Environment for Machine Learning of Higher-Order Theorem Proving" (2019) [https://arxiv.org/abs/1904.03241](https://arxiv.org/abs/1904.03241)

> Abstract: _We present an environment, benchmark, and deep learning driven > automated theorem prover for higher-order logic. Higher-order interactive > theorem provers enable the formalization of arbitrary mathematical theories > and thereby present an interesting, open-ended challenge for deep learning. > We provide an open-source framework based on the HOL Light theorem prover > that can be used as a reinforcement learning environment. HOL Light comes > with a broad coverage of basic mathematical theorems on calculus and the > formal proof of the Kepler conjecture, from which we derive a challenging > benchmark for automated reasoning. We also present a deep reinforcement > learning driven automated theorem prover, DeepHOL, with strong initial > results on this benchmark._

</comment><comment><USER3> I wonder why they don't mention any work based on transformer architectures? The recent work on solving differential equations based on expressions in reverse polish notation seemed like a reasonable idea to apply to theorem proving as well.

Really cool work though!

<comment><USER4> Solving differential equations symbolically[^1] is a classic pattern matching problem though. It takes a lot of practice recognising which equations can be solved with which method/heuristic, but in the end, the available heuristics are somewhat limited in number and so it's not unreasonable that an ML model would perform well here. Notice that you will still need to actually check your result in some way or the other, because ML models can generate false positives and you really don't want that in maths; so it's not that you're _replacing_ rule-based systems, you're just augmenting them with other approaches (and of course, verifying the solution to a differential equation is basically a solved problem in symbolic analysis, since taking derivatives is a simple rule-based procedure[^2]).

I think theorem proving is much different. The space of possible heuristics you may apply to a proof is basically infinite. It can take a tremendous amount of creativity and intuition to come up with a complicated and novel proof. While I can see ML models being of use for simpler proofs or lemmas within bigger proofs (such as simple epsilon-delta proofs etc.), I have a hard time imagining that they will really be able to do real proofs anytime soon.

[^1]: I emphasise "symbolically" because it is my understanding that outside of simple situations and university lectures, most people don't bother with that, instead solving differential equations numerically.

[^2] There are some subtleties around the fact that, afaik, deciding whether two expressions are equal is undecidable in the general case because at some point you will have to compare e.g. coefficients and the equality of real numbers is undecidable. In practice, you will consider two numbers to be equal if their difference is below a certain threshold, which could in theory also yield false positives, but I find it unlikely that this would occur in practice in the situation of solving an equation.

<comment><USER5> I think they can use transformer in the same way for proof path generation: do pattern matching for complex logical statements to find those where specific rule can be applied, similarly as it has be done in differential equations paper.

<comment><USER4> How does that help and/or address any of what I wrote?

You can generate possible transformations from one proposition to another one, yes. But the space of possible transformations is infinite, how does the system know which ones to try? Moreover, even if you try some local transformation, how do you know that you have made progress?

A system like that could probably perform well on typical undergraduate proofs: epsilon-delta, proof that such and such a thing is a norm, etc., but it's gonna have a hard time with more difficult problems.

</comment></comment></comment></comment><comment><USER6> It looks like Graph NNs are going places.</comment>


Show HN: Card Camera – SDK for scanning credit cards into your mobile app - <AUTHOR> https://cardcamera.com/ <comment><USER3> Not sure if this is meant for Show HN. I think ShowHN requires a working product and not a "coming soon" page.

<comment><AUTHOR> Gotcha, didn't realize. We're several weeks away from fully working product (tried to be transparent on the page about timing), but have figured out the hardest part (generic OCR algo to read the numbers). Was hoping to get some feedback on the direction / interest level in advance of full completion, but this may not be the right forum.

<comment><USER3> FWIW, I think it's a great idea :) Just post here again when you have something people can try out and give you feedback.

<comment><AUTHOR> Thanks, and will do!

</comment></comment></comment></comment><comment><AUTHOR> Hey HN, I loved the experience of card scan products, but found they don't work well with more recent card designs. We're re-implementing the OCR algorithms from the ground up to work on a much broader range of card types, and also doing some checks to make sure the cards are real (which will help a lot with fraud).

Would love to answer any questions and hear thoughts!

<comment><USER4> > Would love to answer any questions and hear thoughts!

do you have anything to show? right now it looks like an advertisement - <USER2> love to see an sdk, or link to the source, or something more than an email capture page.

<comment><AUTHOR> Gotcha.

Unfortunately what we have isn't really sharable yet, but we're planning to update as soon as it is - but I get this isn't that helpful when you want to play around with it. We figured out the hard part (OCR algo is pulling the card info) and were hoping to get some feedback on the direction / interest level / use case before completing all the rest of it which will take us several more weeks. We'll journey on.

</comment></comment></comment><comment><USER5> Don't know i found that if there is no apple pay/paypal checkout I'm not going to complete the purchase anyhow unless it's a life or death matter.

IOS already has OCR capabilities for CC which works fairly well I wonder if Apple will extend it to Safari in general.

<comment><AUTHOR> Thanks for the feedback!

Our goal for the experience is the Apple Pay OCR experience, but it's embeddable directly in apps (so users don't have to already have it set up, if they prefer to use cards, or navigate to apple pay and come back). I agree this would be for the users not using Apple Pay.

Long term, I agree the trend is moving toward apple pay and digitized payments, but I found lots of people still like / prefer credit cards (so trend is that direction, but slope isn't super high and it'll take a while). I'm also excited about the fraud benefit of this kind of solution for bigger orgs that deal with fraud.

<comment><USER5> Make sure you test it against cards that have both valid from and valid till dates on them for some reason this still fucks the Apple Pay OCR and it's quite common on EU at least on UK cards.

So if there are two dates assume that the more senior one is the expiry date.

<comment><AUTHOR> Great advice, thank you! We'll make sure the date stuff works.

For EU cards, one experience I'm excited about supporting is the "tap to add" flow which may be even easier than OCR. Unfortunately only Android supports it for now, but love that experience when it's possible.

<comment><USER5> You're google wallet is integrated with Chrome and Chrome stores CC info also separately so yeah on Android it's a different story for users with Google play devices and those who wants to store their details in chrome/google pay at least.</comment></comment></comment></comment></comment>


Show HN: Webframe – get design inspiration from 800+ web app screenshots - <AUTHOR> https://webframe.xyz <comment><USER2> Nice this is legitimately useful. I dare say I would even pay for a service like this. Not like right now, but once in a blue moon where I have to throw a little website together for something, I'm not a designer and don't really care, just want to copy trends and get a little cheap inspiration. I'm lazy. And I find myself going to a bunch of different sites to see what they do, but you basically did all the leg work already.

Anyway I bookmarked this. I hope it's still running in a year or two when I may need it!

<comment><AUTHOR> Thanks, great to hear you find it useful!

Yes, I do/did exactly the same - that's why I created Webframe! I've got a couple of ideas to possibly monetize it, but the main priority right now is making it useful!

I hope it's around in a year or two also!</comment></comment>


Unbabel – Translation for Zendesk - <AUTHOR> https://medium.com/unbabel-news/its-here-unbabel-for-zendesk-has-officially-launched-a721284a71a9

<comment><USER2> Seems cool if it is as easy as it is shown in the video.

<comment><USER3> Growth Manager at Unbabel here. Yep, it's pretty straightforward. Just a couple tags and a few minutes to wait for our translator community to pick up the text and you're good to go. Customer satisfaction for translated tickets is consistent with satisfaction for tickets where two native speakers are communicating. Pretty cool stuff, imo. But I'm biased ;)</comment></comment>