Document: WM-031 P. Webb
Category: Project 2018.04.17
Socii Dispatch 04
Abstract
If you want something done right…
Body
In the almost two months since my last dispatch I moved my life from
New England to Tennessee, started working on a new product, and
learned of a couple other social networks in development. This might
be a long read, make yourself comfortable.
1. Why Move?
The rent was too damn high! Also, with my skills I can work
anywhere. Why not live in a place where the weather is (generally)
better and the price of living is more agreeable?
2. New Product
While working on Socii, I made the conscious decision not to add
an analytic script for two reasons:
1) I use ad blockers and it is safe to assume that the people
who would join Socii do too. Therefore, my analytic script
would be blocked. Why bother adding one in the first place?
2) Gauges (the analytics provider for all my other sites) has been
sold at least three times. They could get sold to Google or
Facebook at some point and I am fundamentally opposed to using
their products.
However, this became a hindrance at some point because Socii would
error on a route and crash (unhandled promise rejections are
bad!). I started thinking about having a service that could plug
into my codebase with minimal change while also showing me where
things happen.
Enter Chew (analytics you can count on)!
It works by capturing the request object in your (Express 4)
middleware and sending the relevant data to Chew. I spent a couple
weeks working on this and it’s just about ready for private
testing (basically, me using it on my own sites and fixing bugs
that occur). All you need to get started is a free Chew account
and two lines of code in your Express-based app: importing the
Chew npm package and a single line in your middleware.
As usual, I learned some things along the way and I look forward
to applying these new learnings to Socii. I tend to refactor (and
write more code comments) as I develop so I can help my future
self when something needs fixing (or removal, I love when I can
remove code).
Naturally, I used Socii as a base for Chew and came up with a very
basic SaaS boilerplate:
The left side refers to self-explanatory services while the right
side shows you the URLs each service would be reachable at.
The admin console is new to me and I haven’t actually created one
yet but I like the idea of a master interface being made available
to admin users, instead of embedding admin controls inside the
app. Separation of concerns, yes. More stuff to manage? Of course!
The tradeoff is worth it to me.
Thanks to the power of Nginx and reverse proxies, you can run all
of these on the same physical server! Probably shouldn’t have the
CDN there though. For Socii, I have a service that optimizes
images before placing them in storage (DigitalOcean Spaces, their
version of Amazon S3).
Once I have Chew launched and the notifications feature launched
in Socii, I’ll start working on open-sourcing my SaaS boilerplate.
I just realized this is a great time to segue.
3. Social Networks
I frequent HackerNews and commented on a post[1] where someone
listed their social network feature wishlist. Of course, I plugged
Socii because it will match (most of) what they want when it is
feature-complete. I fully expect downvotes and was pleasantly
surprised to see the opposite occur! Furthermore, other people
working on social networks reached out to me via LinkedIn and
email. Unfortunately, aside from initial introductions I haven’t
conversed with these folks. I hope that changes soon, we could all
learn from each other.
It is quite obvious that "social" is on the mind of everyone and
I’m glad that people are trying their hand at improving
the Internet. 🕸