< Back to the archive

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

Issue #48 - February 2, 2020

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

Top comment by rayuela

Encourage people to participate in physical social gatherings that center around non-political issues, like hobbies.

We need to start emphasizing what we have in common, help people see that ultimately we're really not all that different from each other. The internet lets people hide behind this isolating veneer that makes it too easy to just shout at each other and behave in extreme ways that would never be socially acceptable in the real world. Interacting in real life significantly moderates people's behaviour and when social media and the internet facilitate segregation and amplification of extremes, spending more time in person might really do us a lot of good.

We need to put people in a context where politics is irrelevant and a shared interest has the opportunity to bond people who would otherwise not meet. It's the only way I see of countering Identity Politics that try to be all consuming.

It would also be helpful to encourage people to focus on more positive events. Outrage culture is a thing, only exacerbated by social media, where rage = clicks/views = money. We need to change the economics of this equation. We would really benefit from a culture that gave more attention to people doing good rather than just focusing on the villains in society.

Top comment by sgtnoodle

I'm helping to build a scalable system for delivering high value and life saving medical supplies to hard to reach places via autonomous aircraft. The system is currently operating in Rwanda and Ghana, and aggressively expanding over the next couple years.

Specifically, I spend a lot of time thinking about and writing embedded software. The aircraft is fully autonomous and needs to be able to fly home safely even after suffering major component failures. I split my time between improving core architectural components, implementing new features, designing abstractions, and adding testing and tooling to make our ever-growing team work more efficiently.

I did FIRST robotics in high school where I mainly focused on controller firmware. I studied computer science in college while building the embedded electronics for solar powered race cars, and also worked part time on research projects at Toyota. After graduating with a Master's degree, I stumbled into a job at SpaceX where I worked a lot on the software for cargo Dragon, then built out a platform for microcontroller firmware development. I decided to leave SpaceX while happy, and spent a couple years working on the self driving car prototype (the one that looked like a koala) at Google. Coming up on my third year, I was itching for something less comfortable and decided to join a scrappy small startup with a heart of gold. Now it's in the hundreds of employees and getting crazier and crazier.

Top comment by ttul

