Is every game of Slay the Spire winnable? - <AUTHOR> https://forgottenarbiter.github.io/Is-Every-Seed-Winnable/ <comment><USER2> Jorbs (a popular STS streamer) has said something like:

If random shuffling of your deck can cause you to take 40 damage from Lagavaulin, and the game is still 100% winnable, then that 40 damage doesn't matter at all. At which point the game is just not interesting, because most of the time you don't take the 40 damage and the rest of the game is way too easy and low risk. With procedural generation, in order for most games to be challenging and interesting, you have to have games in which the game just stomps you.

<comment><USER3> A roguelike (berlin interpretation) can be made always winnable, without this issue, because their fundamental goal differs from games like Slay the Spire -- a roguelike's victory condition is to steal the object in the depths, and escape, and enemy battles are just an aspect of that task; its not key to the gameplay. Which is why you can have no-kill runs, and non-combat-optimal builds and be successful. It's also why you can have a monster that spawned way too early and can one-shot you while rewarding nothing on death, and _you can decide not to fight it_.

The 40 damage _does matter_ , but you as a player decide as part of your risk management strategy whether its worth potentially being crippled, or killed, by such a monster. It also means a roguelike can introduce _unbeatable_ creatures (at least at your current strength), or overly high risk-reward scenarios, and it doesn't mean the game is actually over.

Slay the Spire on the other hand is a battle simulator -- a series of fights until you win. You don't get an option in the matter, because there is no grander goal. Which means the same monster that is a _choice_ in a roguelike, is simply game over in StS.

Jorbs is right about StS; he is not right about procedural generation. This is a direct result of the game's mechanics.

<comment><USER4> I'm surprised to hear the Berlin interpretation brought up here. I thought for the most part that people had moved on.

Anyway, a lot of classic (Berlin) roguelikes put you in situations where it is impossible to escape combat. If the enemy you're facing is faster than you and you have no tools of escape, combat is probably unavoidable.

So there are plenty of situations in a classic roguelike which are simply game over because you saw a monster (likely out of depth) you had no chance of beating. It may be unlikely if the game throws lots of escape tools at you, but there's always the chance you don't get any of them on a given seed.

<comment><USER3> > I'm surprised to hear the Berlin interpretation brought up here. I thought > for the most part that people had moved on.

Its primary value for me is to differentiate between roguelikes and roguelites, where the latter term seems to have been given too much weight and controversy (roguelike communities trying to hold onto their name too strongly, as to become unseemly); referring to berlin interpretation seems like a less sensitive workaround. Roguelite is a dumb name anyways. The differentiation is still very useful though, because the roguelike genre is a very interesting one to be able to reference. (and so thoroughly distinct from roguelites, that the short distance in naming really isn't very appropriate -- similar to NoSQL vs SQL DBs)

> So there are plenty of situations in a classic roguelike which are simply > game over because you saw a monster (likely out of depth) you had no chance > of beating. It may be unlikely if the game throws lots of escape tools at > you, but there's always the chance you don't get any of them on a given > seed.

This is true; the general design trends towards combat encounters (roguelikes really just being the DnD combat & dungeoneering mechanics ripped out and pushed on computers, dropping most of the other elements), but that's more out of design choice than out of any necessity to keep the game "interesting".

That is, you can trivially conceive of interesting situations and mechanisms that are not directly combat-related, and you can also find examples of them implemented (like the orb-chasing of DCSS orb spiders, which force an awkward dance -- the challenge is from limiting positioning, and the damage is what gives it weight, but it is in no way unavoidable).

Rougelikes aren't interesting because there's always a chance you might end up in an unavoidable death -- they're interesting because there's always a chance _you 'll push yourself_ into an unavoidable death.

> It may be unlikely if the game throws lots of escape tools at you, but > there's always the chance you don't get any of them on a given seed.

The core point of my argument is that you could _force_ a minimal set of escape tools to the player, and the game would still be interesting. The games aren't actually dependent on having unavoidable threats, and being able to win each and every encounter, because the goals are different from StS. The threat can be there, without the unavoidable loss.

That the procedural generation _may_ produce unwinnable games is not a requirement of procgen games -- it is a just an artifact of the implementation. But for StS and its kin, I think Jorbs is right -- potentially unwinnable games may be a requirement of that style of game.

</comment></comment></comment></comment><comment><USER5> > 1\. "Can a perfect player win every game of Slay the Spire?" (alternatively, > "Is there a strategy that achieves a 100% win rate in Slay the Spire?")

> 2\. "For every seed of Slay the Spire, is there a sequence of decisions that > results in a win?"

Given that there are only 2^64 seeds, the answer to these questions may actually be the same. The optimal strategy for a perfect player would likely involve determining the state of the RNG (which only requires witnessing about 64 bits of RNG output) at which point you know exactly what will happen for the rest of the game.

I'm not very familiar with Slay the Spire so maybe I'm misunderstanding though.

<comment><USER6> Couldn't that be more or less trivially defeated by taking wallclock time as an input to the RNG?

<comment><USER7> It could be, but considering the developers made the conscious decision to use a static seed and show that seed to the player they are probably okay with that.

</comment></comment></comment><comment><USER8> Thinking back on all the games I've lost, this analysis is depressing confirmation that I might just not be that good at this game lol. Super interesting read though!

<comment><USER9> Same. I've played the game for 40 hours and made 40 attempts, and 'won' only 4 times. 2 of them were daily challenges (and don't really count, they include very rule-breaking things), 1 was Standard for Ironclad, and another was Standard for Silent. I haven't even attempted Ascension once yet. It took about 25 tries on Standard before I won my first time, too.

I've even watched a few people's playthroughs and going over which cards are better than others and combo well together, and my win rate is still terrible. Just lost again this morning in Act 2 with another Defect run.

Meanwhile this guy is saying the best players are winning 99% of the time on Standard, and nearly the same on Ascension level 15? Wow.

By the way, for anyone thinking this game isn't really for you, you might want to give it a chance anyway (watch a video at least). I don't usually care for Rogue-likes, and I've been pretty tired of Deckbuilders, but I got into this game hard, pretty much immediately, after putting off trying it for forever and finally deciding to give it a chance.

One thing that really makes it awesome for me is that you know basically exactly what the enemies intend to do and how much damage they're going to do to you, so you can puzzle out how to prepare for it, should you kill this person who's going to do 18 damage to you, or reduce their strength, or build up your block to absorb it, or take the hit this round so you can go after something else, etc. If you've ever played Into The Breach, it feels a lot like that, but with RPG battles instead of a Tactical map.

<comment><USER10> I have no idea if this will help you in particular (depends on how you play right now), but something counter-intuitive about deck-building in general that helped a friend of mine up his win-rate in StS a lot is that you need to consider the cost of taking a card.

StS lets you not take a card when you are offered one, and often this is the best play, particularly as you go later into the game and have a deck that is stacked with powerful cards.

Fundamentally having more cards is bad, because it increases variance in what you can draw. Obviously taking a good card can be worth that cost, but often players fall into the trap of assuming the best card of the options given is worth taking, when really the question should be "does this card beat the average card in my deck, or does it dilute the power of the deck", because you are reducing the chance to draw one of the other cards in your deck.

Obviously there are edge cases: sometimes something may reduce the power of your deck right now, but introduces the chance for later synergy, which may be worth the cost—especially early on, but in general it is worth considering not taking the card.

The ideal deck is always the minimum number of cards that allow you to pull off your win state, everything else is just stopping you getting there (this is also why cards that allow you to draw cheaply are good, and one of the reasons why removing cards from your deck is powerful).

