The DEF CON talk is https://www.youtube.com/watch?v=00A36VABIA4
I know designing the whole thing upfront is a bad idea
Not really. I think it’s generally a good idea. Just don’t get too attached to it. There’s nothing wrong with a little requirements gathering, use case analysis, and general component/data flow/API breakdown before you get too far into writing working code. If you start designing classes and whatnot, then you may want to stop yourself.
Have we gone too far in terms of unspecified software to be more ‘agile’?
Probably, but that kind of question falls into the “eternal argument” class.
And to answer the original question, yes, I always write some kind of spec or docs for projects, even if I have no intention of sharing them.
requirements gathering, use case analysis, and general component/data flow/API breakdown
I especially like to do a data flow breakdown. A while ago I discovered FMC diagrams http://www.fmc-modeling.org/ which have a nice and simple way of representing components as active or passive items and their communication patterns. Very nice to work with, not so complicated as UML but very powerful. Also I realized that people could read them fairly well when I used them with colleagues. Really sad that UML does not get any competition to balance the baroque toolbox.
Does ‘don’t get attached to it’ mean don’t update it? or don’t be afraid to update it as things become more clear.
I’ve never found much value in the documentation of classes or implementation, but I always find system level explanations useful, things explaining the project rationale e.g. why there are 3 services, what the constraints it is trying to satisfy are, or how to configure the thing.
Definitely “don’t be afraid to update/change”. Incorrect documentation is worse than no documentation, since newcomers will read the documentation and think the project is working a certain way when it’s really not.
I think class-level docs are helpful for when you want to abstract out functionality, but I suppose this will probably show itself at higher-level documentation too. An example would be defining a common interface to easily add 3rd party services.
Yeah, it means that you should expect the design to change. “Don’t get attached to it” refers to the fanciful notion of once you have designed it, that’s enough.
Would love feedback, comments, & improvements - thanks all.
How do these compare to the Tor Browser settings?
I notice (when using Tor Browser) that many sites try to use Canvas for fingerprinting. Is this blocked by your settings as well? Or does uBlock take care of that?
Firefox 58 will actually be getting the canvas anti-fingerprinting in the Tor Browser: https://nakedsecurity.sophos.com/2017/10/30/firefox-takes-a-bite-out-of-the-canvas-super-cookie/