My company (MailChannels) sends email on behalf of more domains than any other transactional email provider (see https://trends.builtwith.com/mx/transactional-email/traffic/...) because our customer base is hosting companies rather than individual senders. The whole transactional space has matured in the past year with SendGrid's acquisition by Twilio and Mailgun passing through a couple of different private equity portfolios. Mailgun is simply trying to make a profit; removal of the generous free tiers had to happen eventually.

In their S-1, SendGrid disclosed that it earned about 73% gross margins, spending roughly $18M in cost-of-goods-sold to earn $52M in revenue (six months ending June 30, 2017). Around that time, we estimate that they were sending roughly 30 billion messages a month, suggesting that they were spending $18M to send 30 billion messages - that's about $0.60 for every thousand messages.

If SendGrid's costs are universal in the industry, then that 10,000-message free tier, therefore, is costing Mailgun perhaps as much as $0.60 x 10 = $6.00 a month. If you have thousands of free accounts, the cost adds up rapidly on the P&L statement. I could be off by an order of magnitude about the sending cost, but you get the point.

Top comment by reeddavid

Not a company, but sharing a personal project: I got a free broken 55" TV and turned it into a big daylight panel. I got a great explanation of why this works well (fresnel lens) from the DIY Perks channel on YouTube: Turning Smashed TVs into Realistic Artificial Daylight (https://www.youtube.com/watch?v=8JrqH2oOTK4).

The main board had failed so the screen was black and the backlight cycled on and off. After disconnecting the main board, the backlight stayed on. I am using the existing LED lights, but may replace them with the excellent color quality LEDs recommended by DIY Perks.

Top comment by adyavanapalli

Not that it's important making this distinction, but what you're describing doesn't sound like occupational burnout; you've listed significant trauma that are only exacerbating your work-related stress, and I'm really sorry you're going through this!

First, I would agree with @codingslave in that you SHOULD NOT quit your job, if you can help it. Let me explain: Work provides important scaffolding when you are in a rut. It provides routine and social contact. Without it, it is possible you might start sliding into poor sleeping habits and withdrawing socially, which can make things even worse. At the very least, find a less stressful job to move to before leaving your current one. If this is hard to do, please reach out to family or friends for help. Please understand that it's absolutely okay to struggle and have bad days. Give yourself permission to feel.

Second, it's awesome that you're seeing a medical professional/therapist about this, and I encourage you to keep doing so regularly. "What should I do?" I think you're approaching this well. I wish you the best!

Top comment by disillusioned

For my consulting business (average invoice size of anywhere from $15k-$125k), we exclusively accept paper checks, ACH (either as a direct credit for larger companies set up to do that,) or QuickBooks Online, which makes ACH relatively trivial, and they charge basically $1 to process it. Can't beat that with a stick.

For our clients, our preference is still Stripe, though we had a client deplatformed by them because their bank had problems with the product. (In our case, specifically, adult toys.) We had spoken with Stripe at length before investing in using them, and confirmed that this would be acceptable, as they had other adult toy companies on their platform, but Wells Fargo, paragons of fucking virtue that they are, decided to step in an try to get extremely and very awkwardly hands on with our specific products. (They tried to dictate what colors we could and couldn't offer, for instance. It was unpleasant, and we recognized we needed to leave immediately.)

We ended up back at a higher-risk merchant service provider, though we're paying typical rates because we fulfill an actual, physical product (not, say, porn), and our chargeback rate is very low. Still a frustrating experience, and yet another reason to hate Wells.

Top comment by McDev

I'm a self taught programmer and started developing for Android in 2012. It took me a while before I realised that you needed third party libraries to do absolutely anything useful as the platform APIs were so poor and undocumented. There were gaps everywhere and you needed to write tons of boilerplate code to do things properly.

Image loading was often a huge source of crashes due to out-of-memory errors and doing it properly wasn't trivial [0]. Libraries like "Glide" and "Picasso" solved this.

Using the camera hardware was awful. Device manufacturers would implement things differently, and break the camera API unexpectedly. Only recently [1] are we starting to see sane, consistent camera APIs.

Making network requests felt extremely clunky, and the platform JSON implementation wasn't performant, or easy to use as you had to manually parse everything. Retrofit [2] made talking to REST services much easier.

I could go on and on, but I'm sure there's plenty others here who can do that here. These days Android development is much, much more enjoyable. Kotlin has pretty much replaced Java in the Android ecosystem, and there's great reasources around on how to architect your app to make everything testable and easily scalable such as the architecture samples [3]. I've worked on a few React Native projects in the last year. I'm not a fan of it, but I definitely see the industry heading to some cross platform solution eventually.

[0]. https://developer.android.com/topic/performance/graphics/loa...

[1]. https://developer.android.com/training/camerax

[2]. https://square.github.io/retrofit/

[3]. https://github.com/android/architecture-samples

Top comment by sn41

Designing more forgiving interfaces.

I work in the public sector in India. Usually forms here are phrased in threatening terms - you can submit any document only once, and there is a threat of perjury for just uploading the wrong document etc. I proposed that we can utilise cheap cloud storage so that users can submit documents as many times as they want, and as long as any of the uploaded documents are correct, then it will be accepted.

This reduced the phone calls our office received by about 80 percent.

Top comment by wronghorse

My setup right now is to upload my ePubs to Google Play Books. Once your document/book is uploaded you can access it from the app on Android/iOS or directly from the web-reader on any browser.

Play Books automatically syncs your reading progress, notes, bookmarks etc and there's no additional overhead on your part.

Top comment by kisamoto

Depends on the project:

Firebase Authentication[1] is an excellent easy add on for apps (both Web and Mobile) that I want to get running quickly. It's free, scales, supports lots of social auth providers and can take care of email verification etc.

When I'm building a website it really depends. Wordpress and Django have excellent inbuilt authentication and authorization systems. Djangos can be quickly expanded to support social providers with `django-allauth`[2]

For everything else I use KeyCloak[3] - Red Hats open source Identity Provider/Single Sign On which supports oAuth2.0, OpenID Connect, SAML, themes etc. Documentation and support is relatively good but can be quite overwhelming especially if you're not used to the relevant standards (knowing the different flows in oAuth2.0 and which one you want to use).

[Self plug]: I'm building a KeyCloak-as-a-Service for those who don't want control of their authentication without the hassle of setting up their own cluster. We're in closed Beta at the moment but if you're interested you can search for "Tromsso keycloak"[4] and leave an email to be invited in.

[1] https://firebase.google.com/docs/auth/

[2] https://github.com/pennersr/django-allauth

[3] https://keycloak.org/

[4] https://tromsso.com/