summaryrefslogtreecommitdiff
path: root/memos/WM-033.txt
blob: b7d0f7d9ea2b120af1a97ea2a6816e822094f3d4 (plain) (blame)
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
Document: WM-033                                                 P. Webb
Category: Project                                             2018.07.09

                           Socii Dispatch 05

Abstract

   Ship often!

Body

   I guess this is turning into a bi-monthly update? Don't fret, the
   silence doesn't mean there wasn't progress being made. Let's jump in.

   1. Quick life update

      I got a (remote) job! And a house! Kids are happy, wife is happy,
      so I'm happy.

   2. JSON Feed support

      Every profile is now equipped with JSON Feed[1] support! Created
      by Manton Reece and Brent Simmons, JSON Feed aims to be the new
      RSS. To access your feed (or others), append `/feed` to a user's
      profile page. Here's an example:

      ```
      https://hub.socii.network/Socii/feed
      ```

      Your feed is now available for whatever you wish to use it for.
      Maybe you want to display your latest posts on your personal site?
      Have a customized dashboard? Put 'er there!

      Socii is a social network, yes, but not one that wants to keep you
      on it all the time. Your data is yours.

   3. GDPR

      By now you've seen the emails and memes as a result of the passing
      of General Data Protection Regulation (GDPR) in Europe. Long story
      short, it's a collection of data protections passed into law for
      European citizens. This means, companies are required to protect
      data pertaining to any users from Europe and to also deliver or
      delete said data should the user request it.

      Unlike the major social networks here in America, I didn't opt to
      have two versions of privacy policies for users in Europe and
      those outside. EVERYONE deserves to have their data protected,
      exported, and/or deleted at a whim. To echo the words of Childish
      Gambino, "this is America".

      Now, GDPR isn't *perfect* but it's a step in the right direction.
      To that end, I've updated the policies[2] page to be more
      comprehensive about the data Socii collects, how that data is
      used, email addresses of the Data Controller and Data Controller
      officer, and so on. I dislike that it's so long though…I may bring
      back the TL;DR version from before and have a toggle to see both.
      Yeah, that's a great idea!

   4. Notifications

      This was a long time coming. When you favorite or respond to a
      post, the author will get a beautifully simple email stating such.

      The notifications tab on the hub is still empty for now but I
      *could not wait* to ship the workable part of this feature.

      `@ mention` support for notifications will come shortly. This will
      pave the way for private messages as well.

   5. Performance gains

      Yes! FINALLY. You wanna know why loading of `hub.socii.network`
      was so slow? I was literally loading…every…single…post before
      displaying the hub. Over time the wait got progressively worse
      because there were more posts to load.

      Enough was enough and after I shipped notifications, I got to work
      on implementing GraphQL-based pagination. I had this implemented
      *partially* for about a month or so but other issues plagued me
      more than the slowness of the hub. Pagination is ALSO active on
      profile pages. It may not be perfect but it's close.

      A blog post to detail how to do pagination in GraphQL without
      Apollo, Prisma, or whatever magic framework is forthcoming. I've
      had developers attached to the GraphQL project tell me that
      pagination is trivial[3], unimportant, or easy, both on GitHub and
      Slack. Or, that I NEED to use yet ANOTHER framework to achieve it.

      Good thing there are other places to find help. No matter how much
      I learn, I remember knowing a LOT less. I feel obligated to pass
      on the knowledge of dope things. Stay tuned!

   6. Low-hanging fruit and other changes

      - Email addresses can now have `+` and `.` characters, perfect for
        having multiple accounts and using email aliases.
      - When posts are deleted, favorite and reply counts are accurate.
      - When a post with replies is deleted, the replies lose the
        reply icon
      - Implementation of reposting is *canceled*, discussion here[4].
      - Message flasher (for lack of better description) has a
        reasonable z-index now. No more covering navigation menus.
      - Post preview button is now disabled when no text has been
        entered, bug report here[5].
      - New post modal now matches language with the button that
        triggers it, bug report here[5].
      - Visual issues regarding the Markdown help have been fixed.
      - Increased character count for "optimal display".
      - New post modal and reply box is now fully responsive.
      - Got rid of as many "magic numbers" from the CSS as possible.
        This required some refactoring.
      - Refactored all my microservices and added tests. TESTS.
        Currently, they check for out-of-date dependencies and lints
        the code.

   Things I've Learned

      1. You will almost always hate your old code.
      2. Refactoring is fun. I already knew this but I like reminding
         myself. It's an opportunity to replace/improve functionality
         with less code. AMAZING. 🤩
      3. Everything can be distilled into simple concepts if you think
         long enough.
      4. Big Social is duplicitous.

      ∴NetOpWibby[6], out! 🕸

References

   [1] <https://jsonfeed.org>
   [2] <https://socii.network/policies>
   [3] <https://github.com/howtographql/howtographql/issues/514>
   [4] <https://hub.socii.network/s/jfy2tm86000h10bk4i1epmp2>
   [5] <https://hub.socii.network/s/jgtl9k0n000wxobkq9a9u54k>
   [6] <https://hub.socii.network/NetOpWibby>