-
Notifications
You must be signed in to change notification settings - Fork 2
/
TODO
78 lines (70 loc) · 4.95 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
= TODO
== Bugs
=== http://www.wearcognition.com/index.php/member/176959 doesn't do the raw 404. Don't even render a page.
=== Pagination and non-contiguous display-order values in the "items" SDB domain
Since merch is stored in the same domain as caps, pagination based on string sorting of
:display-order values breaks because displaying only /caps or /merch will result in
non-contiguous and non-zero-based display-order values.
limit query clauses still work because SimpleDB will do the counting, but
if we start at begin index "1", we might still get the first merch item
in the collection since the first merch display-order might be "0024".
SimpleDB's shortcomings are becoming apparent.
==== Solutions
* move each item-type into its own domain
- pros: pagination within item types works easily
- cons: breaks all-item pagination/ordering without some further mechanism
requires reworking of data-access code
* maintain general :display-order ordering within "items" and also :item-type specific
display orders which are zero-based and contiguous by subtype
- pros: can sort based on aggregate or subsets
- cons: an additional level of field-setting when display orders are changed
unlikely to happen often and should have negligible overhead
== Enhancements
=== General improvements
- Move from string-padded :display-order to integer, since rummage already does
encoding that allows lexicographical sorting
- Give up on the "over xxx caps served" banner since it's not working. Have a random
phrase there initially, then have jquery randomly swap it out
"making sweet caps" "stitching rad lids", "concocting cranial covers", etc... maybe a cool transition effect
- Scan logs for "Forwarding request to new site" and upload those old images to S3
- Add new badge on item page to the right of the name/price
- Use "sold out" image as overlay for sold out items
- Admin interface
Use:
http://www.thebuzzmedia.com/software/imgscalr-java-image-scaling-library/
for scaling images on server side
- Implement analytics suggestions here: http://news.ycombinator.com/item?id=4875841
- Text displayed in +1 is suboptimal, as is how the page displays in lynx
- http://stackoverflow.com/questions/6629417/custom-google-1-text-and-image
- http://webapps.stackexchange.com/questions/25938/change-google-link-summary-text
- RSS feeds could possibly be rendered by the same templates as the live web version
- Use memcached and [Spyglass](http://clojurememcached.info/articles/getting_started.html) and
minimizing actual queries to SDB.
- Move page design images to S3.
- Serve S3 content from CloudFront CDN. Cheaper, faster, distributed, doesn't store; only pulls from S3 at cache interval.
- Create SDB backup utility. Will need this to populate a dev database and for general data retention
- Use DNS prefetch in document head: <link rel="dns-prefetch" href="//{global:mediadomain}" />
- Add more CSS background images to sprites.png: arrow_left, arrow_right, etc
- Minify JS and CSS
- Use Sass for CSS
- Use feedburner?
- Add superfeedr hub link to RSS feeds
- Consider SubToMe button https://www.subtome.com/publishers.html
- Pagination. Infinite scroll, with standard paging for fallback.
Not currently necessary for items, could be useful for blogs though. Explore options.
- Implement Schema.org microdata: http://schema.org/docs/gs.html
- Implement Open Graph protocol: http://ogp.me/
- Meta title and description? https://developers.google.com/+/plugins/+1button/#plus-snippet
- Watch: http://support.google.com/webmasters/bin/answer.py?hl=en&answer=35624
- Google Sitemap: http://support.google.com/webmasters/bin/answer.py?hl=en&answer=183668
- We define records in data.clj but don't always use them, often just creating a map
- Implement encrypted PayPal buttons to avoid users tampering with prices, etc.
https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_encryptedwebpayments#id08A3I0P017Q
Current version of the site uses non-encrypted buttons anyway
=== Admin backend
- Add a history tracking entity. When an item attribute is changed, store a
diff into a History domain; something like
{:id 220 :type cap :field "price" :old-value "25" :date-changed "_"}.
where _ is a JodaTime DateTime formatted with ISODateTimeFormat.
- If/when an item is renamed, it cannot be renamed to a name that a different
item has owned in the past so 301 redirects converge on the unique items