< Back to the archive

Like what you see? Subscribe here and get it every week in your inbox!

Issue #36 - November 10, 2019

If you are looking for work, check out this month's Who is hiring?, Who wants to be hired? and Freelancer? Seeking Freelancer? threads.

Here are the top threads of the week, happy reading!

Top comment by jmstfv

I am a solo founder of a website monitoring SaaS [0]. Theoretically, my uptime should be higher than that of my customers'. Here are a few things that I found helpful in the course of running my business:

* Redundancy. If you process background jobs, have multiple workers listening on the same queues (preferably in different regions or availability zones). Run multiple web servers and put them behind a load balancer. If you use AWS RDS or Heroku Postgres, use Multi-AZ deployment. Be mindful of your costs though, because they can skyrocket fast.

* Minimize moving parts (e.g. databases, servers, etc..). If possible, separate your marketing site from your web app. Prefer static sites over dynamic ones.

* Don't deploy at least 2 hours before you go to sleep (or leave your desk). 2 hours is usually enough to spot botched deploys.

* Try to use managed services as much as possible. As a solo founder, you probably have better things to focus on. As I mentioned before, keep an eye on your costs.

* Write unit/integration/system tests. Have a good coverage, but don't beat yourself up for not having 100%.

* Monitor your infrastructure and set up alerts. Whenever my logs match a predefined regex pattern (e.g "fatal" OR "exception" OR "error"), I get notified immediately. To be sure that alerts reach you, route them to multiple channels (e.g. email, SMS, Slack, etc..). Obviously, I'm biased here.

I'm not gonna lie, these things make me anxious, even to this day (it used to be worse). I take my laptop everywhere I go and make sure that my phone is always charged.

[0] https://tryhexadecimal.com

Top comment by aasasd

A place I worked at had a symlink pointing to the app directory, and a new version went to a new dir. This allowed us to do atomic deployments: code wasn't replaced while it's being run. A rollback, consequently, meant pointing that symlink to the older version.

For the database, during a migration we didn't synchronize code with one version of the db. Database structure was modified to add new fields or tables, and the data was migrated, all while the site was online. The code expected to find either version of the db, usually signaled by a flag for the shard. If the changes were too difficult to do online, relatively small shards of the db were put on maintenance. Errors were normally caught after a migration of one shard, so switching it back wasn't too painful. Database operations for the migrations were a mix of automatic updates to the list of table fields, and data-moving queries written by hand in the migration scripts—the db structure didn't really look like your regular ORM anyway.

This approach served us quite well, for about five years that I was there—with a lot of visitors and data, dozens of servers and multiple deployments a day.

Top comment by klodolph

Therapy is more effective than it has any business being. If you can make it happen, try it.

I’m going to start by saying I have a mood disorder, and I don’t understand anxiety disorders because they’re part of a completely different world from mine. Conversations I’ve had with people that have anxiety disorders have reinforced this idea that I really don’t understand anxiety disorders or relate to them.

The worst parts for me are some times in the past several years when I have moved, changed jobs, changed relationships, and had relatives who passed away. To be clear, when I say “and”, I am talking about many of these things happening at the same time. Having strong relationships, having a therapist, and keeping a regular schedule mean the difference between seeing me as my usual self and seeing me disappear for a few weeks.

I have also decided never again to tell my manager any details about my condition. In the future it is an “unspecified, diagnosed disorder for which I am receiving professional treatment.” I was lulled into a false sense of security by having excellent managers at the beginning of my career and it turns out that I was very lucky; most managers are fairly mediocre and will do damage more often than not if you give them too many details about your mental health. Find somebody else to talk to about it—there are therapists, friends, and support groups e.g. on Facebook.

Top comment by denimboy

Couple ideas:

* work out. I like free weights and bike riding or running for cardio. I recommend the local YMCA as these tend to be more community driven and less profit motivated pickup centers

* cook. this has several benefits. it can be challenging and relaxing while providing necessary sustenance at a price point cheaper than going out. can also be a social thing.

* take a class / learn something. it can be work related, semi work related or something else. I like the free educational videos on the webs. lately I've been getting back into math which is semi work related but in the past I have taken language classes at the local community college.

* outdoor activities or team sports. Did you have a favorite thing to do outside as a child or teen? Maybe you could take it up again or try something new. basketball, soccer (football if you are not in USA), surfing, geocaching, ultimate frisbee, bicycling, golf?

* amateur radio. getting a license is easy if you are at all technical and it opens up some doors for mucking with WIFI or LORA, SDR, and more. hams are an aging group but they are friendly, knowledgeable and desperately want their hobby to survive.

* maker projects. there are many projects already documented on the web or you can build your own. kind of amazing what one person can do with a raspberry pi, some basic electronic parts, and a bit of code.

* volunteer. so many organizations need skilled people. can you mentor people on computer skills or something else?

Top comment by viraptor

I fell like this is a troll so good I'm even questioning if it's really a troll. But in short: you can't require non-ascii symbols for languages which are supposed to be accessible. And <- won't work since it's a valid syntax in other contexts.

Top comment by cik