<comment><USER11> An important idea is that you're not only drafting to make a generally good deck, you're drafting to defeat the immediate challenges that are coming up.

If you're in Act 2 and headed for an elite, you have to think, "can my deck beat book of stabbing? gremlin leader? taskmaster?".

If right now your deck sucks against the book, and you're offered a disarm or caltrops, it might be worth picking it even if it's doesn't generally make your deck stronger. Cause otherwise you might get stabbed to death.

On the flip side, Demon Form is a very strong card, but it's practically a curse for most of Act 1, because it's too costly and slow. So sometimes you might skip even a strong card if it doesn't help you right now.

<comment><USER12> That concept is what has helped me get over the A15-20 hump. It's more important to draft cards that shore up immediate weaknesses than it is to draft cards that might pair well with other effects in your deck. Draft for the short-term, not the long term, because stronger short term victories means you can pathfind more aggressively and acquire more gold/rewards.

I'd say that's probably the most important "ah-ha" moment where my winrate really started to significantly improve. That and knowing when to min/max # of combats while pathfinding.

</comment></comment></comment></comment></comment><comment><USER13> I'm curious if performing this kind of analysis, or even knowing its conclusions, makes a game less _fun_.

I enjoy games for several different reasons:

\- The mental challenge of trying to win, and develop winning strategies in general. Knowing a perfect strategy, or knowing that some games are genuinely unwinnable, would diminish this. E.g. "Plague, Inc."

\- Immersion in a compelling, fictitious, narrative, epic story. This pleasure is probably unaffected. E.g. the "Civilization" franchise or "Endless Space 2".

\- The excitement of uncertainty. This could actually be _increased_ by knowing that some random seeds make a game unwinnable, especially if one can't know that at the beginning of the game. E.g. "FTL".

<comment><USER14> It depends on the actual numbers for a given game. If it's possible to prove that 0.001% of games are unwinnable, I don't think that's going to diminish anyone's enjoyment of a game.

At 1% unwinnability, I think that almost nobody would notice the existence of unwinnable games merely by playing, but having the knowledge of the exact percentage of unwinnable games might start to diminish enjoyment.

Solitaire, where 20% of games are provably unwinnable from the start, absolutely suffers from this effect, because even when a player loses a winnable game they will be tempted to blame the game rather than themselves, fostering resentment.

If a game was provably unwinnable 80% of the time, then that would be either a damning indictment of its design or an indication that the value of that game is to be found in some aspect other than winning.

<comment><USER15> Honestly, given how masochistically some gamers chase max-difficulty wins, I wouldn't be surprised if a game in which only 1% of seeds were winnable would be appealing to some.

But it would definitely diminish many gamers' enjoyment, as you say.

Dark Souls is an example where some players just aren't interested in the difficulty (even though the game is winnable), and some players relish it. Perhaps "win % for the median player" and other populations are more practically useful lenses for the discussion of general enjoyment.

<comment><USER16> I don't think many people would enjoy that at all.

The appeal of games like Dark Souls (and Slay the Spire!) at high difficulties arises from the knowledge that you _will_ win if you are clever and observant enough.

It's the learning process that keeps players coming back to these games, not the Game Over screen.

</comment></comment></comment></comment><comment><USER17> I've been thinking about that a lot, about these games that uses procedural generation. I've been playing a game on Xbox where "random" events occurs and you have to act accordingly. I've noticed the game wasn't fair or even winnable. That random event striking me that moment of the game, there's no way I could be prepared to deal with the situation (frostpunk, I think is the name of the game). When I released Qubes, my game, I made sure every level was winnable. So when people write me emails telling the level doesn't have a solution, I know for a fact that it has, the player just couldn't find yet. That's a nice article and I appreciate you sharing.

<comment><USER18> this reminds me of the ~semi-famous Ignacy/Vlaada design stories in board games.

each are board game designers, and Vlaada was play testing one of Ignacy's designs:

