Many games are held together by duct tape - <AUTHOR> https://www.polygon.com/2020/1/13/21064100/vvvvvv-source-code-game-development-terry-cavanagh-release <comment><USER2> Watching speed runners play through games is a great way to visualise not only this aspect (that games are flimsy at best), but to visualise the same practice in any software - if you don't code defensively, often a simple mis- input breaks the game.

A common pattern in many speed runs is finding some glitch through a door, and then the game logic kicks in and says "you are past this door, so you must have got the key".

If you are curious, watch the five or so minutes of this speedrun: [https://youtu.be/0Ct8n1CClUM?t=3072](https://youtu.be/0Ct8n1CClUM?t=3072) First, the player jumps through a game world, getting to a race he shouldn't be able to get to yet. Second, he glitches into the "solid" wall, which is just a thin wall around the racetrack.

<comment><USER3> Thanks to Breath of the Wild, I've recently enjoyed watching a few speedruns and it's amazing to see the number of glitches in BoTW. Check this out [https://www.youtube.com/watch?v=JEtHpCfi_DE](https://www.youtube.com/watch?v=JEtHpCfi_DE)

I also don't understand how anyone can accept speedrunning through glitches as a world record, but I guess if everyone does the same run with similar or the same glitches then it's fair? Seems like it just becomes a race to know every glitch in the game.

EDIT: I just want to say thank you to the replies that explains the mechanics and categories of speedrunning.

<comment><USER4> Playing the meta is part of the game. If you're not loading in other code or using 3rd party assistance, it's fair.

Understanding the buy strategy in CSGO doesn't make you a "cheater", in means you understand how to stretch the game to it's limits.

Mike Vrabel taking penalties to burn the clock might seen unfair, but he was just leveraging the rules as written to improve his chances of winning.

<comment><USER5> > Understanding the buy strategy in CSGO doesn't make you a "cheater", in > means you understand how to stretch the game to it's limits.

the economy in cs is a core mechanic of the game. I don't know of any buy strategies that are even close to considered "exploits".

a better example would be illegal boosts. in the old days, there were many OP positions you could get into by boosting on top of other players (or even throwables in midair). each competitive league would have its own lists of illegal boost spots for each map. boosting on throwables was almost always illegal. you could also do stuff like defuse through walls, which was always illegal.

bunnyhopping was something of a grey area. some leagues allowed it, while others didn't. it was eventually patched out of the default game settings behind an svar.

allowing literally anything that didn't involve loading external code would have severely broken cs:source. there were even ways of replacing assets that would effectively give you wallhacks without injecting any code. these decisions always comes down to "how much does this deviate from the balance designed by the developer?" and most importantly "is the game still fun with this behavior?"

<comment><USER6> All good points, but additionally: sometimes it's good to wait and see where a glitch takes a game, rather than banning it straight away because it 'breaks' the version of the game that everyone has been playing so far.

A classic example is the Quake series, where the movement mechanics that gave the games lasting appeal were all originally accidental. (And Carmack even briefly patched strafe-jumping out of Q3, before quickly reverting -- but only because his fix caused other problems: [https://www.rockpapershotgun.com/2014/09/02/quake-3-john- car...](https://www.rockpapershotgun.com/2014/09/02/quake-3-john-carmack- strafejumping/))

David Sirlin also writes well about this sort of thing (with more of a focus on 'cheap' use of intended mechanics), though his tone could be offputting to people who think hyper-competitive videogaming is a bit silly: [http://www.sirlin.net/articles/playing-to- win](http://www.sirlin.net/articles/playing-to-win)

<comment><USER5> I totally agree. "skiing" in tribes is another classic example. fun mechanics take priority over everything. after all, it's a game!

as an aside, strafe jumping is pretty similar to bunnyhopping in cs, probably because the source/goldsrc engine had its roots in quake code. I brought it up as a grey area. it's a fun mechanic, but timing is really important on cs maps, and it definitely breaks the balance on some of them. personally I think it was a mistake for valve to patch it out of the vanilla game (leagues, 3rd party servers, and matchmaking could have just disabled it through the svar), but that's all history now.

my main point is that the mere fact that games take place in virtual environments doesn't make whatever the client/server permits the ultimate law of the land. just like in real life, the rules of the game are the intersection of what's possible and what's fun.

</comment></comment></comment></comment></comment></comment><comment><USER7> Ex-Game dev here: shipped many titles on console (AAA and some zzz titles).

When comes time to shipping a game, the crunches, pressure and overall stress is through the roof. Most everything goes at that point: duct tape, hot glue, bobby pins and toad spit. And if you disagree with management over these 'not so best practices' (in order to ship faster...) they will find someone to do it and you could be out of a job.

That being said I would not trade my time in that industry for anything else. It's basically the BUDs of programming (of course I'm biased)

Good times!

<comment><USER8> What does BUDs stand for?

<comment><USER7> [https://en.wikipedia.org/wiki/United_States_Navy_SEAL_select...](https://en.wikipedia.org/wiki/United_States_Navy_SEAL_selection_and_training)

Basic Underwater Demolition/SEAL (BUD/S) Training

</comment></comment></comment><comment><USER9> I run a small MMORPG and I'm considering open-sourcing the whole thing but the code is a complete mess. The source code of VVVVVV is a work of art in comparison.

What holds me back are 1. I'm ashamed to reveal the monstrosity 2. I'm afraid the code is too messy for anyone to be able to make contributions 3. it will make it much easier for hackers to find exploits.

It's a shame because I think the game would be really cool as an open source project.

<comment><USER10> Messy code that produces a valuable product is better than beautiful code that does nothing.

<comment><USER11> Or worse, the pursuit of beautiful, well-tested, aesthetically-pleasing code that is never finished and never shipped.

</comment></comment></comment><comment><USER12> Anyone working in the industry knows that the fact that software works at all is flabbergasting.

</comment><comment><USER13> As a counterpoint, the Quake -> Quake 2 -> Quake 3 original open source releases are remarkably clean. Quake 2 in particular is very minimalist and the game was developed in something like 10 months.

Granted, it's not really fair to compare anyone to the id software team of the time. But the requirements of the Quake series, basically a BSP renderer that is easy to modify and extend, probably forces it to be extensible and clean.

<comment><USER14> The fast inverse square root algorithm Carmack invented for Quake 3's lighting is the definition of elegant code

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

<comment><USER15> It's EFFICIENT, but it's the opposite of elegant. If you looked at the code you would have no idea what it is doing or meant to do.

Elegant code should be simple, readable, and apply some leverage to make a difficult problem more clear.

</comment></comment></comment><comment><USER16> A friend of mine in gaming though had an insight I found illuminating. The difference with games though is that there's often an element of "One and Done" in that unlike much of web development, the starting from scratch for the next generation is more of a given. There is less need for long term support as games are expected to meet its twilight much sooner. With web development however, it is a regular risk assessment and there must be a true meeting of minds to decide that a rewrite is worth it.

<comment><USER17> > There is less need for long term support as games are expected to meet its > twilight much sooner.

I think this is true for the majority of games.

But I wonder if it remains true for the most successful.

e.g. GTA V released in 2013. Apparently as of 2018 it saw $6B in revenue. Though, surely a lot of this has to do with the new content they introduce to incentivize microtransactions.

Fortnite was a paid early-access game in July 2017, but had a free-to-play battle-royale mode by September 2017. Minecraft came out of beta in 2011.

I can agree with "just ship it, quality of code is not a concern" for an initial release. I wonder how much bad code affects big and successful products, though.

e.g. Ubisoft's Ghost Recon Breakpoint was very buggy, even though it looked like an iteration on the Ghost Recon Wildlands game just two years earlier.

<comment><USER18> I'm not sure about the others but Minecraft's code was notoriously bad for years, but it didn't seem to hold it back.

<comment><USER19> Honestly I think the bugs _helped_ Minecraft—bugs in the terrain generation made for interesting scenery that was popular to share, and bugs in the multiplayer code helped build the community as people shared how to get things like minecart tracks to work.

</comment></comment></comment></comment><comment><USER20> I think code quality is important, and big studios make a buck on having clean and workable code they keep improving over time.

That being said, and especially on indie games like VVVVVV, hammering in a cool little detail gives the final product much more value than having clean code.

That's why big engines with mature coding patterns sometimes are not the way to go to make a cool little thing. Making novel mechanics (e.g. time reversal in Braid, or the super tight controls of Super Meat Boy) with an existing engine, while possible, would probably be a PITA.

The "hackability" of the engine you use can allow you to be more creative, even if a bit messy to maintain.

Back in the days of flash, I'd probably use a simple display list engine (flixel comes to mind) to do the heavy lifting, and hack away with those basic building blocks.

Nowadays, I was surprised by the relative hackability you get with godot[0], while still being able to tap into what you can call a mature engine. If you like to make small games, you owe it to yourself to check it out.

[0]: [https://godotengine.org/](https://godotengine.org/)

</comment><comment><USER21> Writing hacky code can be liberating though. I really enjoyed hacking together things in the pico-8 last year. Globals? Fine. Neat function names? Nah. Variable names? 'a' will do.

</comment><comment><USER22> Wow a 3440 line switch statement for processing game state!

[https://github.com/TerryCavanagh/VVVVVV/blob/master/desktop_...](https://github.com/TerryCavanagh/VVVVVV/blob/master/desktop_version/src/Game.cpp#L605)

<comment><USER23> And it works! I learned a lot about preventing magic with this here: [https://gameprogrammingpatterns.com/state.html](https://gameprogrammingpatterns.com/state.html)

For me - and I mostly do frontend apps now - I always advise to go for state pattern instead of complex if/thens. Thanks to the aforementioned article.

<comment><USER24> Does Redux help with things like this?

<comment><USER25> If you have enough discipline, sure. Finite state machine tools like XState are more strict about this.

</comment></comment></comment></comment><comment><USER26> When you are making a game, priority number one is always that you are indeed making a game, and not how.

(substitute "game" for anything you want to do)

I love elegant code, but in the end it's never _more_ important than the game itself.

<comment><USER8> Sure this goes if you're a one man team. But the more people share hacky code it quickly can turn into a nightmare to work with.

</comment></comment><comment><USER27> This is very true. I created an open source framework to help developers build scalable real-time systems and I tried to focus on multiplayer games at one point; I thought it would be a good idea to ride the wave of web-based multiplayer .io games by targeting those developers but I ended up realizing that they're better off just using raw WebSockets. My framework could only help in terms of producing the initial prototype.

The profit margins on ad-sponsored web-based multiplayer games are paper thin. They don't care about code structure or cleanliness at all. If someone can make fugly code that performs 10% better, that can make the difference between a profit or a loss or it can mean doubling profits/earnings from the game.

This is very different from most software businesses where even a solution that performs 10x worse is still acceptable if it makes for cleaner code that is easier to maintain and can handle changing requirements better.

Micro-optimizations and clean code are mutually exclusive IMO. Like for example, people may be tempted to send JSON objects with nice descriptive properties like 'direction', 'keyCode', etc... But in the end it's faster to just send a raw string or binary packet without any property names; just pass raw integers directly in a certain order and the receiver decodes the message assuming a certain order. This is extremely inflexible at the protocol level but it performs really well (I.e. you can't easily add new properties later or make some of them optional without breaking the current protocol).

</comment><comment><USER28> Games, websites, and everything else - both Apple [1] and Dropbox [2] got passwords wrong in the last decade. I am in awe of the NASA programmers who have virtually no bugs [3].

[1] [https://www.theguardian.com/technology/2017/nov/29/macos- hig...](https://www.theguardian.com/technology/2017/nov/29/macos-high-sierra- bug-apple-mac-unlock-blank-password-security-flaw)

[2] [https://www.cnet.com/news/dropbox-confirms-security- glitch-n...](https://www.cnet.com/news/dropbox-confirms-security-glitch-no- password-required/)

[3] [https://www.fastcompany.com/28121/they-write-right- stuff](https://www.fastcompany.com/28121/they-write-right-stuff)

<comment><USER29> I think you may not realize how many bugs NASA programmers are making. For instance, see the fairly simple mistake made on Deep Impact spacecraft:

[https://en.wikipedia.org/wiki/Deep_Impact_(spacecraft)#Conta...](https://en.wikipedia.org/wiki/Deep_Impact_\(spacecraft\)#Contact_lost_and_end_of_mission)

There are no doubt more, that don't cause the loss of an entire spacecraft.

<comment><USER30> Every time I see "Deep Impact" in the context of NASA I end up thinking of the Climate Orbiter; where, due to an issue with unit conversion between metric and SI they turned it into the most expensive lawn dart to ever leave the solar system.

</comment></comment></comment><comment><USER31> I'm sure there are oodles of creators out there who hold back their source code because they don't want to deal with being shamed. We should be using these opportunities to learn and grow together, and not as a soundboard to feel good about how much better we are than someone else.

</comment><comment><USER32> Someone posted this talk by Johnathan Blow on a story a week or two ago and it seems worth sharing here:

[https://www.youtube.com/watch?v=pW- SOdj4Kkk](https://www.youtube.com/watch?v=pW-SOdj4Kkk)

</comment><comment><USER33> I've never thought about it but it makes a lot of sense. Just thinking about the few times I had to write some hacky code to get something to work and given the complexity of video games it is kind of expected.

</comment><comment><USER4> This I what made the 1990s era games so full of non-critical bugs AKA "glitches".

The ceiling of complexity was raised waaaay over that of the previous generation of tech, but the techniques used by developers didn't advance nearly as far.

So you have a lot of _if this value == this number, load this scene_ (OoT) or _if this value is greater than this limit, cycle it back to the lowest possible value of the range_ (Civ, Nuclear Ghandi)

Now, bugs in big games tend to be critical crashes because the tooling and techniques have standardized and caught up to the complexity ceiling

</comment><comment><USER34> It's interesting to see how duct taping a game inside out can result in absolute success once you ship something valuable. It can be really thrilling and you can get away with it specially if you're working alone, which for me is the best work. It's another story entirely if you're on a team, coding together a product that must be maintained and improved for years. I work on both sides, and I can say that I only have real fun when I'm coding alone. Though learning to work in team is a great skill as well. I'm specially careful with code architecture and readability, but sometimes when you're on the flow, the zone, the code just flows as well;

</comment><comment><USER35> So is almost every other piece of software. I would like to see an analysis of commercial closed source software on how many of then use good practices, have clean code etc. Not the ones that filled in the [] we y use TDD in the CIO monthly questionnaire. Maybe I meet the wrong companies I have to work or integrate with, but in my experience it is not very far from 0% (but it is >0 luckily). I met one company last week who do everything right, but only for projects over 500k where over 10% goes into those practices, otherwise there is simply no money for the overhead...

</comment><comment><USER36> The code sample they have there that is "messy" doesn't look that bad to me. The reality is that almost all the code that runs lots of important things is a complete spagetti.

</comment><comment><USER37> > "Games aren't just an ordinary piece of software, they are a complex beast > that require many different disciplines to successfully ship, and often on > timelines that require sacrifices to be made," said game developer ...

Is this any different from any other type of software? What is this "ordinary" software that doesn't require different disciplines, or have timelines?

<comment><USER15> It's not the most complex or hardest kind of software, but it does have special concerns.

Dates are huge; you have to have a good E3 demo, and you (often) have to ship in time for Christmas. These dates can not slip.

There's also a lot more art / interfacing with artists / art tooling and collaboration than a typical software project.

</comment></comment><comment><USER38> The real differentiation to games from most other software is just how little correctness actually matters. It arguably doesn't matter at all as long as it doesn't produce feel bad moments lost items or lost progress.

</comment><comment><USER39> If AIs of today make a heap of code (if you say it's data, I say data is code is data) that is really a spaghetti of a code that happens to seemingly achieve a goal, maybe game developers are already a bit like that ;)

</comment><comment><USER40> VVVVVV's code is still better than the source code of Descent - holy hell, was that codebase a mess in areas, and virtually no comments in the complex parts of the 3D engine...

</comment><comment><USER41> Related from a few days ago: [https://news.ycombinator.com/item?id=22011358](https://news.ycombinator.com/item?id=22011358)

</comment><comment><USER42> change games to software

</comment><comment><USER43> Nit:

I wish people wouldn't mention programming and computer science in the same essay, unless it's something very technical such as discussing synchronization algorithms.

Most programming isn't science. Most programming isn't even engineering. Most programming is contracting or DIY tinkering.

We use ridiculous metaphors like constructing an airport, when most programmers are tradespeople working on renovations.

Have you ever inspected the work of a tract house builder? It's awful and usually plays fast and loose with building codes.

When an indie teaches themselves to code, we get the same result as a homeowner teaching themselves to renovate. That's not a bad thing, but nobody swapping ordinary outlets for outlets with USB-C ports is thinking about Maxwell's equations.

<comment><USER44> Nit:

Actually most programmers I know are vastly intellectually overqualified for their jobs. We are talking like science PhDs.

It's not "tradespeople working on renovations" it's more like rocket surgeons making mud huts.

<comment><USER4> Sounds like they were mislead as to what their career prerequisites were.

Or we're just churning out too many Phds

<comment><USER45> Specifically job requirements are incorrect. Which big companies have figured out and are hiring for cheap in China and India.

<comment><USER44> Is that really whats happening? The way I see it is the old guys without even degrees worked on higher quality code than their younger counterparts with increasing levels of education.

I think the issue is probably touched on by something like " bullshit jobs" by David graeber

</comment></comment></comment></comment></comment><comment><AUTHOR> To be fair,everybody in web development knows the same thing is true for the internet.

<comment><USER46> s/web/software/

s/internet/everything/

I can't tell you how many times I have to reteach myself this lesson. I'm not advocating for writing sloppy/bad code on purpose but I fall into the trap way too often of trying to make my code a work of art or overly-clever. No one cares, don't spend twice the time to try to abstract something within an inch of its life. Write working code and move on. Once you've done something 4, 5, 10, 15 times then you can look for an abstraction.

Really I think I use refactoring or "stressing over the best way" really to just be a way to procrastinate and tell myself I'm doing something useful or dare I say noble. Of course in practice it's often neither.

<comment><USER47> Sounds more like too little care rather than too much. Of course it also depends on how much maintenance is going to occur on that code. I think in production code one should already look for an abstraction if something is done twice. The goal is not to create a work of art or an abstraction that stands the test of time. It is just to remove some duplication, distribute code a little better over functions, give things names that are somewhat better and so on. If one does a bit of that every day one is never going to be in a horrible mess. One problem is that people sometimes think that refactoring is all or nothing. You either refactor nothing or you go all the way to adhere exactly to design patterns. Neither of these two extremes produces very good code. The middle way is where the good code is.

<comment> pure-awesome I used to think that if something is done twice, it should be abstracted.

Now, I'm a bit more careful. There's a pretty famous quote by Sandi Mentz: "Duplication is far cheaper than the wrong abstraction."

[https://www.sandimetz.com/blog/2016/1/20/the-wrong- abstracti...](https://www.sandimetz.com/blog/2016/1/20/the-wrong-abstraction)

Make sure that you're picking the write way to think about the task at hand, rather than blindly following DRY.

There are times when even a single instance of a code call would be made clearer with abstraction, and there are times where having the same piece of code duplicated multiple times (or duplicated with one piece changed) is far clearer than trying to abstract it.

This Reddit Comment also has an interesting take: [https://www.reddit.com/r/programming/comments/5txp5t/duplica...](https://www.reddit.com/r/programming/comments/5txp5t/duplication_is_far_cheaper_than_the_wrong/ddq5ykf)

> The main purpose of abstractions is not to remove or reduce duplication, and > not even to make code "reusable"; it is to make semantic patterns and > assumptions explicit and, if possible, first-class.

The further comments provide more discussion.

\---

I agree with the rest of your comment that refactoring and code-cleanup should be done in pieces and that, as with everything, striking the right balance is key.

<comment><USER47> If there is any article that I absolutely hate it is 'Duplication is far cheaper than the wrong abstraction'. A somewhat minimal abstraction has very little chance of being wrong. And if it is wrong, is it really that difficult to know? It has a chance of needing some improvement, but what code does not have a chance of needing some improvement? If one goes the full monty and introduces three design patterns every time that two lines are duplicated sometimes one will certainly end up with, perhaps, not so much the wrong abstraction as an overly convoluted one. This acticle is the excuse for programmers everywhere not to fix their messes. It is 100% opposite to what programmers need to hear.

<comment><USER19> > It is 100% opposite to what programmers need to hear.

Maybe you know very different programmers than I have known, but if I had to compare what has been a bigger source of problems—missed abstractions, or abstractions that make things more difficult for no benefit, it's definitely bad abstractions almost every time.

<comment><USER47> Well, I worked for quite some time in a code base that was basically one big ball of missed abstractions. Maybe I was traumatized a bit by that. I also have seen wrong abstractions, but not because there should not be an abstraction. If people had actually written abstractions that removed duplication instead of the ones that they half-understood from the design pattern book, they would have had come up with better ones. Duplication is in fact the best way to find the correct abstraction. The article makes this sound suspect but it really is not. The whole literature of design patterns is basically unneeded. If one just follows the path of deduplication one will discover all of them one by one and one will have applied the right one in the right place. Maybe there is some value in noticing that one still has to keep thinking and keep an eye on the likely future and not blindly do this but that is no more than a small footnote to the main message which is that you will find all the right abstractions by removing duplication. It is quite right that in TDD the refactor step is often described as the removal of duplication.

<comment><USER45> You have not worked on bad enough code base.

Duplication is a problem as the different implementations inevitably drift and get repeated bugs, but simple reduplication results in the rather known problem of RavioliCode( _) of thousands low cohesion functions. Which ends up unreadable thus bug prone and slow to develop.

Use of the right patterns or rather paradigms reduces amount of code in general, thus reducing duplication.

Wrong patterns are hard to actually change especially on change averse projects. The more widely used the wrong design is, the harder it is to change as the hacks on it multiply. Even worse if the wrong patterns (not code) are duplicated.

These require in depth rewrites to which bosses are usually allergic, which are very hard to pull off on bigger teams too. Incredibly hard to coordinate.

\-- (_) [https://wiki.c2.com/?RavioliCode](https://wiki.c2.com/?RavioliCode) \- can happen in functional and structural code too.

<comment><USER47> 'You have not worked on bad enough code base.'

You know, it is a bit pretentious to read a few sentences that someone wrote and then conclude a lot about what they know or do not know.

And I actually do know what ravioli code is. I think ravioli code is mostly a good thing. Also the people on the c2.com page are not uniformly negative about it. Not all code should be ravioli code but in a project with complex requirements there should be quite a bit of ravioli code. It is true that ravioli code is not easy to understand if you are a newcomer to a project but really if the context is 'a project with complex requirements' why would anyone think that it is easy to get into, no matter how it is written?

Another thing is that ravioli code absolutely needs automated tests.

'This style maximizes maintainability by old hands at the expense of comprehensibility by newcomers.' Maintainability is exactly what I want maximized. It sounds a bit bad if there are no developers that are there for a long time. But in that case you are cooked anyway, I would say.

<comment><USER45> Main problem with the style is lack of overarching structure and cohesion.

Preferable state is high internal cohesion and low coupling. Most code is opposite. Ravioli is when you trade high coupling without introducing cohesion, which is structure. Typical state after dumb refactor rather than rework.

Simple extraction of functions does not get you anything (if done well within a module, maybe increases cohesion), while making them reusable modules trades reduced cohesion for increased coupling, which is bad.

If you deduplicate too much you suddenly cannot change anything simply... As every place that got deduped is now coupled to one implementation. Once you need some special care, you get to replicate it again oftentimes.

Only true primitives are really worth it to not replicate and parts of code that won't change. (Ask the crystal ball again.)

See if deduplicaton gets you any of useful high level designs, like MVC, event-driven, reactive, message based. Without overarching design, you end up with a mass of locally useful ones that together are incompatible thus requiring lots of different, unique glue code.

The big mistake people do is to equate design patterns with code patterns. Which is what the silly GoF book did a lot. For example "fire and forget background parallel tasks" is a design pattern. Reactor (executes Strategies to deal with Events) is one while Singleton or Context are not. Event also is not. Etc. Generally anything that doesn't actually _structure_ anything is a code pattern.

<comment><USER47> It is quite possible to get an MVC by deduplicating things. Image we have two tables that display some data by the same means, e.g., a web page. This will be about the same code twice. For instance, both will iterate over rows and columns. Removing that duplication will give you an M and a V. Then you may also have to react to some events in about the same way. Remove that duplication and you have a C.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER48> "Perfect is the enemy of the good" applies to computer programs just as much as anything else.

</comment><comment><USER49> I recently found myself trying to describe modern software techniques to a layman, who is a carpenter.

"Its like this - you're hired to build a house. First, you have to go get someone motivated to harvest the raw materials for you - designs, logic, etc. - which will then be turned into the 'raw wood' that holds up the walls and keeps the roof on. Then, when that person is busy getting the materials cut, you start building the tools you know you're going to need, to get the walls up and strung together. You don't have these tools yet, because you left all the previous ones you've worked with at a previous construction site. The reason for this is that you are going to use the tools to put the walls up, sure - but then you're going to glue all the tools in place to make sure the walls stay up. That glue is the most powerful stuff in the universe, but it will fail catastrophically if you don't put the tools at just the right angle in the glueball .."

Basically, you glue all the new tools together, cover them in wood, and leave them in place so that the thing doesn't fall over ...

<comment><USER50> For the sake of anyone who uses your software, I hope you're better at writing code than coming up with metaphors.

<comment><USER49> Exactly. That's software development for you. :P</comment></comment></comment>


Show HN: Armeria 1.0.0 released – Your go-to microservice framework - <AUTHOR> https://armeria.dev/ <comment><AUTHOR> Hi! The project lead here. Please feel free to ask questions about Armeria!

</comment><comment><USER2> Great package to support both GRPC and Thrift.

</comment><comment><USER3> I think it's good prject!!

</comment><comment><USER4> Any metric-collector support?

<comment><AUTHOR> Armeria supports metric collection via Micrometer. Micrometer supports wide range of metric collection systems, including Prometheus, Datadog, etc. See [https://micrometer.io/](https://micrometer.io/) for more information.

</comment></comment><comment><USER5> Congrats Trustin and team...

</comment><comment><USER6> great job you guys done.

</comment><comment><USER7> netty, gRPC! go go-</comment>


Browsers, not apps, are still the future of mobile - <AUTHOR> https://medium.com/developer-ecosystem/browsers-not-apps-are-still-the-future-of-mobile-e42f661f12eb <comment><USER2> I really like native apps, but I think security is eventually going to be a big driver of many apps turning towards the mobile web or at least some kind of universal platform (Microsoft with UWP and Oracle with MCS both have this).

The incredible demand for features from customers without a lot of care to much else other than maybe uptime is going to shift.

People handing over data, wanting to interact with software, etc will be limited either by shifts in customer sentiment or government mandate. For instance, perhaps every release of software has to be signed off by the CTO who is legally liable for the security of the software unless he took reasonable precautions, similar to environmental law.

Anyway, securing web apps is much easier due to the knowledge we have about how they should work and the fact that it's an older, more well known platform. The RSA conference recently that leaked all of the attendees data was a stitched together mobile app not surprisingly.

Anyway not sure if it's going to be a shift one way or the other 100%, but however it plays out security is going to be a big driving force in platform choice in ways it hasn't been previously.

</comment><comment><USER3> I'd love to see actual usage statistics because I don't think this is true based on my own observations. I myself avoid most apps since they're packed with analytics libraries but the common user seems to prefer actual apps on mobile. It's a request my team frequently gets even when our website is fully optimized for mobile usage.

<comment><USER4> I think it's a trained behavior for a lot of users to default to wanting a mobile app instead of going to a mobile site because, at least in my experience, 9 out of 10 times the mobile web experience is flaming garbage and just infuriates me. I'm not including the sites that create specific pop-ups to use their mobile app either, like ignoring those I still find most sites just don't feel good on mobile compared to if they have an app version available.

<comment><USER5> I'm not sure it's just trained behavior. There are also things like:

\- permission and privacy controls work better for native apps

\- native apps can run in the background (I'm not familiar with backgrounding a specific site and letting it work or send notifications).

\- controlled app lifecycle, with a webapp all the latest garbage is always getting pushed to me. With a native app I can disable automatic updates and stick with a version (until the underlying API breaks, which is unfortunately often in my experience).

<comment><USER6> Also generally speaking, apps are better in that they're nowhere near as bad as the web can be when it comes to being intrusive/annoying/demanding, and oftentimes even ads are better behaved in apps - it's usually just a single banner or occasional interstitials, and even then there are limits on how much they can do automatically (no pinball machine redirect chains and nothing can force the user to leave the app).

This is because it behooves app devs to ensure that both their apps and any ads in them are reasonably well behaved, because if they aren't, the user will uninstall the app with zero remorse, find a better behaving alternative, and likely never return. There's not even a chance of some random link they encounter bringing them back to the app.

In short, most apps lend users a greater sense of control, whether it's actually true or not (I'd say it's a half truth).

Obviously the fix for this is for browsers to pull in the reigns on what's possible in the name of improving user experience, placing native app-like restrictions on web apps and ad networks. This seems unlikely though, given how it would probably spur the wrath of many web app devs...

</comment></comment></comment></comment><comment><USER7> With native apps, it's at least possible to preserve some semblance of privacy and control over your own data. Granted, most native apps are just thin UI layers on top of a REST API, but certain things aren't possible to implement like that without putting sensitive data in the cliud. OTP generators and password managers, for example. The native app data sandbox offers a level of security not possible in a webapp.

<comment><USER8> I don't get this at all. You seem to allude that the "native app data sandbox" gives some sort of security or privacy not possible in a webapp, but webapps are restricted by default, able to run without being installed on your system and are run in a much stricter sandbox than a native app is.

If you value privacy and security I don't see anything that would favor a native app over a webapp. I do understand the performance and native integration arguments for a native app, but saying a native app by definition offers more privacy or security seems odd.

<comment><USER9> 'web apps' can be even further restricted by using browser plugins (e.g. privacy badger, noscript, ublock origin, etc). You don't get that kind of control with native mobile apps unless you have access to the source code and can modify/build it.</comment></comment></comment>


BBC to Project the UK General Election Results on to Big Ben Tower - <AUTHOR> http://infosthetics.com/archives/2010/05/bbc_to_project_general_election_results_on_to_big_ben_tower.html

<comment><USER2> Here's the link to the actual announcement - [http://news.bbc.co.uk/2/hi/uk_news/politics/election_2010/86...](http://news.bbc.co.uk/2/hi/uk_news/politics/election_2010/8656578.stm)

 _"No clue why the Photoshop guy could not update the "2005" reference with a more appropriate year label."_ Well, given that was the last election and those were the results, I would say that "no clue" is accurate but perhaps not applied to the "Photoshop guy".

Overall, I'd call this a compelling work of art for taking election results back into public spaces rather than 24 hour news channels (like, ironically enough, BBC World). It's a shame the UK is looking at a hung Parliament, thereby depriving this real-time (ish) counter of a victory moment.

</comment><comment><USER3> Why?

I guess it's cool to waste money and not have to worry about losing customers or getting your budgets cut.

I'm with one of the posters there - it will be more interesting to see how many adverts are overlayed on the projection.

<comment><USER4> This is a major political moment in the UK. You might as well question why CNN had their 'holographic interview' toy at the US election. It's a huge media event, people want to do something a bit special.

Believe me, the BBC are deeply concerned about getting their budgets cut, depending on the results on Thursday.

<comment><USER3> CNN is a business. The BBC is not. CNN are welcome to spend their money however they see fit; BBC is not warranted to increase viewer numbers but to educate, entertain and inform. Now you might argue it's entertaining but it just seems an antisocial gimmick to me.</comment></comment></comment>


Why is elliptic curve cryptography not widely used, compared to RSA? - <AUTHOR> https://crypto.stackexchange.com/questions/1190/why-is-elliptic-curve-cryptography-not-widely-used-compared-to-rsa <comment><USER2> By transactional count given that CloudFlare do ECC for their sign-on-the-fly DNS product, Its used far more than people might realize.

I shifted from openssl enc -blowfish to enc -aes256 recently, if somebody can explain why I should make another shift, I would do that.

for the ephemeral session keying in SSH, I would like something of low cost. I used to use ssh -c rc4 for in-house scp commands, the speed difference was visible. I use mbuffer pipes now for things like rsync but they are nothing like as convenient as ssh/scp, but significantly faster.

ZFS moved compression family. If you'd asked me if lzma was going to get traction I would have said no, but it only takes a few people changing code in common use to have an impact.</comment>


Wire: Compile-Time Dependency Injection for Go - <AUTHOR> https://github.com/google/wire <comment><USER2> Dependency injection containers have proved to be useful and even though Wire seems like the most promising DIC solution in Go, right now, it does not appear to add significant value in most Go use cases. It's also important to remember that dependency injections do not require a container. Surprisingly, many people tend to forget about this, maybe because they get used to frameworks first.

See our reflection on Dependency injection in Go [https://banzaicloud.com/blog/dependency-injection- go/](https://banzaicloud.com/blog/dependency-injection-go/)</comment>


The World Wants More Camel Milk - <AUTHOR> https://www.bloomberg.com/news/features/2018-05-23/the-world-wants-more-camel-milk-australia-can-help <comment><USER2> I wonder whether the camels will begin to be farmed intensively, the same as cows?

To get cows to produce milk for us, they are artificially inseminated or introduced to a bull once a year to produce a calf. If the calf is born female, she may be raised as part of the dairy herd. If the calf is male, it's off to the slaughterhouse or strapped into a pen the size of a cupboard for a few months before slaughter: that gives us veal. Three months after birth, the cow is inseminated again for the next year's cycle.

The cows are distressed at being separated from their newborn young, year on year, and most only live 4 to 5 years (natural lifespan would be around 18), before being sent to the slaughterhouse themselves: that gives us leather, cosmetics and a hundred other things.

</comment><comment><USER3> This article misses out the most important part about Camel's milk. You can freeze it.

If you've ever tried freezing cow milk and thawing it you know it's ruined. But Camel milk can be frozen and thawed without changing the taste. I've had it a couple of times and, as a regular cow milk drinker, have a hard time telling the difference.

</comment><comment><USER4> There is a camel dairy west of San Diego. They have tours one weekend a month if you want to go.

[https://cameldairy.com/](https://cameldairy.com/) — they also win the obvious url prize.

Apparently it is illegal for them to sell the milk for consumption, so they turn it into skin care products.

<comment><USER5> Wouldn't the obvious URL be dromedairy.com :)

</comment></comment><comment><USER6> The world maybe, Germany certainly not. On our last German Perl user group meeting an old ex-organizer presented their struggles with the German authorities to import a small amount of camel milk to Germany from Israel. We wanted to make ice out of it, and we are obviously very fond of camels, being our mascot. Even if we got first permission to import camel milk, in the end the veterinarian refused to hand it over and it was destroyed in orderly fashion. We had to take the costs. I hope they will put up the YouTube video soon of this camel milk story.

</comment><comment><USER7> Having been around camels, they can truly be foul tempered creatures (while 1% are quite lovely) and I do not envy anyone who works with them daily.

On a side note, I am going to go try some camel milk now. But this absolutely seems more like a fad then reality. I mean goats milk seems to have a solid market share (and I am a sucker for carrageenan free chocolate goats milk) but unless camel milk tastes like a fresh macaron, I don't know if I would go out of my way or pay a premium.

<comment><USER8> At least in France, goat milk is highly popular, same with sheep milk. We make so many cheese from it ! And we're not alone ! Plenty of cultures around the world make goat and sheep cheeses, they're delicious !

Other than that, I don't think anyone drink sheep (or goat) milk in France. I may be wrong, but I assume if anyone did that'd be pretty exceptional.

That being said, why am I commenting on camel milk articles when I should be finishing this program -.-

<comment><USER7> I do love goats milk cheese ! I think I'm going to have to make a Trader Joe's run...

Good luck on your program!

</comment></comment></comment><comment><USER9> These submarine articles are getting weirder and weirder

</comment><comment><USER10> Camel meat is also delicious.

<comment><USER11> I live in Pakistan and tried it only once because it was so foul. It was straight from a farmer, though. I guess I'll try it again then. Thanks for convincing me random person on the internet!

</comment></comment><comment><USER12> So is this the new fad after almond and coconut milk?

Or does it also cater to people who are lactose intolerant? I wonder if I will be seeing Camel milk at a Starbucks soon.

<comment><USER13> Oat milk[1] is the next fad after soy, almond and coconut milk. These are mainly for people who are lactose intolerant, although perhaps some people who aren't lactose intolerant prefer a different taste for lattes or cappuccino drinks.

In the US I believe there's now also another type of milk called A2 that doesn't have certain forms of beta-casein proteins[2], which allegedly will help ease the discomfort lactose intolerant people feel after they ingest cow's milk.

[1] [https://www.nytimes.com/2018/01/19/style/oat-milk-coffee- oat...](https://www.nytimes.com/2018/01/19/style/oat-milk-coffee-oatly.html)

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

<comment><USER14> Isn't lactose the ingredient that causes discomfort with lactose intolerant people's stomach's?

As someone lactose intolerant, I looked at the citations and none of them claim A2 milk is lactose free, as I understand it.

<comment><USER13> This is why I threw in the word "allegedly" above. The producers of a2 milk are trying to go with a new theory that claims that people who self-report as lactose intolerant aren't _actually_ lactose intolerant, but that the cause of their symptoms is their inability to digest the A1 beta-casein protein which is commonly found in North American milk[1].

That's the spiel anyway. I have yet to try it. I'm one of those self- reporting-as-lactose-intolerant-people-who-experience-discomfort-after- ingesting-cow's-milk.

[1] [https://thea2milkcompany.com/about- us/](https://thea2milkcompany.com/about-us/)

<comment><USER15> a2 has been around in australia for ages (started in new zealand afaik), and from personal anecdote, i can say that it works. i could drink cows milk (and did a couple of times per day in flat whites) but by the end of the day, it made me feel a little off and i frequently had a "enough milk for today" moment. after starting on a2 i get none of that, and what's more it makes it easier to drink regular milk for a few days after a week of only a2

nothing scientific, but i'm going to continue paying a bit more for my milk :p

</comment></comment></comment></comment></comment><comment><USER16> Milk, produced by the mothers on this earth is supposed to be drunk by their infants, not by any other animal or humans! It's quite stupid to drink "another type" of animal milk to cure stomach problems. Stop it all together to cure because the human body is not made to drink milk after infant state.

<comment><USER17> Milk (and milk-derived foods like cheese and butter) have been a staple food in Europe for more than seven millennia. That's why most European-descended people are lactose-tolerant; it was so nutritious that we kept eating it until we evolved a tolerance for it. If your ancestors were European (or African, or Mongolian), you are absolutely "made" to drink milk.

I never understood why drinking animal milk is supposed to be weirder than killing them and eating their flesh, anyway.

<comment><USER18> I am a picky eater so I doubt I could ever go vegan but I do think some of the stuff done is really odd and sad... Like to lactate they need to keep having babies. Like if you're a woman you can't just go produce breast milk on demand like it's some sort of tap. Because the milk is meant to feed your young. That's why we have veal, as they keep having to have babies and they don't want to spend the resources to let them grow up to be big happy cows on a open field. So they are killed so young, little chance to even live and start their lives.

Then for silk fabric, they boil the sac's alive. Then a lot of meat and egg plants, due to bio security the employees there have to wear company issued underwear and clothes which isn't cleaned between shifts always... Some reports of them wearing disposable diapers instead for underwear.

So a lot of odd things go on in the farming industry. I love eating steak and chicken but if I had to go kill them myself I'd feel so guilty. Well some kids raised on farms will play with the chickens and then grow up where their parrents force them to kill them and help out on the farm.

Seems like a hard life. I always wanted to own a farm though, nice open fields and private. No loud neighbors or anything, seems peaceful but I'd stick to somthing like corn, water melons, pumpkins, potatoes probably. Well plants are technically alive too but I guess they don't show any emotion and aren't fluffy.

<comment><USER19> > Like to lactate they need to keep having babies. Like if you're a woman you > can't just go produce breast milk on demand like it's some sort of tap

Not true - a woman will keep producing milk for as long as it is being taken. A woman could continue to express milk indefinitely after stopping feeding their infant. As an aside, lookup "nursing maids".

<comment><USER18> Interesting, wonder if the same applies with cows?

I know on PETA's website they say "Cows produce milk for the same reason why humans and other mammals do: to nourish their young. But the millions of cows who live on U.S. dairy farms are forced into a vicious cycle of continuous pregnancy so that they will produce milk for human consumption." [1]

Only reason I really looked into this is I have a friend who's vegan and I'm like "What's wrong with milk? How are you hurting them?" since not eating their meat. Thinking cows that made milk were some magical special animal that main purpose was just making milk.

I've never been a huge fan of plain milk, but I do love ice cream, milk in coffee, mashed potatoes, tomato soup I like with milk better, etc.

[1] [https://www.peta.org/issues/animals-used-for-food/animals- us...](https://www.peta.org/issues/animals-used-for-food/animals-used-food- factsheets/veal-byproduct-cruel-dairy-industry/)

<comment><USER17> I honestly don't know either way, but I wouldn't trust PETA's word on anything without double-checking. I believe they mean well, but they've never shied from bending the truth and using blatant propaganda techniques to try to meet their ends.

If cows are forced into continuous pregnancy, it's more likely to be because beef is very profitable...</comment></comment></comment></comment></comment></comment>


Show HN: MiteDaily.com - document achivements and share moments of you child. - <AUTHOR> http://www.mitedaily.com/?hn

<comment><USER2> Two pieces of advice:

(1) Consider choosing a different name. The word "mite" has a negative connotation for some people. For example, I am allergic to dust mites. Mites are gross, microscopic bugs that poop on everything and make me sick. :(

(2) Get someone fluent in English to proofread the copy on your home page. I have a young son, so I am in your target demographic, but the ESL gives me enough of a bad impression that I probably would not give you my email address.

Good luck! It sounds like it could be an interesting product (although I'm not sure I understand what it is, exactly).</comment>


Seed Stage Valuation Guide - <AUTHOR> https://jordancooper.wordpress.com/2011/01/12/seed-stage-valuation-guide/ <comment><USER2> Assume all money is dumb until proven otherwise and let the market set the price.

He lays out decent guidelines for pricing, but questioning a founder's judgement for taking more money at a better valuation?

If you really have a 'go big or go home' venture fundable business to build, get the best war chest you can and get to work.

I'm not saying that raising too much money can't be a mistake for various reasons, or that there isn't inherent value in working with certain investors, but given the choice between too much or under capitalized, take the money.

<comment><USER3> Jordan's not questioning a founder's judgement for taking more money at a better valuation, he's questioning a founder's judgement for taking a _little_ money at a high valuation, and by doing so buggering up the rest of his seed round.

If you want to raise $500K-$1MM, and you somehow get a commitment for $50K at $10MM pre, Jordan's arguing that you'd be a fool to take it, because you're simply not going to find enough dumb money to fill out the rest of your round at that price.

I'm surprised no one's tried to do a multiple-unit Vickrey auction (aka a 'closed second-price auction') for this sort of thing.

<comment><USER2> That's not what the article says at all.

The example he gives is the difference between putting money in at 3M or 5M pre and he's not talking about a problem filling up a round.

He's making the claim that 'better' investors won't participate in rounds they feel are over priced. That's a totally different problem than not being able to finish a round. (Not to mention what an unlikely and unsophisticated scenario it is to have the problem that 50K was committed at 10M. I feel sorry for both the investor and the founder. Not sure which is more naive...)

People on the board can definitely make all the difference, and I generally agree with the pricing numbers given the current market.

I just find questioning the founder's judgement on raising at a 3M vs a 5M pre, uhm, questionable.

If you are an investor and you know this guy who might one day be negotiating part of an exit for you isn't going to leverage the market to get a good price now, I question your judgement.

</comment></comment></comment><comment><USER4> I'm a little confused by what Jordan is questioning here.

This is basic market economics isn't it? Deal is hot, angel wants to get in, deal gets a high valuation. If one angel didn't give it a high valuation, the deal would just go somewhere else and get funded. Is it setting itself up for future disappointment leading to a down round? Maybe, maybe not. And if it is, then the market will correct itself over time when angels see that none of their high valuation deals are getting funded.

Maybe that's what Jordan is trying to do? Force a correction by talking sense into people?

</comment><comment><USER5> An overly optimistic valuation can also lead to a down round later on. I'd recommend this as further reading: [http://lsvp.wordpress.com/2007/07/09/asymmetric-risk-and- the...](http://lsvp.wordpress.com/2007/07/09/asymmetric-risk-and-the-dangers- of-too-high-a-valuation/)</comment>


Make a starter now for a baking while working session tomorrow - <AUTHOR> If you want to give baking a go, I made a ciabatta recipe video that lets you work while tending to the dough: https://www.youtube.com/watch?v=ig6vqqHHulw <comment><USER2> Thank you!

Everyone is hoarding flour and activated yeast around me. I'm SOL.</comment>


The Dumbing Of America - <AUTHOR> http://www.washingtonpost.com/wp-dyn/content/article/2008/02/15/AR2008021502901_pf.html

<comment><AUTHOR> Scary stuff. Maybe one of the reasons I'm so comfortable here.</comment>


Chip Card Nightmares? Help Is on the Way - <AUTHOR> http://www.wsj.com/articles/chip-card-nightmares-help-is-on-the-way-1470163865 <comment><USER2> So now Google or Apple knows where every penny I spend goes, and I'm functionally broke if my battery dies? Big bag of nope.</comment>


The Wolves of Vuln Street – System Dynamics Model of the 0day Market - <AUTHOR> https://hackerone.com/news/the-wolves-of-vuln-street

<comment><USER2> Title reaction: Oh yes, this must be the long-awaited follow up to Wolves Among Us from DEFCON!

I've participated in programs like HackerOne. My takeaway is that the software with the best bounties are never open source, and the projects that are open source are either extremely cheap or sufficiently well-engineered to make the cost of finding a security bug severely outweigh the rewards/benefits.

I no longer even log into my HackerOne account.</comment>


Show HN: Ship Your Side Project 2.0 - <AUTHOR> Hey HN - I put together a bootcamp in January of this year that got a bunch of tech professionals together from all around the world to work on their side projects. We ran it as a 6 week program where there were short assignments and video interviews each week plus weekly group hangouts.
My partner Amanda and I are doing it again this fall. This time, we're introducing mentors who are assigned to individual participants and will offer weekly office hours to share ideas and feedback on people's side projects. Plus we're putting more emphasis on the community aspect, using MightyBell as our hub.
We're accepting applications through Fri 9/16 if you'd like to join. Program costs $650 and kicks of 9/24.
http://shipyoursideproject.com <comment><AUTHOR> Also since I've been on HN for a long time, I know there will be questions about the price.

Yes, you could organize this yourself. It'd be a lot of work though and leave you with little time to actually work on your side project. You could also get fit without a gym or a personal trainer, or learn almost any skill without paying for a class.

One of our past participants, Joshua Pinter (who launched an iOS app called ntwrk via the program) said it best: putting a dollar value on the program makes everyone take it more seriously, and it makes _you_ take it more seriously.

</comment><comment><USER2> This sounds like a really cool idea. I'm still a full-time student at Holberton[1], but the fact that things like this exist make me excited about joining the industry.

[1] [https://www.holbertonschool.com](https://www.holbertonschool.com)</comment>


Show HN: Firefast – Firebase SDK for Google Apps Script V8 Runtime - <AUTHOR> https://formfacade.com/firefast/index.html <comment><AUTHOR> Hi HN,

Firebase Realtime Database is a cloud-hosted NoSQL database that can be accessed from your Web, iOS, Android app using Google's Firebase SDK. But, Google doesn't provide an SDK for Apps Script. So, I wrote this library. You can use it to read and write data in Firebase using apps script using the latest ES6 features (promise/async/await).

Looking forward to your feedback.</comment>


A Curated List of Data Science Blogs - <AUTHOR> https://www.cybrhome.com/topic/data-science-blogs <comment><USER2> 200+ blogs related to Data Science at one place that's great collection</comment>


Why you should not have Managers in your class name - <AUTHOR> http://karankurani.com/post/170793461763/why-you-should-not-have-managers-in-your-class <comment><USER2> When your co worker pushes the code, what is the best way to address this kind of thing?</comment>


Ask HN: Which mouse do you use? - <AUTHOR> I have the Apple Magic mouse but its the old kind where you have to keep replacing the batteries. I want an upgrade, I code all day, what does everyone use and love?<p>I'm not opposed to going vertical! <comment><USER2> I use a Logitech MX Master. I've had it for a long time and it's my favorite mouse I've ever used.

</comment><comment><USER3> I use a Magic Mouse v2 (or whatever the new one is called..)

Works well. Charges crazily quickly.

</comment><comment><USER4> _its the old kind where you have to keep replacing the batteries_

Mine's even older: Logitech 2 button plus scrollwheel, with cable. I NEVER have to replace batteries.

<comment><AUTHOR> The mouse in my laptop bag is corded for the same reason!</comment></comment>


A designer created this awesome tool to help you say no to free work - <AUTHOR> http://jessicahische.is/helpingyouanswer <comment><USER2> Great tool, definitely could use a similar one for freelance software development proposals. Especially when someone comes to me to say "look, I have a great idea, you build this and half of the profit is yours!"</comment>


Please invest responsibly – an important message from the Coinbase team - <AUTHOR> https://blog.coinbase.com/please-invest-responsibly-an-important-message-from-the-coinbase-team-bf7f13a4b0b1 <comment><USER2> By the way, you really think Coinbase's BTC is insured even after the massive gains in BTC's price?

What do you think will happen if Coinbase's cold storage gets emptied?

If you're storing your coins on Coinbase, you're doing it wrong. Get your coins under your control.

<comment><USER3> > If you're storing your coins on Coinbase, you're doing it wrong. Get your > coins under your control.

And what if you lose the USB key, hard drive, etc or it becomes damaged? Oops.

Secure and reliable storage is a problem that must be solved.

<comment><USER4> just encrypt your btc keys with another secret key(symmetric key e.g. aes, blowfish or something else). Store them on different cloud providers, encrypted btc keys on google drive and the other secret key (password protect it) then store it on one drive or icloud or private repository on github. The hacker must hack both sites to take your keys(very unlikely to succeed) and they are both securely stored online. Also make sure you're not using the same password for both sites :)

<comment><USER5> The attacker only has to hack your email account then reset the password on the two target sites...

<comment><USER6> And then all they have is an encrypted file assuming good password hygiene.

<comment><USER5> So then why not just email the keys to yourself and leave them in your inbox?

</comment></comment></comment></comment></comment></comment><comment> FLUX-YOU "'Please invest responsibly' because we can't guarantee you'll be able to cash out. We may also say something is fixed when it isn't."

[https://twitter.com/briankrebs/status/939202667993272320](https://twitter.com/briankrebs/status/939202667993272320)

</comment><comment><USER7> _Despite the sizable and ongoing increases in our technical infrastructure and engineering staff, we wanted to remind customers that access to Coinbase services may become degraded or unavailable during times of significant volatility or volume. This could result in the inability to buy or sell for periods of time. Despite ongoing increases in our support capacity, our customer support response times may be delayed, especially for requests that do not involve immediate risks to customer account security. You can read more in our Coinbase User Agreement._

This is the problem they should be solving, not avoiding with blog posts

<comment><USER8> Because we all know that an entire company can, at a given time, either write blog posts or solve infrastructural issues, never both.

<comment><USER7> You're completely missing my point

Its not that they can do one or the other (they can), its that they aren't doing the latter.

This problem with getting frozen up whenever theres major volatility has existed for years on Coinbase

<comment><USER8> Then please say that instead of making unnecessary snarks about blog posts. Any company with even a small marketing / PR team probably has people whose job IS writing blog posts, and who can't go around solving infra problems.

<comment><USER7> Not sure where this hostility is coming from

I'm sorry you're having a bad day, please dont take it out on me

</comment></comment></comment></comment></comment><comment><USER9> Seems like the responsible thing to do would be to stop accepting new customers until the infrastructure catches up?

<comment><USER10> That is kind of what they're doing right now. It's impossible to get verified for an account.

<comment><USER11> I've seen this pop up a few times now... what verification? Coinbase hasn't asked me for any proof of who I am at all.

<comment><USER12> Have you actually bought bitcoin? When I signed up I needed to upload a picture of me holding my state ID to buy and sell.

<comment><USER11> I bought a few ETH this morning. I linked a bank account, is that the difference?

<comment><USER12> What state/country are you in?

<comment><USER11> West Virginia, US

<comment><USER12> I know very little about banking regulations, but I think the KYC laws change based on the state. It's possible Coinbase has a different process in WV compared to CA.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> So what does one do when you tried to verify, but coinbase shows this:

Driver's License + Photo Verification Reason:Unknown response status:

Every time I take a photo, I see "we're verifying your ID." Then nothing happens...

Edit: Even worse. Their status page implies things are working now, but they don't. I found that I can retry the upload, but now it says "You have reached the maximum attempts for identity verification, please try again in 24 hours." Wow.

<comment><USER14> Monitor this page: [https://status.coinbase.com/](https://status.coinbase.com/)

Also, they've had verification problems on and off for months. Back when I did it, the app didn't work, but the website did.

</comment></comment><comment><USER15> Correction, should read -"please speculate responsibly".

It's all speculation. Most retail speculators go bust.

<comment> etr-strike If it's all speculation, where do you suggest I store my wealth? The underlying characteristics of bitcoin lead me to believe it's the safest asset in existence. It's volatility is a result of people slowly discovering this.

<comment><USER15> Ummm stocks, bonds, cash, real estate?

Yes Bitcoin just like all other assets before that went parabolic will not end good.

Storing your life savings in Bitcoin right now is a suicidal idea.

<comment> etr-strike Cash is guaranteed to depreciate at least 2% per year. Real estate is incredibly expensive and only supported by the cheap debt that has flooded our economy. Bonds are just barely above 0%... they have no place to go but down unless you think negative rates are possible. Stocks are incredibly expensive using every metric available. The rules of bitcoin are well understood and no one can manipulate them. I'll take my chances, thanks.

<comment><USER15> Pull up long term BTC chart. Step aside and ask your self this : is this a good time to buy this asset or sell it?

I think most people are late to the party and will simply get burnt by the market like so many times before. It's going to be a good show for sure.

I'm watching this develop with my pop corn ready.

<comment> etr-strike If I sold my bitcoin, I wouldn't feel any better storing it in any of the asset classes you mentioned. Everytime I honestly evaluate what central banks have done around the world, I always arrive back at bitcoin. It's my safehaven asset.

I wish you well with wherever you've chosen to store your wealth.

</comment></comment></comment></comment></comment></comment><comment><USER16> They take credit card for bitcoin purchases.

Hard to believe that they are sincere in their desire for responsibility, like a booze company telling you to drink responsibly.

<comment><USER17> It would be insane to take credit cards, as people could just file a chargeback if things do not go their way. Are you sure about that?

<comment><USER18> They do. I signed up a couple days ago and moved a few bucks worth of bitcoin into a wallet, and it was showing a weekly limit of $400 to buy via credit card. Now I'm up to $750.

</comment></comment></comment><comment><USER19> Kinda clever to reply to the downtime this way - shifting the focus for accountability from the Coinbase team to their userbase.

<comment><USER20> Would it be better not to say it, rather than acknowledge the likeness to gambling of the btc speculation train?

</comment></comment><comment><USER21> That guy that bought in at $19340 last night, is only down $4000 twelve hours later.

<comment><USER22> And he'll by fine again next week. There are a lot of people who bought at $5000 a few weeks ago only to panic sell at 2900, and here we are less than a month later quibbling over the difference between 19k and 15k. Either switch your charts to LOG or zoom out until you feel better.

<comment><USER21> That's what people said when it went from $1100 to $200 for the next three years. No one has any idea where bitcoin is going to go, saying otherwise is nonsense. Only people with a glimpse, are the manipulators holding onto the majority of it.

<comment><USER22> BTC may dip temporarily, but with the entry of institutional money, we won't be seeing near the dips you're expecting. I have been watching and participating in this ecosystem from the beginning, take it from me, it's not going anywhere. The only way to lose money operating in this market is to be reckless with leverage, or knowingly sell while you're under, and the same could happen for any asset.

<comment><USER23> Your hypothesis: "it's not going anywhere."

Do you have some argument points to back that up with?

I keep hearing simple assertions about what will happen, confidently proclaimed by two sides of a table.

<comment><USER24> Do you have any hypothetical scenarios that could wipe BTC off the planet or at least make it impossible to cash back it to fiat?

<comment><USER23> It's not up to me to prove a negative. Also, my brain is too small to make sweeping confident predictions about a new phenomenon the likes of which defy existing models. Moreover you'd probably poke hypothetical holes in my hypothetical scenarios. It's a flip of the coin, as far as I'm concerned.

Certainly some BTC were almost literally wiped off the planet, aka Mt Gox.

</comment></comment></comment></comment></comment></comment></comment><comment><USER25> "Please invest responsibly"

Pretty similar to the warnings lottery agencies and alcohol makers put on their products.

I wonder if it's intentional? Kind of a wink-wink thing where just like lotteries and alcohol the unsaid next line is, "but it'll be more fun if you don't..."

</comment><comment><USER26> Slight sidenote, but this recent interview of Brian Armstrong (Coinbase CEO) on Bloomberg TV left a really good impression. He managed to appear both humble, smart and confident at the same time. Things a lot of people could learn from.

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

</comment><comment><USER27> Tangential: on the way to work today I was pondering the economy after hearing about the recent unemployment numbers on NPR. These days I tend to think about what's going to be the downturn catalyst. Which got me thinking about the recent surge in crypto prices, and how much of it has been fueled by purchases using credit cards, home equity loans, etc. I hope it's not too disastrous in the end but I have my doubts.

</comment><comment><USER28> Meanwhile, reddit is full of people talking about the loans they're taking out to buy Bitcoin because it's a "sure thing" that it's going to $100k.

</comment><comment><USER28> "You may not be able to trade while we're down, but we certainly can"

</comment><comment><USER29> Take your best guess when Bitcoin will fall of the cliff: [https://twitter.com/BitcoinPlunge](https://twitter.com/BitcoinPlunge)

</comment><comment><USER30> It would be nice if they supported u2f token

</comment><comment><USER31> "Please invest responsibly" \- coming from the company that lets people buy cryptocurrency with credit cards.

This blog post reads like an attempt to preempt a lawsuit after the price of BTC crashes and people are stuck with rapidly depreciating coins because Coinbase's servers were too overloaded to process a sell order.

<comment><USER32> That is exactly what it is. It is informing Coinbase's customers that their resources are finite and that they cannot be relied upon to execute trades nor provide support in a heartbeat.

It is important that they say this, as it appears to be true.

PSA: If you're a Coinbase customer, and you have never made a withdrawal, are you aware that there are weekly _sell_ limits, priced in USD, not BTC? It was a surprise to me.

If you're sitting on a little BTC kitty at Coinbase that has grown large, do know that you may not be able to convert it all to USD on a single trade even if Coinbase _has_ liquidity and buyers.

<comment><USER33> Do they not lay out those limits in a clear way somewhere or had you not looked for the info?

<comment><USER34> I transferred my BTC to Coinbase a few years ago (because I didn't trust myself to keep my wallet safe), and this is the first time I have heard of this. To be fair my account isn't set up for withdrawal (no bank account connected), so you might be notified about this there.

<comment><USER33> I meant something like [https://support.coinbase.com/customer/en/portal/articles/210...](https://support.coinbase.com/customer/en/portal/articles/2108820-coinbase- account-limits)

Which is a top result searching Google for "coinbase transaction limits".</comment></comment></comment></comment></comment>


PHPConform: A BDD for phpunit prototype - <AUTHOR> http://the-robot-lives.com/index.php/2013/02/phpconform/

<comment><AUTHOR> Behat, Cuke4Php, Codeception, phpSpec and a few other solutions have shown up since I initially penned this prototype in early 2010.

While I think these are all great solutions I do still think there is room for better integration with phpunit out of the box. I would hardly recommend jumping on prototype code for your own testing solution right off the bat but do please give things a look over and if you like help contribute enhancements and bug fixes as they come up.

-Keith.</comment>


Fortress of Solitude Dining Room - <AUTHOR> http://refer.ly/fortress_of_solitude_dining_room/c/b280cda2473b11e2b5ab22000a1db8fa

<comment><USER2> Couldn't they have picked stuff at least _slightly_ resembled what's in the movie...?

<comment><USER3> I am open to suggestions.</comment></comment>


Ask HN: One day will we be voting for A.I.s to run our government? - <AUTHOR> Through conversations with friends the idea emerged for the hypothetical scenario of an election race between two candidates:<p>1. A human candidate 2. An A.I. and human duo: where the human and A.I. share decision making. <comment><USER2> We are already there. Any candidate without an effective team to back them up (other human beings with a strong suite of software tools) will struggle.</comment>


Stripe Checkout: Added an option to remove the "Remember Me" checkbox - <AUTHOR> https://groups.google.com/a/lists.stripe.com/forum/#!topic/api-announce/wQBngiotH90

<comment><AUTHOR> Hey, Stripe, thanks for listening to the feedback that was provided, e.g., in the previous HN discussion:

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

Really appreciate it!

</comment><comment><USER2> I'd read the thread on hacker news, and then, a few weeks later, I bought something at a very niche site. There was a checkbox that said "Remember me everywhere". Even though I'd recalled the discussion here, I was afraid to check the box because it's so vague. Remember me why? And literally "everywhere," really? It wasn't clear that I wasn't opting in to some new kind of advertising tracking or location spyware service.

Anyways, Stripe made the right choice here.

<comment><USER3> What do you think of the explanation that appears when you select it? (Feel free to email me if that's easier; email@example.com.)

<comment><USER4> Nothing, because I didn't check it and see an explanation (you need a little "?" icon, or at the very least an instant-tooltip).

<comment><USER5> We're actually testing a variant that does exactly this.

</comment></comment></comment></comment><comment><USER6> The turnaround time on this from Stripe really is something to be envied. One of the best ways to make customers loyal is to show that you hear them.

Funny fact, but due to Australian privacy laws 'Remember Me' was not able to be displayed in the first place so it didn't effect me.

Now just patiently waiting to be able to accept USD.

<comment><USER7> Hey, have you got a link to the part in the privacy laws that stops 'remember me' being displayed? I've never run into that before on Australian sites.

<comment><USER8> I would like to know as well. Looking at the new NPP[1], I don't see anything that prevents it if full disclosure is provided and consent requested. Although IANAL.

[1]([http://www.oaic.gov.au/privacy/privacy-resources/privacy- fac...](http://www.oaic.gov.au/privacy/privacy-resources/privacy-fact- sheets/other/privacy-fact-sheet-2-national-privacy-principles))

</comment></comment></comment><comment><USER9> There was also a brief comment from pc about this a couple of weeks ago that might be worth linking to here: [https://news.ycombinator.com/item?id=7400884](https://news.ycombinator.com/item?id=7400884)

</comment><comment><USER10> This is great. The flexibility makes checkout a legitimate option for merchants... again.

</comment><comment><USER11> Having read the original post when it was trending, I'm ecstatic to seebthis beimg implemented already. I believe I willbforbsure bebusing Stripe when I set up an online store in the next few months!

</comment><comment><USER12> We are going live with Stripe tomorrow. Good to read all these comments :)</comment>


Ask PG: Can we limit the number of replies to a comment? - <AUTHOR>

Something I've noticed lately is the increasing occurrence of the first comment in a thread amassing 20, 30, or more replies. Seldom do these replies represent more than half-a-dozen or so unique points. More often it is people re-hashing the same points with slightly different wording, or people with largely unrelated points attempting to ride the coat-tails of whatever has managed to float to the top.
Either way, this trend seems detrimental both to the depth of discussion (encouraging more noise in the initial replies, at the expense of replies to the appropriate children or grandchildren), as well as the number of original top-level comments visible on the more popular topics. The number of times I've opened a thread to find that there is only one top-level comment on the first page of replies is troubling.
So, can we limit the number of replies to a single comment to something like 10 or so? <comment><USER2> Won't this just give us 10 rehash comments and _no_ good replies?

</comment><comment><USER3> There are extensions that allow you to 'collapse threads' - they appear to work on most browsers.

EDIT: I realise that this doesn't help the problem that you're talking about. It is a bit of a problem when people only respond to the first comment - especially if that comment is only just related to the article.

</comment><comment><USER4> FWIW - you might like using the greasemonkey script "Threadify" if you don't already. It makes it easier to navigate past those long comment threads:

<http://userscripts.org/scripts/show/110317></comment>


Startups Embrace Arbitration to Settle Workplace Disputes - <AUTHOR> http://www.nytimes.com/2016/05/15/business/dealbook/start-ups-embrace-arbitration-to-settle-workplace-disputes.html <comment><AUTHOR> Another example of a "tragedy of the commons" situation.</comment>


Heatmaps, usability testing, live analytics for $7.99 - <AUTHOR> http://www.inspectlet.com/

<comment><USER2> I've looked at the video here: <http://www.inspectlet.com/tour/custommetrics> \- the app plays back every user session as it happened, you can actually see exactly how the user moved his mouse on the screen. pretty cool. worth the look.

</comment><comment><USER3> Nice service. But how are you at interpreting the data?</comment>


Despite Restrictions on Freedom, China Is Leading the Mobile Innovation Race - <AUTHOR> https://i.imgur.com/2cf83Vi.gifv <comment><AUTHOR> The app she is using is Alipay made by Amazon competitor Alibaba.</comment>


You Can Be an Expert at Anything - <AUTHOR> http://savagethoughts.com/post/5552519501/you-can-be-an-expert-at-anything

<comment><USER2> Worst drawn graphs I've seen online. Kudos! :)

<comment><USER3> Thanks, I'm very proud of those graphs. :)</comment></comment>


Ask HN - Why are NodeJS devs so zealous? - <AUTHOR>

I'm posting this as "not myself" mostly as some of my team also frequents these parts.
I have a simple question -- Is there something about NodeJS (or the ecosystem) that causes those that enjoy it to become comparable to religious zealots?
I'm a generalist.  In the passed few years I've done Node dev, PHP, python, C/C++, Objective-C, Java and others.  For me it is -- toolset, task, other devs around.
The one commonality, however, is that when a project comes up where Node isn't the best tool (maybe a desire for more mature tooling like Eclipse or the Ops staff is more familiar w/ the Java ecosystem), if there is a dev on the team that is all in on Node, they refuse to see the merits of anything else.
I just find it bazaar and I'm trying to figure out why.  I don't mean this as flame bait, as I mentioned, I've used it and it has it's uses.  I'm just more mercenary in my tooling. <comment><USER2> I like the zealous part :)

On a serious note - I'm a tad mercenary too. I like Node, but I'm definitely not zealous about it.

I guess it's because Node devs end up really enjoying the fact that they're using a stack that's scalable, and of course, gives them the benefit of writing both client and server code in the same language. I can say, however, that the zealousness you see, is something that's there with just about every stack there is - seen it happen with Rails, Flask, ASP.NET MVC. It's just that you don't always see it out in the open. So that leads me to another question - why's this..zealousness so apparent with Node devs?

</comment><comment><USER3> <http://www.youtube.com/watch?v=bzkRVzciAZg>

</comment><comment><USER4> If you're in a one-language shop, and you hate that language, you may see node as your only hope--it's the only alternative that can't be shot down with "We'd have to train everybody up in that weird other language"

</comment><comment><USER5> Once upon a time, there was a dev who was zealous about:

      * Assembler
      * C
      * C++
      * Lisp
      * Java
      * PHP
      * C#
      * VB
      * JavaScript
      .
      .
      .

<comment><USER2> In a galaxy, far, far away..

</comment></comment><comment><USER6> > I just find it bazaar and I'm trying to figure out why.

Sometimes I find a lot of bazaars =)

<comment><USER7> Well, at least it's not cathedral.

</comment></comment><comment><USER7> I get the impression that Go partisans are like this too.</comment>


This Biotechnology Company Run by High Schoolers is Developing a Flying Syringe - <AUTHOR> http://www.fastcoexist.com/1681305/this-biotechnology-company-run-by-high-schoolers-is-developing-a-flying-syringe

<comment><USER2> Amazing way to go kids, but this could also be bit dangerous if the technology lands on wrong hands.</comment>


CSS3 Patterns Gallery - <AUTHOR> http://lea.verou.me/css3patterns/ <comment> ux-app As a technical demo they're great. In practice though, I wouldn't recommend using these techniques because:

      - Many are completely broken in FF
      - Crashed my FF (19.0.2) and strangely sent my GPU fan into overdrive
      - These techniques hurt performance badly. In the case of gradients
        the browser has to first generate the bitmaps
        from the gradient definitions, apply any clipping/masks
        and then composite any other overlaying elements.
        This is far more taxing than simply grabbing a
        bitmap and painting into a region.

<comment><USER2> Agree, they're great for mockups though as it's really easy to change the colours rapidly. Also good for doing things like animation of gradients.

</comment></comment><comment><USER3> "amazing"? These look terrible and would make any website look like a throwback from Geocities.

Neat that it's done with CSS3, not practical for any real purpose though.

<comment><USER4> All it'd take to make most of these usable is finessing the colors a bit so they don't jump off the page like they do here. It's definitely possible to make the patterns more subtle while retaining the shape effects. I viewed the page as a nifty demonstration of CSS-based patterns. Actually implementing the appropriate colors with these is left as an exercise for the reader.

<comment><USER5> According to my laptop's cooling fan color palette is the least of the issues here. I'm pretty sure that roasting your users' CPUs to render a background texture is considered poor form.

<comment><USER4> I acknowledge the performance issues. I was responding, however, to a comment about what these make the site look like.

</comment></comment></comment></comment><comment><USER6> To me, these are amazing in the same way fingernails on chalkboard are amazing. Every time someone nicked the chalkboard with their fingernail in school, I felt as if someone was ripping my spine out. And every time I clicked one of those circles, I felt like someone was ripping my eyes out.

</comment><comment><USER7> Nice, but oh my poor Firefox. What's wrong with images as bg?

Some numbers:

The one with hearts is 944 bytes (css file), 232 bytes gzipped (with 7zip), 304 bytes as gif (Photoshop. Can be smaller with hand optimizations. Need extra css code to tile as bg)

Just a tech demo IMO.

<comment><USER8> This site completely borked by firefox. Had to close and restart my browser to get out of it.

</comment></comment><comment><USER9> Is it trivial to animate these? For example how easy would it be to have one of the rainbow-bokeh bubbles slowly move upward ?

<comment><USER10> Yes, it would be trivial. In most cases though (including your example) you could achieve the same effect by simply animating a 32-bit PNG.

</comment></comment><comment><USER11> A lot of these look great :-) If only they worked in IE 7, 8 and 9 they could be used in real projects...

<comment><USER12> I guess gmail isn't a "real project" then...

</comment></comment><comment><USER13> I do not like theese backgrounds, some of them really hurt my eyes.

I prefer these <http://subtlepatterns.com/> ...I know they are just png, but works and look better.

</comment><comment><USER14> Calm down, guys. As stated on her site, these are purely experimental. This page has also been up for a few years at this point.

</comment><comment><USER15> They look like crap (not only the color, but also the jagged edges), the performance is also crap... I don't know, sometimes I think these hipster web devs are getting too much attention nowadays for things that aren't that complicated or innovative in comparison to, say, many things c++ programmers face on daily basis.

</comment><comment><USER16> Only IE+? No doubt because IE is so ridiculous behind the other browsers in HTML5 support. I can't believe even Firefox 3.6 which was released in like 2010 had proper support for CSS3 that only IE10 has now, from all the IE versions.

</comment><comment><USER17> Bad performance and support only for IE10+ will put these out of consideration for many. I think the real world appeal of these will be limited to say the least.

</comment><comment><USER18> These look great, but performance is really poor.

<comment><USER19> Could you explain this? I'd figure the performance would be greater than using an repeating image for a background.

<comment> ux-app Performance is far worse because this is the equivalent of a procedural texture. With a tiling bitmap the computer simply fetches the file, then paints the pixels into a region.

With a definition such as:

      - radial-gradient(closest-side, transparent 0%, transparent 75%, #...

The browser first parses the CSS, then generates the actual bitmap data for this definition in memory then finally paints the pixels into the correct places. The in-memory bitmap generation is _far_ more taxing than simply tiling an existing bitmap.

Then there is the issue of dynamic CSS which may cause reflow which will in turn probably require more dynamic bitmap generation.

<comment><USER20> One interesting thing is done while building iOS app: png images are reencoded to make them more efficient. What is done, that alpha value is premultiplied, but the more interesting thins is that bytes are rearranged from RGB to BGR . This is done to match the layout of the iPhone display, so mapping from image is even faster.

</comment></comment></comment></comment><comment><USER21> Good as an experiment, but I honestly wouldn't use any of these backgrounds.

</comment><comment><USER22> Nice. Please make the Escape key work to close the pattern popup!

</comment><comment><USER23> Real tartan doesn't have diagonal lines like that. Sorry :)

</comment><comment><USER24> It looks good, until you apply to background.

</comment><comment><USER25> Why exploiting CSS3 when SVG will do?

</comment><comment><USER26> not working for me with css supplied.

</comment><comment><USER27> need to improve performance...</comment>