summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/design/assistant/blog/day_216__more_bugfixes.mdwn42
1 files changed, 42 insertions, 0 deletions
diff --git a/doc/design/assistant/blog/day_216__more_bugfixes.mdwn b/doc/design/assistant/blog/day_216__more_bugfixes.mdwn
new file mode 100644
index 000000000..a988643ff
--- /dev/null
+++ b/doc/design/assistant/blog/day_216__more_bugfixes.mdwn
@@ -0,0 +1,42 @@
+A long time ago I made Remote be an instance of the Ord typeclass, with an
+implementation that compared the costs of Remotes. That seemed like a good
+idea at the time, as it saved typing.. But at the time I was still making
+custom Read and Show instances too. I've since learned that this is *not* a
+good idea, and neither is making custom Ord instances, without deep thought
+about the possible sets of values in a type.
+
+This Ord instance came around and bit me when I put Remotes into a Set,
+because now remotes with the same cost appeared to be in the Set even if
+they were not. Also affected putting Remotes into a Map. I noticed this
+when the webapp got confused about which Remotes were paused.
+
+Rarely does a bug go this deep. I've fixed it comprehensively, first
+removing the Ord instance entirely, and fixing the places that wanted to
+order remotes by cost to do it explicitly. Then adding back an Ord instance
+that is much more sane. Also by checking the rest of the Ord (and Eq)
+instances in the code base (which were all ok).
+
+While doing that, I found lots of places that kept remotes in Maps and
+Sets. All of it was probably subtly broken in one way or another before
+this fix, but it would be hard to say exactly how the bugs would
+manifest.
+
+-----
+
+Also fought some with Google Talk today. Seem to be missing presence
+messages sometimes. Ugh. May have fixed it, but I've thought that before..
+
+Made --debug include a sanitized dump of the XMPP protocol.
+
+Made UI changes to encourage user to install git-annex on the server when
+adding a ssh server, rather than just funneling them through to rsync.
+
+Fixed UI glitches in XMPP username/password prompt.
+
+Switched all forms in the webapp to use POST, to avoid sensitive
+information leaking on the url bar.
+
+----
+
+Added an incremental backup group. Repositories in this group only want
+files that have not been backed up somewhere else yet.