[https://boardgamesthattellstories.wordpress.com/2013/02/10/t...](https://boardgamesthattellstories.wordpress.com/2013/02/10/the- lesson/)

<comment><USER19> Somehow everybody overlooked the obvious solution of splitting the good events and bad events into separate decks?

That's not at all rare in other games.

<comment><USER18> the trouble with that solution is that players are aware of the direction of what they'll get and can make action decisions appropriately. if I know one deck is the bad one, I'll avoid actions that result in draws to that deck, unless impossible to avoid.

I think Ignacy wanted there to be ambiguity there.

<comment><USER19> The game as originally described already forced exactly 5 draws, so that's not an issue. If you're forcing draws, you can force some good draws and some bad draws.

You _can_ solve the "players know what's coming" problem easily, and some games do ("before you begin, take three disasters and two windfalls and shuffle them together"), but that adds a large logistics overhead that may not be worth it.

</comment></comment></comment></comment></comment><comment><USER20> Interesting analysis, even though it contains lots of probably's and maybes and mights and coulds.

To be fair though, it's not as computable (I guess?) as FreeCell (just 1 unwinnable game?) or Minesweeper.

<comment><USER19> FreeCell definitely has more than one unwinnable game.

</comment></comment><comment> Joe-Z-L Wait , I'm not that good at this game

<comment><USER21> After playing it for over a year, I had to watch a strategy video last month to realize that you might want to keep a small deck and not always pick a card every time you can. Didn't even occur to me.

I'm terrible at strategizing. To this day I can't figure out anyone other than the Ironclad with that power that grows his strength every turn.

<comment><USER22> I am not very good at card/deck building games, but I assumed they wanted you to cull your deck when I noticed they make you use gold to do so. After realizing that, I started trying to keep a lean and focused deck. I only play casually, and I still haven't won, so my strategy still might not be good!

<comment><USER23> I thought that was meant to be used on curses (yes, I'm bad at the game).

<comment><USER24> The basic cards are pretty bad. You can't play your full hand most of the time anyway, so cutting them makes it more likely that you'll draw the better cards.

This is also why Snecko Eye (the relic that gives +2 draw every turn and randomizes card cost) is arguably the best boss relic. Even if you only get to play one 3 cost card, it's more likely to be the best card in your deck.

<comment><USER19> > This is also why Snecko Eye (the relic that gives +2 draw every turn and > randomizes card cost) is arguably the best boss relic. Even if you only get > to play one 3 cost card, it's more likely to be the best card in your deck.

I can't agree with this. Snecko Eye is very strong, but playing a 3-cost card will cripple you. It's strong because you draw a lot of cheap cards -- the lesson of Snecko Eye is that playing several cards is better than playing one card, even if the cards you got to play were chosen randomly.

<comment><USER24> That's definitely part of it, but you'll still get the occasional hand full of 3-costs, and all of them not being completely awful is important.

</comment></comment></comment></comment></comment></comment></comment><comment><USER25> I'm guessing your win rate estimations are super low. For a game with this much depth, the gap between the best players and optimal play is absolutely massive.

For intuition around this, look at how much chess has evolved over the past 400 years. Look at the history for speedruns or the ABC challenge for super mario 64, or look at speedrun histories for other games like golden eye or super mario odessy.

Just based on the fact that this is a relatively obscure game with a lot of complex mechanics, I would estimate that with optimal play, the win rate should be over 99% for all characters. This probably requires the development of a large number of new techniques and play styles, and probably has many surprising optimizations that would seem ground-breaking today.

<comment><USER26> this game has a bunch of randomness which stops us from knowing where we're going to end up if we make decisions. it'd be like if super mario 64 had a bunch of jumps in it where there was a 1/10 chance you died on screen transition and you couldn't tell where you were meant to jump ahead of time. if you replay or check the seed ahead of time you can find out and stop dying to those things, but in practical play there's no obscure mechanic that stops you from dying because you only had the ability to prepare properly for two elite fights but ended up fighting the third, or because you were presented two options for synergistic scaling for the endgame fights but didn't get offered any more of the one you chose.

they can all get above 50% and watcher can definitely get way higher than that, but 99% is unthinkable because not enough of the ways you can die are solvable with the information available in a run.

</comment></comment><comment><USER27> "It is possible to commit no mistakes and still lose. That is not a weakness. That is life." \- Jean-Luc Picard

Seems relevant. In life you can execute a 'perfect strategy' and still lose, so it goes in some games too.

</comment><comment><USER12> Wow, the author also made a mod that sends game outputs and receives inputs from an external program. This is awesome!

[https://github.com/ForgottenArbiter/CommunicationMod](https://github.com/ForgottenArbiter/CommunicationMod)

</comment><comment><USER28> I haven't played slay the spire, but I have been watching happy hobs no hit, no level-up dark souls trilogy runs and it might be interesting to see people trying to win "unwinnable" runs.

<comment><USER29> If u like hob, dark souls, rpgs... You will love slay the spire. It's so fun man and was one of my first roguelikes. If you get hooked on a roguelike you are in for hundreds of hours. EASY!

</comment></comment><comment><USER29> love slay, this is really interesting and fun work i would guess. Game is hard but after you play a lot, it becomes less hard because you know a lot. A20 still fucks ya hard, not sure i really enjoy it that much. Climbed to A20 with all 4 chars. Recommend the game!</comment>


Asi64 – A Racket-based 6502 assembler - <AUTHOR> http://pinksquirrellabs.com/blog/2017/05/30/asi64/ <comment><USER2> I've been wanting to do something like this but for WebAssembly & with Guile. Feels like it be useful compared to the hand writing I've been doing, here's an in-progress lexer: [https://github.com/serprex/luwa/blob/master/rt/lex.wawa](https://github.com/serprex/luwa/blob/master/rt/lex.wawa) with the janky wawa assembler being [https://github.com/serprex/luwa/blob/master/scripts/wawa.js](https://github.com/serprex/luwa/blob/master/scripts/wawa.js)

</comment><comment><USER3> Similar solution in Haskell: [http://wall.org/~lewis/2013/10/15/asm- monad.html](http://wall.org/~lewis/2013/10/15/asm-monad.html)

It allows to embed 6502 assembly in the Haskell code and use the latter as a macro language.

</comment><comment><USER4> Can this work with Atari 8bit and 2600 or just C64?

<comment><USER5> I imagine the assembly is processor specific no?

<comment><USER6> They also have a 6502 :)</comment></comment></comment>


Ask HN: How would you go about making a mobile device single-purposed? - <AUTHOR> I would like to flash a mobile device with just enough software to run a single app. The app would load automatically in full screen when the phone boots, and the only functionality available on the device. No browsers, dialers, networking, stores, etc.<p>What kind of "app" needs to be built for this? Is core android the best starting point? Ecosystem compatibility has little importance here, perhaps something more suitable? <comment><USER2> Do you want to market such a device, or do you just need the ability to limit any device to a single app? If the latter, look into iOS Guided Access:

[https://support.apple.com/en-us/HT202612](https://support.apple.com/en- us/HT202612)

<comment><USER3> This. I have used simple HTML5 web applications with the meta tags to allow running in 'app mode' (no browser chrome etc) and then enabling guided access mode on iPads (mounted in display stands, mostly) many times, and find it works suitably well to lock the device to a single purpose. You need to consider a few edge-cases (for example not allowing text selection and long- press, which allows the user to access the 'look up' function, and making sure there are no links to any external URLs etc, but once you've covered off those things, it works as a fairly effective way to provide a 'kiosk' style interface.

<comment><USER2> > _which allows the user to access the 'look up' function_

Actually, the moment you enable Guided Access in Safari, it shows you a list of options specific to Safari, which includes disabling Dictionary Lookup!

It also allows you to disable hardware features like specific buttons, motion control, and even lets you draw on the screen to mark areas to disable touch input in.

<comment><USER3> Maybe it wasn't lookup, perhaps it was one of the share features, I don't remember exactly, just that it was possie to semi 'break out' by selecting some text and long-pressing to reach the context menu, even with all of the options disabled in guided access mode.

</comment></comment></comment></comment><comment><USER4> The Lifewatch MCT 1 Patch ([https://www.lifewatch.com/Healthcare- Professionals/Mobile-Ca...](https://www.lifewatch.com/Healthcare- Professionals/Mobile-Cardiac-Telemetry.html)) comes with a Kyocera Android (v5.1.1) phone that does exactly what you're describing.

</comment><comment><USER5> Any reason you need it locked up so much? Can you just use vanilla AOSP and something to autolaunch your app?

<comment><AUTHOR> It's a security related app, so the less unnecessary software the better, but that can be improved over time.

If I do use AOSP would the "app" be a real app, or would it be a custom "launcher" that replaces the desktop and app navigation screens (are those two things different or is the launcher just an app)?

<comment><USER6> I'm fairly certain the launcher is an app itself.</comment></comment></comment>


Gameboy emulation library in JavaScript - <AUTHOR> https://github.com/arcanis/virt.js <comment><USER2> That actually looks really promising. The performance of the pokemon demo is really bad on Firefox unfortunately, but near perfect on chrome.

<comment><AUTHOR> I would love to talk with someone understanding Spidermonkey's inners to optimize the code! Javascript optimizations are pretty hard since they can suffer huge variations across browsers.

Anyway, I also have a lot of work to do to achieve Grantgalitz' performances even in Chrome, so it should improve over the time :)</comment></comment>


Less than a fifth of companies have embraced Twitter for customer service - <AUTHOR> http://www.callcentrehelper.com/less-than-a-fifth-of-comapniese-have-embraced-twitter-for-customer-service-9362.htm

<comment><USER2> It's a tough call on Twitter customer support: There's been some great success stories and campaigns (see:DELL), but you can't really do much more than help funnel people through your existing channels: "Sorry about your problem, e-mail support at xxx," and everytime you do that publicly, you're pointing those who do follow you to things going wrong. It takes a special skill and dedicated employee to do right, which may or may not result in a net payoff.

The thing that bothers me more about Twitter support is how all the sudden companies are expected to using one private protocol as an "official" channel, when it's a protocol they don't own nor control. Nobody blames their local grocery for not using AT&T instead of Verizon for their support calls, but all the sudden you're not on Twitter, Facebook, and GetSatisfaction (all private companies), and "you don't listen to your customers," even if you have a bevy of other avenues.

Does this bug anyone else?

</comment><comment><USER3> We have a twitter account for announcements. I find it quite inconvenient and inappropriate when people send questions or messages through Twitter that could be better handled through email. It's essentially a waste of time as the twitter format is so limiting.... it's not possible to say anything detailed or truly informative in those tiny messages.

That said, it is worth engaging customers and providing info on Twitter. I wouldn't really call what it works well for 'customer service', however.

</comment><comment><USER4> If 15-20% of top companies are using twitter for customer service, that is a tremendously good thing.

To frame it another way, if you told a startup that 15% of top companies would be using their startup for customer service within a few years of launching, most people would take that in a heartbeat.

Also, this early I don't think the actual number is as important as how fast its growing/shrinking. It'd be useful if they showed us last year's number and I'll be curious to see next's...

<comment><USER5> A tremendously good thing... for Twitter. Whether it's any good for the companies or their customers is an entirely different matter.

</comment></comment><comment><USER6> _20 per cent of 'tweets' contain a reference to a product or brand_

What % of those were auto-retweets, tweet bots, or were originated by the brand owner? "Real" tweeters seem much less inclined to do this brand-whoring than this 20% figure implies.

</comment><comment><USER7> I don't think you can say much more than "it's broke" in 140 characters.

<comment><USER8> You can fit in some curses.

</comment></comment><comment><USER9> Less than a fifth of companies have inserted a square peg in a round hole. Actually, that is probably not quite accurate.

Anyway, if you read past 140 characters, neither is the headline. At the end companies are singled out who have "a Twitter" but only use it as a unidirectional medium (if at all) rather than responding to customers' communications. It should be fairly self-evident that Twitter is not a medium for _actual_ customer service beyond the very cursory.

</comment><comment><USER10> Having some past experience doing technical support I don't really understand why people would try to make Twitter a customer service tool. It's really just the wrong tool for the job. Very few problems can be solved in 140 characters short of "call this number, e-mail this address, IM this person" which is just re-direction. Something like Google Wave would probably make more sense from a support standpoint.

</comment><comment><USER11> Communication with a CS representative requires a dialog. It has to be interactive and dynamic. That is not Twitter. Twitter is not chat. Chat is a back and forth exchange where people speak WITH each other. Twitter is directed speech where people speak AT each other.

</comment><comment><USER12> Using twitter for customer service is like using a scooter to tow a boat. You could probably do it, but that doesn't mean it makes sense.</comment>


The API for Google's most valuable resource sucks - <AUTHOR> http://vincentwoo.com/2012/08/15/the-api-for-googles-most-valuable-resource-sucks/

<comment><USER2> I can easily believe that Google+ isn't being forthcoming with their real intentions</comment>


Ask HN: Experience with job hunting on starfighters.io? - <AUTHOR> I am curious to hear your experience hiring or getting hired using https://www.starfighters.io. <comment><USER2> I'm the third person to finish all the current Stockfighter levels. (I also coded a MineCraft visualizer, a physical hardware stock trading device with an ESP8622 plus cardboard and duct tape, and helped organize PVP games.) I had fun.

When I first finished, the challenges had just launched and the Stockfighter team was busy putting out fires. I think they switched to recruiting mode about a month later.

Patrick of Starfighter sent me an email with an invitation to have a phone call. We talked about the game, then about a job opportunity. If I had been looking for a job, the discussed company sounded great - a distributed team and interesting problems to solve.

I think they spend a week on recruiting, a week on signing up companies, a week on coding the site, and a week on other stuff before cycling back again. This means that it may be awhile from the time you "win" to the time someone gets in touch with you.

Both the players and the hiring companies are high quality. Last time I checked, less than 1% of the people who completed the first level actually finished the last. It seems to be a pretty strong filter.

Pros: Fun game, good hiring companies, great players. Cons: I would not expect to be hired right away if I was needing a job.

<comment><USER3> So you play the game (proving your talents by finishing) and then start from square one in the companies interview pipeline? I thought the whole point was to solve that problem?

<comment><USER4> No, the way it worked for me was that I had a short non-technical chat with an internal recruiter and then we went straight to an onsite interview.

<comment><USER3> That sounds exactly like square one in the interview process...

<comment><USER4> No, square one would have been several phone screens if they liked my resume at all. So it got me to around square four or five.

<comment><USER5> Just to be clear, did the on-site interviews consist of additional technical interviews, or just cultural/general interviews?

<comment><USER4> Technical interviews.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> Hey, all. Thanks for asking about this. I can give a pretty simple answer here:

We are still figuring this stuff out. As an actual business, it's early days for us. We have a thingy we send out to candidates who want to consider working with us that goes into this in some detail.

You should play with the Starfighter CTF stuff if you are interested in CTF stuff (or trading, or, any day now, low-level programming and AVR). You should _not_ do our CTF stuff if you're just trying to get a better job. Maybe someday in the future, if we're wildly successful, this will change, but right now the best mental model for us is "we're a goofy game company that does some recruiting on the side".

I have a lot of strong feelings about hiring process, ineffective and inhumane interviews, work sample testing, and recruiting underserved demographics. I've written some of them up. I think I've also given the impression that what we're trying to do with Starfighter is to singlehandedly fix all of that. Nope!

If you're doing large-scale hiring and you want advice on how to structure your process based on our experience doing hiring (for instance, at NCC/Matasano), please feel free to reach out.

<comment><USER7> To elaborate on Thomas' answer:

I got a head start on working with players to get them jobs. (All of the SF founders do this, in principal.)

I rate my execution on that process at about 3/10 right now. (I'm very good at writing introductions in a way that gets hiring managers excited about candidates; I'm terrrrrrible at follow-through with candidates at present and have been juggling too many balls for the last several months.)

I'm hoping to get better at it, rapidly, and then replace myself with a short shell script, dedicated hiring engineers, or both.

Things are exactly as fluid as Thomas said.

At present, the modal conversation with me goes something like "Hey I noticed you did $PICK_A_THING. That impressed me and I read your solution. Do you want to have a chat about the game and about potential job options?" If so, proceed to 30 minute phone call about what you liked/didn't like about the game, about your background and interest, and about what you want in terms of a job. If I have a good option for you, I tell you about it. If you agree it is a good option, I write a three paragraph email to someone who has agreed that they trust my judgment on engineers saying why I think they should interview you.

Again: execution ability on this, not fantastic at present. The biggest issues are followup, followup, and followup, for example if e.g. the company I intro you to doesn't immediately jump on the intro. Aspirationally I should bang down their door; in practice, that ball is a ball I often drop. If you have an interview(s) but the interview(s) doesn't result in an offer, I should aspirationally get in touch with "OK, let's debug that, and let me introduce you to some other options." That ball also one I'm not great at, particularly as I've been traveling for the last week and a half.

We're very very new at this, and we're at least as bad at recruiting as I was at writing stock exchanges before I actually wrote a stock exchange. Hoping to get this nailed down over the course of the next few weeks/months and then scale it out.

</comment></comment><comment><USER8> I finished the levels during the beta and have the first unique badge (a timing attack no longer possible on the last level). I was looking for a really specific set of job requirements and patrick both 1)was totally willing to accommodate and 2)really on my side during the application process. They got me a great interview at a large, well known company- who didn't end up making an offer, but had a great hiring process.

It was overall great and exactly what it said on the tin.

<comment><USER9> >They got me a great interview at a large, well known company- who didn't end up making an offer, but had a great hiring process.

Unfortunately I thought that this was exactly the problem starfighters was supposed to solve. I.e. qualified engineers getting dropped mysteriously due to various biases of a company's interview process.

<comment><USER10> Clearly passing a game doesn't mean hired right?

</comment></comment></comment><comment><USER4> I finished the levels during beta. I had already been in communication with Patrick via email (giving beta feedback), and after I finished the last level I sent him a note saying that I was actively looking for work.

We had a chat over skype, talked about my experience and what I was looking for. He very quickly lined me up an interview with a very well-known company (well-known, in this case, can be interpreted as "thousands of search results on HN").

I had a 15-minute non-technical phone call with an internal recruiter, and then we scheduled an onsite interview straightaway.

I ended up not getting an offer. Not sure whether that's due to my having an off day, or them picking up on legitimate qualities they didn't want, or merely the tendency towards avoiding false positives at the expense of false negatives.

In any case, I have since found a job I'm very excited about (starting soon), to which I was connected through Triplebyte. Triplebyte's model for recruiting is slightly different from Starfighters and won't appeal to everyone (though they are probably closer to one another than to any other player in their field). Triplebyte does have an advantage in that they got started a bit earlier, and, importantly, have more clients. (Though only YC companies currently, I think.) They used this advantage concretely by lining me up with several interviews at once. I don't think that that's something that Starfighters has done; I think they've been connecting candidates with companies in serial.

<comment><USER7> _I think they 've been connecting candidates with companies in serial._

Literally changing on a day-to-day basis as I try things out.

Congratulations on the new adventure! (And pip pip for Triplebyte.)

<comment><USER4> Thanks, and I hope trying new things goes well!

</comment></comment></comment><comment><USER11> This comment is tangentially related to the topic.

Thomas and Patrick:

First I want to thank you for trying to address one of the most frustrating part of a developer's career.

As you know very well, after Silicon Valley, it's the finance companies in NYC area who pay top notch developer salaries. Even though I am a competent developer, it was quite a struggle for me to break in to the finance industry (They only wanted to hire people with finance experience). It took me a little while but I was able to break in. Now I am over that hump but I am faced with another problem. I have been working in 'Back office' for hedge funds for several years and would like to transition to 'Front office' and I am faced with the same problem again. I am not able to switch roles because I don't have experience working in the front office. The Stock Fighter CTF is a perfect way to demonstrate the relevant ability to prospective employers. Do you guys have any plan to work with hedge funds/investment banks for your recruiting platform?

</comment><comment><USER12> The levels are fun but if you're job hunting and that's your primary objective, there are better places to hunt.</comment>


GM lied about where Chevy Cruzes are assembled - <AUTHOR> https://mobile.twitter.com/Tweetermeyer/status/817072442136928256 <comment><USER2> I await the follow up from Think Progress. I think i'll be waiting for a long time.

</comment><comment><AUTHOR> Its really eye opening how much car companies lie and cheat.

Volkswagen, Toyota, and now this, are all car companies so dishonest ? I really hope tesla is different.</comment>


Go Ahead, Millennials, Destroy Us - <AUTHOR> https://mobile.nytimes.com/2018/03/02/opinion/go-ahead-millennials-destroy-us.html <comment><USER2> It seems like every time I read a NY Times opinion it comes from someone who has never seen much outside their urban and/or suburban existence.

It's sad really. They don't know what they don't know, but they really should know they don't know it.</comment>


Wizz Air Takes Legal Action Against Ryanair over Buzz Brand - <AUTHOR> https://airlinegeeks.com/2020/07/08/wizz-air-takes-legal-action-against-ryanair-over-buzz-brand/ <comment><AUTHOR> The Hungarian LCC alleges that the "Buzz" brand is very similar to its own name "Wizz" Air.</comment>


How to Hack the Developer Console to be Needlessly Interactive for Christmas - <AUTHOR> https://konklone.com/post/how-to-hack-the-developer-console-to-be-needlessly-interactive?s=d

<comment><USER2>
        say("\n:sparkles::sparkles: :star2: :sparkles:\n     :christmas_tree: \n :sparkles: :christmas_tree::christmas_tree:  :sparkles:\n   :christmas_tree::red_circle::christmas_tree:\n  :christmas_tree::ribbon::red_circle::christmas_tree:\n :christmas_tree::large_blue_circle::christmas_tree::red_circle::christmas_tree:  :sparkles:\n:christmas_tree::red_circle::christmas_tree::ribbon::large_blue_circle::christmas_tree:")

For those of you who want to play around with the emoji stuff and feel bad about spamming chat:

        function test(message) {
          events.chat({name: "test", message: message})
        }

afterwards call `test` instead of `say`

<comment><USER3> Other interesting things to try -- you can create something to call into to synthesize motion with something like:

      function domove(x,y,a) { moveFlag(me.flag, x, y); setRotate(me.flag, a); emit('motion', {x: x, y: y, id: me.id, c: me.country}); emit('scroll', {id: me.id, angle: a}); };

and then you can do more interesting stuff along the lines of:

      a=0; function f () { a += 5; domove(a, Math.sin(a / 50) * 100 + 200, a); if (a < 1000) setTimeout(f, 20); } setTimeout(f, 10);

</comment></comment><comment><USER4> I like using toString to convince the console to omit parentheses. Another way would be to use getters, like so:

        window.__defineGetter__('help', function () {
            console.log('I\'m here for you');
        });

<comment><USER5> interesting, I didn't know about that. You still end up having to do a toString override to properly suppress the 'undefined' return value though:

        window.__defineGetter__('help', function () {
            console.log('I\'m here for you'); f = function() {}; f.toString = function() {return " ";}; return f;
        });

But __defineGetter__ would let the execution of the command work in other places than the JS console, so that's cool.

</comment></comment><comment><USER6> This is so useless that it's awesome! I had no idea that could be done.

</comment><comment><USER7> Feel like it's worth highlighting this part of the post:

>There is no good reason to do this

I get that it's a cool easter egg, but please, please don't do this.

<comment><USER8> Why not?

<comment><USER9> All the extra JavaScript makes your site slow.

<comment><USER3> Can you quantify how slow? This is a common refrain against some of these sorts of things (and, indeed, the modern web in general): "adding this thing makes your site slow". But I rarely see quantified results...

</comment></comment></comment></comment><comment><USER10> Just had a nice conversation with the Great Leader, Assad, and my wife as Barack.

Hilarious spontaneous conversations aside, cool idea!

</comment><comment><USER9> I had no idea you could add styles to the console. Neat.

</comment><comment><USER11> This post is sitting at the top for several hours now.</comment>


Is Emirates Airline Running Out of Sky? - <AUTHOR> https://www.bloomberg.com/news/features/2017-01-05/is-emirates-airline-running-out-of-sky <comment><USER2> Sad to see the US carriers resort to such methods (asking for trade barriers) to try to resist competition, to the detriment of us all. Perhaps they would be better off improving their own services.

<comment><USER3> That competition comes at a cost - usually on the backs of the lower level employees, such as the crew. Do you want the labor conditions in the article to be common in the US?

I get it, flying is awful. But it's a cutthroat industry. When everyone picks their flight sorting by price, you end up with what we have today.

<comment><USER4> I disagree that the competition always comes at a cost. Many European airlines tend to have a better reputation in the flying community than the major American carriers, and I have no doubt they provide more worker's rights than are the norm in the US. The same can be said for the top-notch Asian carriers, which to be fair also tend to have a lower cost of living and likely pay as a result.

<comment><USER5> That's nonsense. The European carriers are awful and have terrible reputations lately. Have you flown domestic on a European carrier? I'd rather fly any US legacy carrier domestic than the Euro carriers.

</comment></comment></comment></comment><comment><USER6> A couple of stories about Emirates Airlines recently, do these originate in their publicity dept?

<comment><USER7> This author writes mostly about the Middle East, and tends to put out a lot of articles about the Emirates in general. Theres' 10 articles on her listing about Dubai [1]

[1] [https://www.bloomberg.com/authors/ARO3-lm4s5s/deena- kamel](https://www.bloomberg.com/authors/ARO3-lm4s5s/deena-kamel)</comment></comment>


Show HN: Google App Indexing Validator – Is Your App Configured? - <AUTHOR> http://branch.io/resources/app-indexing/?try=2 <comment><USER2> Source: [https://github.com/BranchMetrics/app-indexing- validator](https://github.com/BranchMetrics/app-indexing-validator)</comment>


HK social media users writing phonetically spelled posts to shut out trolls - <AUTHOR> https://news.rthk.hk/rthk/en/component/k2/1475264-20190818.htm <comment><USER2> Hi!

Here is some information about romanisation of Cantonese if you are interested:

Romanisation system for Cantonese has an interesting history! Yale romanisation system [1] is (IMO) the most readable and also later on refined as Jyutping [2], another method used in more academic contexts which IMO is less readable (both used in GBoard as Cantonese input methods). However most persons and place names in HK use older system [3] developed in 1880s by Christian missionaries.

When people use Cantonese romanisation as part of their casual text chats on instant messaging or social media platforms, it's usually a mix of both systems [1, 3], but rarely [2] but without the tone information (so lots of many-to-one mappings), mixed in with bits of English, making it hard to understand (even for a local Hong Kong person) without having good prior context of the entire conversation.

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

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

[3] [https://en.wikipedia.org/wiki/Standard_Romanization_(Cantone...](https://en.wikipedia.org/wiki/Standard_Romanization_\(Cantonese\))

<comment><AUTHOR> Somewhat off topic: any chance you know how come Google doesn't have an explicitly cantonese model for translation?

<comment><USER3> Not a Googler so I can only guess. But it seems like Google did try to treat Cantonese as a Chinese variant in the past, eventually they dropped it probably because they realised they're too different.

I know Google is actively working on the Cantonese version of Google Assistant, though not sure when it'll be officially released.

<comment><USER4> It is a variant of Chinese though. Chinese is a language family, not a language -- which includes Mandarin, Cantonese, Hakka, et. al.

<comment><USER3> Whatever it is, Cantonese has different pronunciation, vocabulary and even grammar from Mandarin. Which means it takes a non trivial amount of work to adapt a language model designed for one to the other.

Source: I'm a native speaker of one and fully fluent in the other.

</comment></comment></comment></comment></comment><comment><USER5> I remember this being similar to the reason claimed for the use of leet speak back in the day (i.e, that it prevented searching of messages by 'the man' ); Interesting to see something so similar actually being practically applied in the present.

</comment><comment><USER6> As a side note: If that would happen here in Flanders, not even Dutch speakers would be able to translate it. We have so many local dialects with their own pronunciation, and region bounded words, that only local people would understand what is written.

</comment><comment><USER7> Very clever. That said, there's plenty of HKers who were happy to be govt stooges who speak Cantonese and can write English.

<comment><USER8> True, but it no doubt greatly _reduces_ the amount of government involvement in this area.

<comment><USER9> Only for a little while. It will take a few days to make a browser extension to fix this.

<comment><USER10> There's nothing which will translate that as far as I know, it's an entirely different problem than chinese characters since Cantonese is a separate language and the phonetics are not even standardized in these messages so there's no 1 to 1 mapping to characters either.

<comment><USER11> If you type the phonetic words in using the Google Keyboard in JyutPing mode, you will usually get the correct Chinese characters. The thing that would defeat this, though, is the deliberate introduction of very colloquial Chinglish puns.

</comment></comment></comment></comment></comment><comment><AUTHOR> I tried feeding some of the phonetically spelled stuff into google translate and it was completely lost at sea. So no worries about the claim this could stuff up NLP/search, then.

<comment><USER12> No, you can actually type this straight into Google Translate and it will work fine. After selecting Chinese as the language, you have to set the input method as "Cantonese." Of course, Google Translate is banned in China. ;)

This isn't a secret code or anything; it's a standard romanization that almost everyone who learns Cantonese _formally_ will learn. The thing is---formal education in Cantonese and other non-Mandarin Chinese languages is banned in schools in China. Mainlanders that speak Cantonese as a primary language often don't even know how to use it (I talked to a Cantonese-speaking girl from Zhuhai, and she was like "Can you show me what Jyutping looks like?" Bizarre).

It's pretty smart, and a bit of a slap in the face to the establishment, which has been forcing Mandarin down people's throats for the past 50 years or so.

<comment><USER13> Many things are banned in China, especially web services, in order to create an internal (was possibly exportable incubation, but not since 'progression' over the past 5 years after the government - hegemony of leaders and follows on, rather than government workers, themselves the mules).

But translate.google.cn is not banned on the mainland and Google services work very finely in Hong Kong.

And forcing Mandarin does people's throats is not all bad, in terms of literacy and considering that 70 years ago most of the country was illiterate, no only in language but also in ideas, such as basic western ideas in medical - which led to a huge reduction in infant mortality - the doctors and the literate going to the countryside.

And the across the sea, river, passing swamp, was Hong Kong, which figured out very much earlier and flourished.

But.. translate.google.cn is not blocked in China.

<comment><USER14> It's not about forcing Mandarin being bad, it's about prohibiting non-Mandarin being bad.

US equivalent to this would be forcing English (which we do) while jailing anyone who teaches Creole (which we don't).

<comment><USER15> No one is going to get jailed for teaching Cantonese in China. There are plenty of commercial offerings, e.g. this free introductory course I found: [https://www.wanmen.org/courses/586d23485f07127674135d64](https://www.wanmen.org/courses/586d23485f07127674135d64)

Mandarin being the primary language of education doesn't mean that Cantonese is prohibited; it's just not mandatory, so most native Cantonese speakers aren't going to get a formal education in it unless they specifically seek it out.

<comment><USER14> Thank you for the correction; it's too late to edit but I would if I could :(

</comment></comment></comment></comment></comment></comment><comment><USER16> Hong Kong is not the only place where people speak Cantonese. The entire region of GuangDong (Canton) speak this dialect. Do they believe all "trolls" speak Mandarin?

<comment><USER11> The people of Guangdong will usually tell you that South Chinese people are generally apolitical and tend to care more about money and good food.

</comment></comment><comment><USER17> Aw hafta r'menbadis iffwea genvayed.

<comment><USER18> I'll have to remember this if we get fired?

<comment><USER19> Probably "invaded".

</comment></comment></comment><comment><USER20> I was lucky to have the chance to take a natural language processing course in the spring from a professor who was very knowledgeable and passionate about the subject.

Sentiment extraction, semantic meaning extraction, categorization... these are all really hard problems (to do automatically) even on properly spelled and grammatically correct text. I would imagine they are even harder in Chinese, which as I understand it has several different writing systems.

The HK protesters are clearly quite clever. If they keep using different obfuscation schemes for text, I could see it forcing the mainland to use human beings to read every post. Which I'm sure they have the resources to do, but it's still more expensive than using a machine.

Some strategies I would expect to be effective:

* Using alternative phonetic encoding (i.e. what is shown in the article, using Latin letters to spell out sounds rather than words)

* Homoglyph attacks

* Using deliberately incorrect or ambiguous grammatical structure

* Using deliberately incorrect spacing and punctuation (for example "m ee t. me;? b!y th e do.,c?s a!.t; m id ni;ght" will completely bewilder all the parsing packages I'm aware of)

* Convert the text to images and post those, possibly adding graphical text which will confuse OCR packages

Mix and match for even more fun!

There are also lots and lots of stenographic techniques, but those are a lot less accessible to laypeople.

I'm not familiar with NLP tools and techniques available for Chinese, but most parsers/taggers for English aren't really written with adversarial inputs in mind. It would probably be possible to deliberately construct valid (or at least decipherable to a human) English text that would crash the common tools available.

As an aside, the articles that keep coming out over the HK protester's tactics are starting to seem a lot like Cory Doctorow's "Little Brother"[1], which is available for free, and definitely worth a read.

1 - [https://craphound.com/littlebrother/Cory_Doctorow_- _Little_B...](https://craphound.com/littlebrother/Cory_Doctorow_- _Little_Brother.pdf)

</comment><comment><USER21> There is state-sponsored warfare occurring on the internet right now. As with all war, each side desires a specific outcome; they're influencing en masse - the people they want - to achieve their outcome.

</comment><comment><USER22> A mandatory link: [https://en.wikipedia.org/wiki/Shibboleth](https://en.wikipedia.org/wiki/Shibboleth)</comment>


Empirical research reveals three big problems with how patents are vetted - <AUTHOR> https://arstechnica.com/tech-policy/2017/12/these-experts-figured-out-why-so-many-bogus-patents-get-approved/ <comment><USER2> Great suggestions in this article:

* eliminate the issuance fee (that is paid when a patent is granted) and raise the application fee to compensate, to eliminate the perverse incentive for the PTO to grant patents

* use renewal fees to rebate application fees for individual and qualified small-business applicants (the amount of the rebate depending on the amount of renewal money coming in)

* only allow an application to be refiled once; the second rejection is final

* allow examiners somewhat more time to examine each patent

All of these would help the situation.

Finally, the article argues against funding the PTO through fees. I can put it no better than the author: "While a user-funded patent office sounds good in theory, the reality is that the social costs of bad patents are high — and they're borne by the general public, not patent holders."

</comment><comment><USER3> Seems like it would be better if modeled after the criminal justice system. You have to prove beyond a reasonable doubt that the invention is novel and patent worthy. And duration of the patent should be dependent on its scope, and reviewable in the future. Of course this may be way more expensive, can't say I've calculated out the economics of it.

<comment><USER4> Except for variable length patent terms (duration), everything you suggest is true already.

The applicant has to prove to the examiner that their invention overcomes the prior art discovered by the examiner (or anyone). Also, inventors (and their attorneys) have to disclose to the USPTO all relevant public references (potential prior art) they know of.

Further, during patent prosecution, US examiners are allowed (required) to broadly interpret claims and prior art. Giving them more latitude than courts to declare something is prior art for a given invention.

<comment><USER5> As coinventor of a now-expired patent, I'm not very impressed by the bar for novelty.

There has been some truly new stuff patented, like the RSA cryptosystem. It's not clear to me whether protecting things like that has been a net benefit even before the cost of also protecting ordinary engineering and worse.

<comment><USER4> The novelty bar is low by design. An invention needs at most one difference from prior art to be novel. It can be a small difference. But if a patent relies on a small difference for novelty it is likely to be a narrow patent or otherwise easy to design around. Note, non-utility differences, like color or artistic design elements do not count in utility patents.

Non-obviousness is harder prove because multiple references can be combined and there is more room for subjective interpretation or argument. Overcoming obviousness rejections is where patent attorneys earn their money. If the filed specification is well-done, obviousness rejections can almost always be overcome at the expense of narrowing the patent claims.

Further, patents encourage innovation in at least two ways:

The classic view is that they reward inventors by granting them a limited term monopoly in their invention in exchange for public disclosure.

Though I think more innovation is spurred by people designing around existing patents. For example, Amazon's old one-click patents didn't stop the e-commerce industry from innovating. Neither did Priceline's patents on reverse on-line auctions.

Patents protect how someone does something, not what someone does. Two inventions that do the same thing can be patented, as long as how they do it is different. RSA patents only mattered because people wanted to use RSA's crypto. They didn't stop others from making or patenting different kinds of crypto or getting their own patents on novel extensions to RSA's crypto.

<comment><USER5> This is just one more anecdote, but I once read Sun had a cool new patent, the central idea of which turned out to be three lines of assembly code which had already been published in the well-known superoptimizer paper by Massalin 15 years before -- I only noticed this because I happened to have been reading it and had the paper lying around my bedroom. To Massalin it merited one paragraph in an appendix about interesting snippets discovered by the superoptimizer. Sun gave it pages of legalese broken out into multiple claims, ending with the usual boilerplate claiming any further variations not explicitly listed that would be obvious to one "skilled in the art".

I did nothing about this because the fight would be a drag with nothing in it for me.

Yes, the classic justification is to encourage invention, but there are publications arguing that patents aren't a net positive. It's not my field, I don't know, but I've started doubting.

Added: I don't think Sun did anything especially wrong -- they worked with the patent system as it is and missed the prior art. What I think is that this example shows some of what's wrong with that system.

<comment><USER4> That was just a mistake that slipped through the system. It would be caught later if the patent was ever asserted against anyone. Sun might have caught it themselves as part of their evaluation process before asserting the patent.

Now examiners have better access to all types of references. And, it is easier to search through them. Academic papers, foreign patents, foreign publications, books, website copy, etc, are all fair game. Though examiners seem to prefer to use US Patents/Applications if they can. US patents or published applications make great prior art references because they have a clearly defined priority date and patent prosecutors tend to draft specs to be as inclusive as possible.

<comment><USER5> It's encouraging to hear the situation may be getting better.

I brought up my example because it shows a friction-to-innovation ratio that seems way out of proportion and because the missed prior art makes the comparison unusually clear. The academic paper treated the idea as almost a throwaway -- I can imagine it as one of the first things to be dropped on tighter page limits. (By dim memory -- I ran into this over a decade ago.) More usually when a patent gets argued about, the interested parties make the matter harder to follow for the rest of us without the attention to spare. I think most of us, if we're fair-minded, when we read about one of these disputes should go "That _sounds_ like ordinary junk but the law is complicated, the patent is complicated, my opinion about this case won't be worth much unless I spend way more effort than I can justify." Here was a patent that just by chance I could easily judge, which didn't otherwise look different from others I've heard about. (Maybe I could dig up the patent number since I've been harping on it. I'm not sure.)

Having lots of friction from many small inventions helps the big established companies more. My own patent, it'd never have occurred to me to patent it -- but it was work for a tiny startup that needed a defense in this system. (I don't think this patent was a bad one as patents go. It got referenced by a VPRI STEPS paper.)

A patent system could encourage growth, or it could get mired in a rent- seeking equilibrium. It seems hard to tell which we've got, but I'd bet on the latter if we knew how to settle this.

There's also a freedom-of-thought cost, in that independent invention happens all the time, unlike the case with copyright. That is, even an unarguable finding of welfare benefit wouldn't settle the question if patents are _right_. It'd have to be a substantial benefit to offset the cost to liberty.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> If they wanted to get more extreme, they could take the initial filing fee as a deposit and only refund it with successful applications. That would help prevent the persistent applications and incentivize the USPTO to reject more. In the eyes of the examiner, the value of the patent has to be worth more to them through society than the individual filing fee.

<comment><USER4> Patent issuance is not based on their worth to society. Utility, Novelty, and Non-obviousness is all that's required.

Besides, how could an examiner evaluate the importance of a patent that has a 20 year term. How could anyone?

</comment></comment><comment><USER7> Part of me wonders whether a solution may be to do the following:

1\. Subject all patent applications to a two month public appeal period, where any objections from the general public can be received for the patent 2\. Then, these objections are reviewed by the patent examiners, with any patent applications that turn out to already exist in some form being invalidated 3\. And all rejected patent applications being subjected to a Git style diff setup, where anything with the same wording is immediately rejected before it enters the system.

Add this to a requirement to 'have some plan for manufacturing a product based on the patent (ie, no way to register patents just for licensing or court battles), and that'd probably go a long way towards making the patent system more fair and stop bogus patents getting approved.

<comment><USER4> 1 and 2. There are various public appeal periods but because they require examiner time and force applicants to pay attorneys to answer the objections they cost a lot of money.

3\. That would be some awesome ML to pull that off. Since by law the patent applicant is his or her own lexicographer - within reason, they can define the meaning of the words in their application

Requiring plans for manufacturing will never fly. Universities like to patent stuff. Also, via R&D an inventor can identify more than one invention but may have just enough resources to produce one, or they may have "plans" to produce them later, or license to partners for production, etc.

edit: typo - missed your number 3

<comment><USER8> "objections they cost a lot of money"

The premise being that low cost is optimal.

<comment><USER4> The person raising the objection (the petitioner), pays the USPTO fees of $6000 to $18000+ depending on the type of post issuance review requested. The more expensive and complicated ones are more trial-like and require more back and forth between the petitioners, the patent owners, and the USPTO. This requires more attorney time which makes them very expensive to pursue.

edit: to add - still very "cheap" compared to real trials

<comment><USER9> They should up the patent application fee, say by 50%. Then spend this extra money on reviewing objections from the public (if any). Then the public or interest groups can actually help find prior art.

<comment><USER4> Subject to some timing requirements, the USPTO allows for anonymous/third- party submission of prior art before a patent issues.

I think there is a small per document fee.

[https://www.uspto.gov/web/offices/pac/mpep/s1134.html#d0e121...](https://www.uspto.gov/web/offices/pac/mpep/s1134.html#d0e121728)

</comment></comment></comment></comment></comment></comment><comment><USER9> There should be a financial penalty to the office issuing a wrong patent is shown to be invalid later on. Right now the incentives are perverse, no reason to not let bogus or useless patents through.

Probably one would also need to have some of the patents reviewed by 3rd party within a year or two after approval, to ensure faulty patents are detected within a timeframe that makes the feedback relevant to the original examiners. Maybe pay the reviewer office based on number of parents invalidated.

<comment><USER4> This can't work. Patent law changes and is often retro-actively applied.

Though to your point, AFAIK examiners and their bosses hate to have patents they allow be overturned. It is noticed. But often, patents are invalidated based on changes to the law that occur after a patent was allowed.

<comment><USER9> One could exclude those cases? Of course cannot punish based on changes at a later point.</comment></comment></comment>


Is This the End of Recycling? - <AUTHOR> https://www.theatlantic.com/technology/archive/2019/03/china-has-stopped-accepting-our-trash <comment><USER2> No.

People forget that commodity prices go up and down. A source of materials that is very profitable to use in one year can be struggling the next.</comment>


Software Engineering Institute Makes CERT C++ Coding Standard Freely Available - <AUTHOR> http://www.sei.cmu.edu/news/article.cfm?assetid=495412&article=081&year=2017 <comment><USER2> [http://www.cert.org/downloads/secure-coding/assets/sei- cert-...](http://www.cert.org/downloads/secure-coding/assets/sei-cert-cpp- coding-standard-2016-v01.pdf)

<comment><USER3> The SEI CERT C Coding Standard previously released:

[http://www.sei.cmu.edu/downloads/sei-cert-c-coding- standard-...](http://www.sei.cmu.edu/downloads/sei-cert-c-coding- standard-2016-v01.pdf)

</comment></comment><comment><USER4> It would be great to see such elaborate guidelines to be accompanied with an integration into a linting tool, such as clang-tidy.

<comment><USER5> I thought there was a checker (based on clang) included by the CPP Core Guidelines [0], but I'm not seeing it there currently. Must have been external. I know I saw a tool that provided partial support, at least for GSL [1] (MS's library support of the the CPP Core Guidelines).

[0] [https://github.com/isocpp/CppCoreGuidelines](https://github.com/isocpp/CppCoreGuidelines) [1] [https://github.com/microsoft/gsl/](https://github.com/microsoft/gsl/)

<comment><USER6> Maybe I'm misunderstanding your reply, but the GSL _is_ the checker. It adds header constructs that create compile time errors based on bad practices. The whole point is that there is no need for an external tool.

<comment><USER7> _the GSL is the checker_

Well it's a bunch of headers declaring useful types and functions. If you don't use them the compiler won't complain and nothing is checked. I think the OP means something like static analysis.

I found a note in my C++14/17 TODO list where I typed 'clang-tidy might be able to give warnings for pre-c++14 constructs etc, see [https://reviews.llvm.org/diffusion/L/browse/clang-tools- extr...](https://reviews.llvm.org/diffusion/L/browse/clang-tools- extra/trunk/clang-tidy/cppcoreguidelines/'). Don't have time now to figure out what that is, but it's probably what the OP is after.

</comment></comment></comment></comment><comment><USER8> Pretty sane and modern when compared to other so called safety standards like MISRA that are in fact rules to satisfy proprietary legacy compilers.

</comment><comment><USER9> And C: [http://www.cert.org/news/article.cfm?assetid=465486&article=...](http://www.cert.org/news/article.cfm?assetid=465486&article=182&year=2016)

</comment><comment><USER10> I was really hoping the Wikipedia article on Roller Coasters was better. I wanted to write a piece of prose paralleling roller coasters and programming languages, but unfortunately, I have such little info to go on ([https://en.wikipedia.org/wiki/Roller_coaster](https://en.wikipedia.org/wiki/Roller_coaster)).

I feel like roller coasters started because people wanted to go fast, and this crazy death contraption was the only way how. Subsequently, ride operators, in order to avoid the death of their patrons, advised them not to stick their limbs outside of the car. Unfortunately, this mechanism only reduced injuries, but far from eliminated them. Not only do accidents occur because of the actions of the riders themselves, but ride operators can pose introduce risk not only by malice, but negligence. In extremely rare cases, riders can be injured by compiler failures.

Roller coaster operators soon learned that these contraptions were fundamentally unsafe, and the only way to induce safety was if the systems which drove the coaster had safety as a fundamental concern. Therefore they introduced these things like "PLCs" \-- a type of computer to make sure the operators could only do so much to endanger the riders. In addition, by following the basic rules of physics at build time of the coaster they further increased safety. Since people have stopped building coasters that relied on the rider's healthy sense of caution, and the operator's awareness of safety, they've become one of the safest ways to enjoy oneself. Or at least this is how I was hoping the story went.

</comment><comment><USER11> To anyone experienced with CERT C++: are there rules in the standard that are critical for secure code, but not easy to discover without extensive experience?

For instance, I went through the I/O section, and most of the rules seem quite intuitive even to a novice C++ programmer like myself.

<comment><USER5> I've not read through the CERT C++ rules (yet), but I highly recommend reading "Secure Coding in C and C++" [0]. Expectedly, there's a good discussion on bounds checking. But, nearly half the book is dedicated to integer underflow/overflow (and signed/unsigned) issues (which most devs either ignore or are oblivious to). It's not a panacea, but if you're write C/C++ without thinking about security and how things can go wrong, it can be a real eye opener.

[0] [https://www.amazon.com/Secure-Coding-2nd-Software- Engineerin...](https://www.amazon.com/Secure-Coding-2nd-Software- Engineering/dp/0321822137/)

<comment><USER12> I haven't read the book. What's the gist of the recommendations for addressing those issues? SaferCPlusPlus addresses the signed/unsigned issue by providing compatible substitutes[1] for "int" and "size_t" that automatically handle it. And it addresses the integer underflow/overflow issue by recommending another compatible "int" substitute[2] and introducing the concept (but not yet the implementation) of "quarantined" types for untrusted input values.

[1] [https://github.com/duneroadrunner/SaferCPlusPlus#cint- csize_...](https://github.com/duneroadrunner/SaferCPlusPlus#cint-csize_t-and- cbool)

[2] [https://github.com/robertramey/safe_numerics](https://github.com/robertramey/safe_numerics)

<comment><USER5> A lot of it involves techniques for detecting that overflow will occur (without actually doing the computation - because in C/C++, once you've signed overflow, you're already into undefined behavior).</comment></comment></comment></comment>