diff --git a/Allura/allura/ext/admin/admin_main.py b/Allura/allura/ext/admin/admin_main.py
index 4fd8623..7b6b57c 100644
--- a/Allura/allura/ext/admin/admin_main.py
+++ b/Allura/allura/ext/admin/admin_main.py
@@ -110,7 +110,7 @@
                 tools.append(dict(name=name, app=App))
             # prevent from saving temporary config to db
             session(cfg).expunge(cfg)
-        tools.sort(key=lambda t: (t['app'].status_int(), t['app'].ordinal))
+        tools.sort(key=lambda t: (t['app'].status_int(), t['app'].ordinal or 0))
         return [t for t in tools
                 if t['app'].status in project.allowed_tool_status]
 
diff --git a/Allura/allura/lib/spam/__init__.py b/Allura/allura/lib/spam/__init__.py
index a3c45b3..4be8189 100644
--- a/Allura/allura/lib/spam/__init__.py
+++ b/Allura/allura/lib/spam/__init__.py
@@ -83,7 +83,7 @@
         methods = aslist(methods_string)
         self.filters = []
         for m in methods:
-            config = copy(config)
+            config = dict(config).copy()
             config['spam.method'] = m
             spam_filter = SpamFilter.get(config=config, entry_points=entry_points)
             self.filters.append(spam_filter)
diff --git a/Allura/allura/lib/spam/akismetfilter.py b/Allura/allura/lib/spam/akismetfilter.py
index b737ef7..ee9b0ee 100644
--- a/Allura/allura/lib/spam/akismetfilter.py
+++ b/Allura/allura/lib/spam/akismetfilter.py
@@ -83,7 +83,7 @@
         if user:
             kw['comment_author'] = user.display_name or user.username
             kw['comment_author_email'] = user.email_addresses[0] if user.email_addresses else ''
-        if request:
+        if request is not None:
             kw['user_ip'] = utils.ip_address(request)
             kw['user_agent'] = request.headers.get('USER_AGENT')
             kw['referrer'] = request.headers.get('REFERER')
diff --git a/Allura/allura/lib/utils.py b/Allura/allura/lib/utils.py
index 9a7063a..51c08c8 100644
--- a/Allura/allura/lib/utils.py
+++ b/Allura/allura/lib/utils.py
@@ -137,7 +137,7 @@
 
         """
         title = getproctitle()
-        if title.startswith(b'taskd:'):
+        if title.startswith('taskd:'):
             record.name = "{0}:{1}".format(title, record.name)
         return super(CustomWatchedFileHandler, self).format(record)
 
@@ -173,17 +173,6 @@
         page += 1
 
 
-def lsub_utf8(s, n):
-    '''Useful for returning n bytes of a UTF-8 string, rather than characters'''
-    byte2int = ord if six.PY2 else int
-    while len(s) > n:
-        k = n
-        while (byte2int(s[k]) & 0xc0) == 0x80:
-            k -= 1
-        return s[:k]
-    return s
-
-
 def chunked_list(l, n):
     """ Yield successive n-sized chunks from l.
     """
diff --git a/Allura/allura/tests/test_utils.py b/Allura/allura/tests/test_utils.py
index 24d324f..cff7a5d 100644
--- a/Allura/allura/tests/test_utils.py
+++ b/Allura/allura/tests/test_utils.py
@@ -421,18 +421,3 @@
     assert utils.close_ipv4_addrs('1.2.3.4', '1.2.3.255')
     assert not utils.close_ipv4_addrs('1.2.3.4', '1.2.4.4')
 
-
-def test_lsub_utf8():
-    assert_equal(b'asdf',
-                 utils.lsub_utf8(h.really_unicode('asdf').encode('utf-8'), 40))
-    assert_equal(b'as\xf0\x9f\x98\x84\xc2\xb6\xc2\xba\xc2\xb6',
-                 utils.lsub_utf8(h.really_unicode('as😄¶º¶').encode('utf-8'), 40))
-    assert_equal(b'as\xf0\x9f\x98\x84',
-                 utils.lsub_utf8(h.really_unicode('as😄¶º¶').encode('utf-8'), 6))
-    # these would truncate the smiley:
-    assert_equal(b'as',
-                 utils.lsub_utf8(h.really_unicode('as😄¶º¶').encode('utf-8'), 5))
-    assert_equal(b'as',
-                 utils.lsub_utf8(h.really_unicode('as😄¶º¶').encode('utf-8'), 4))
-    assert_equal(b'as',
-                 utils.lsub_utf8(h.really_unicode('as😄¶º¶').encode('utf-8'), 3))