Well, if you're willing to accept my paranoia - here's what I did for a reasonable test. Again, it's only a start - there's more fun and paranoia to be had. At the end of the day it's about having an identity, not a blog.

1. Buy a credit card in cash from somewhere without cameras.

2. Use that credit card to buy a phone number through many of the real voip providers.

3. Buy a used laptop on CL/Kijiji in cash, making sure the pickup is someone's house. Bonus points if you make a friend do it.

4. Go to a Starbucks with your new laptop, sign up for gmail or protonmail using your new phone number.

5. Nuke your laptop and reinstall. It's a burner. Make sure you change the MAC address, just for profit.

6. Sign up for free VPN (500MB start) with something like TunnelBear, using your new email address.

7. Connect to your VPN from the laptop. Now use TOR.

8. Remember that credit card? Time to buy another one - this time so that you can pre-fund Amazon credits (or DO). They'll both accept prepaid credit cards.

9. Blog, do your thing - but only ever publish from a dedicated VM on the laptop. Make sure you're using firefox (or something else) in your VM to test your blog - through the SOCKS proxy you establish (ssh -D) to the host.

10/11. Nuke and rebuild VM and machine at will.

12. Every ~3 months, do a Kijiji exchange for a new laptop.

The above is in no way foolproof. But it's a reasonable start. For the record I don't consider this anonymous or paranoid enough.

Top comment by mirimir

Trying to circumvent tracking at the browser level is hopeless.

The only effective approaches that I know of are 1) using Whonix (best in Qubes) to connect via Tor; and 2) using multiple OS-level VMs that connect via different nested VPN chains.

And even then, there are risks from fingerprints that depend on GPU and virtual graphics drivers in VMs.

So when compartmentalization really matters, it's necessary to use different host machines, on different LANs (or at least vLANs).

Using Tor is rather painful, given all the CAPTCHAs. And the learning curve for Qubes is a little steep.

But using multiple VMs with different nested VPN chains is actually quite convenient, once you've set it up. I use a pfSense VM as the gateway router for each VPN service. So creating nested VPN chains is easy: You just create virtual networks of the pfSense VMs, with Linux workspace VMs wherever you like.

With a decent host machine, I can work ~seamlessly as a few low-isolation personas via nested VPN chains, and another few high-isolation personas via nested VPN chains and Whonix instances.

Top comment by unlinked_dll

The technical name for this problem is "blind source separation" [1] and is related to the "cocktail party effect" [2].

[1] http://www.mit.edu/~gari/teaching/6.555/LECTURE_NOTES/ch15_b...

[2] https://en.wikipedia.org/wiki/Cocktail_party_effect

Commercial solutions are out there, but imo/e they're not always that great and the problem is of prime interest for researchers both in industry and academia.

Top comment by seanwilson

> Who really cares about algorithm on daily bases.

I find that statement really depressing to be honest. Why would you be so happy to deprive yourself of a huge source of potentially useful information that is the foundation of our field that shouldn't take long to learn?

Algorithm and data structure knowledge helps you write processor + memory efficient code that scales well, and stops you reinventing the wheel when you know how to classify what category of algorithms your problem fits into (e.g. it's a graph problem, or a search tree problem, so now you know where to look for solutions).

You might not need this knowledge every day but someone who understands fundamental algorithms and data structures surely has an edge over someone who does not. If you've been programming for a while, going through a book to learn the fundamentals should only take you a few days as well - why do people make such a big deal about this?

I've interviewed programmers before who couldn't explain what a linked list or a hash table was, and when you'd you use one of those over an array. To me, that's a super bad sign they don't know how to assess algorithmic complexity when coding. It might not matter for some kinds of coding with modest datasets but it'll bite you eventually.

Top comment by Doxin

Bullying is definitely a real thing, but I think limiting your definition of bullying to only physical acts is doing a disservice to the victims.

I've been bullied for a long time, and am glad that that's in the past now. I've never been physically harmed, I have no scars or hospital visits or even bruises.

I've been affected mentally though. Turns out that being told you're ugly or weird or stupid 15 times a day really takes a toll on your mental health. How are you supposed to be a normal kid if no one will even talk to you? How are you supposed to learn to socialize? How are you supposed to have a positive self-image if you get told you're shit at every turn? How are you supposed to focus on learning if people are constantly trying to get your attention just to say mean things? How are you supposed to play if everyone just runs away from you? Sure the adults tell you you're smart and beautiful and worth having around, but how believable is that when they don't lift a finger to stop the name calling? How are you supposed to lead a normal life if you're carrying all that baggage and there's no one who will help?

I've linked the "To this day project" video in the comments of HN often enough when the topic of bullying comes up. For me seeing that video was a real turning point. It was the point where I stopped believing all the things that mean little shits said about me years ago. I still cry when I listen to it every single time. So I'll link it again, in the hopes that it'll help someone else too:

https://www.youtube.com/watch?v=ltun92DfnPY

"I’m not the only kid

who grew up this way

surrounded by people who used to say

that rhyme about sticks and stones

as if broken bones

hurt more than the names we got called

and we got called them all"

-- Shane Koyczan