[homepage|cv] WM-026 [text|html] [remarks]
              
Document: WM-026                                                 P. Webb
Category: Project                                             2018.01.19

                           Socii Dispatch 01

Abstract

   Updates with Socii’s development

Body

   For the past month I’ve been hard at work, developing basic social
   network features. Namely, account and post creation and editing your
   profile. To be honest, it’s not glamorous work but I’ve been having a
   blast doing it. Here’s what’s been completed thus far.

   1. Profile

      First look at your profile

      On your profile, you’ll see your avatar in whatever shape you
      choose from available options which are a triangle (the default),
      circle (classic), square (old-school), diamond, and inverted
      triangle. Below your avatar in the first sidebar, you’ll find your
      name and username.

      When you sign up for Socii, you’re automatically logged in and
      given a generated username based on your email address so feel
      free to change it if something like paul927465 doesn’t quite fit
      you. Anecdotally, I’ve noticed that as people go through life
      changes they tend to want user/name changes as well so I’ve made
      Socii unreliant on usernames on the back-end. Friends and
      followers would want to know if you go from SuperAwesomeMegaTon
      to netop://~tonton and I’m building a notification system to
      accommodate that.

      There are currently no limits on username changes and I can
      conceivably see how harassment could occur with it. You’ll be
      equipped with proper muting and blocking tools should you
      unwittingly connect with an annoying person.

      In the other sidebar, you’ll see something called "top 8". Older
      readers will remember the glory that was MySpace and I wanted to
      bring that back as I found it useful.

      Sometimes I just want to visit a friend’s page and I forget what
      their username is (and, if you follow a lot of people who post
      more often than your friend(s), you’ll miss their posts). I sure
      know what my friends look like though and it’ll be pretty sweet
      to see which shapes they choose for their avatars.

      And of course you’ll find your personal stream of posts. Within
      each post block is a menu indicator that contains actions for
      editing your post, quick copying of the direct link to the post,
      pinning the post to your profile, and deleting the post. If you
      want to like your own post for some reason, you can definitely do
      that. You can also create threads by responding to your own posts.

   2. Post creation

      Post creator, clean
      Post creator with a code snippet
      That rendered code snippet…wish it had color

      Socii supports Markdown! I’m using a customized version of
      Showdown[1] to enable it. The eye icon in the footer of the post
      creator allows for previewing what your post will look like when
      it’s live. The character limit is 150 for reasons that will become
      apparent in a couple months, after I ship a major
      (secret) feature.

      However, your post can be up to 5,000 characters long if you so
      choose! 😰 That’d be extremely annoying to attempt scrolling in
      a feed so posts longer than 150 characters will be truncated by
      default with a button to expand it should anyone want to read the
      entire thing. The question mark icon will give you quick tips on
      how to use Markdown to add a bit of flavor to your posts.

      If you’d like to read a long post but don’t have time at the
      moment, you can save that post for future reading.

      Respond to your own post to create a thread

      For the moment, only one post status type is available and that is
      "publish". Forthcoming updates will bring three more: drafts,
      queues, and schedule. Similarly, the only post creator mode
      available is "text" but future updates will bring photo, audio,
      and video options.

   3. In progress

      There’s still a good amount of work to get done. For starters,
      there’s no way for you to change your avatar and that’s the
      first thing I do when joining a new service. I also want to get
      notifications and the global/top 8 feeds working. I think being
      able to toggle between what everyone is talking about versus
      whomever in your top 8 is talking about will be neat.

      I want to be more open about developing Socii for a
      couple reasons:

      1. I want this social network to be good for people.
      2. I develop in a vacuum and while I share updates with a couple
         people IRL, I think other people could benefit from what I’m
         learning in the process.
      3. External reminder of what I have accomplished. Most people can
         agree that we accomplish things but beat ourselves up for that
         one thing we didn’t do. That’s demoralizing and I don’t want
         to stop before Socii gets into people’s hands.

      With that said, I’m making a new commitment to releasing Socii at
      the end of this month for alpha access to members of my mailing
      list. If you haven’t joined yet, you can find it at
      socii.network[2]. For more information about Socii, you can read
      this post[3] or check out the manifesto on Socii’s official
      marketing page.

   4. Things I’ve learned

      I figured it’d be a good idea to share what I’ve learned since my
      last blog post about Socii:

      1. I’m tired of rounded corners everywhere. I’ve removed
         border-radius from all the Sass files.
      2. GraphQL is awesome. However, I’ve been building REST APIs for
         the past month and have two microservices to handle things thus
         far and that means I’m not transitioning to GraphQL until maybe
         version 1 of Socii is solidified. 😤 Wish I learned of it
         sooner (it’s basically a better way to do REST and talk
         to servers).
      3. Styling with :root. This[4] is how everyone will have
         customized profile pages. I don’t know why every example I’ve
         seen it used has root styles overriding each other. I try to
         write my CSS in a way that doesn’t have style overrides because
         it’s a hassle to deal with. If you have :root.user styling,
         just have :root:not(.user) for your default styling. Easy.

   That’s all for now, see ya! 🕸