News for hackers. Stuff that matters.
Re:Underhanded Solidity Coding Contest by skybrian on Monday July 03, 2017 @03:05PM (#14690604)
Calling it "imprecise semantics" is quite the understatement.

The environment software runs in is often scarcely understood at all. Operating systems and web browsers change without notice due to auto-upgrades. Libraries are often used without understanding their implementations, and they're also constantly being upgraded. Users can install plugins that introduce bugs that can't be reproduced in the test environment.

You can't build an accurate mathematical model of an environment you haven't observed. Integration tests (run against many platforms) and production logging help, but there are still plenty of unknowns.

Re:Underhanded Solidity Coding Contest by simplify on Monday July 03, 2017 @03:31PM (#14690749)
How do you normally handle those unknowns?
Re:Underhanded Solidity Coding Contest by serhei on Monday July 03, 2017 @03:45PM (#14690863)
Imitating other code that is known to work [1]. Lots of testing. Fixing the bug when someone runs into it and complains (a viable last-resort for almost anything besides a Solidity contract).

[1]: For example, when working with filesystems, people write code that they saw other people using. The code may or may not work as designed depending on the specific filesystem. see e.g. https://danluu.com/file-consistency/

Re:Underhanded Solidity Coding Contest by skybrian on Monday July 03, 2017 @03:48PM (#14690890)
Users submit bugs and the reply is sometimes "cannot reproduce." :-)

But the more serious projects I've worked on use analytics and have semi-automated ways for users to send you stack traces and logs when they notice a bug.

Also, it's helpful to have a continuous integration setup that automatically runs integration tests on many platforms.

Re:Underhanded Solidity Coding Contest by ori_b on Monday July 03, 2017 @04:15PM (#14691061)
Usually, by crashing or exhibiting bugs and misbehavior.