< Back to the archive

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

Issue #159 - March 27, 2022

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

Top comment by smilliken

My company runs without containers. We process petabytes of data monthly, thousands of CPU cores, hundreds of different types of data pipelines running continously, etc etc. Definitely a distributed system with lots of applications and databases.

We use Nix for reproducible builds and deployments. Containers only give reproducible deployments, not builds, so they would be a step down. The reason that's important is that it frees us from troubleshooting "works on my machine" issues, or from someone pushing an update somewhere and breaking our build. That's not important to everyone if they have few dependencies that don't change often, but for an internet company, the trend is accelerating towards bigger and more complex dependency graphs.

Kubernetes has mostly focused on stateless applications so far. That's the easy part! The hard part is managing databases. We don't use Kubernetes, but there's little attraction because it would be addressing something that's already effortless for us to manage.

What works for us is to do the simplest thing that works, then iterate. I remember being really intimidated about all the big data technologies coming out a decade ago, thinking they are so complex that they must know what they're doing! But I'd so often dive in to understand the details and be disillusioned about how much complexity there is for relatively little benefit. I was in a sort of paralysis of what we'd do after we outgrew postgresql, and never found a good answer. Here we are years later, with a dozen+ postgresql databases, some measuring up to 30 terabytes each, and it's still the best solution for us.

Perhaps I've read too far into the intent of the question, but maybe you can afford to drop the research project into containers and kubernetes, and do something simple that works for now, and get back to focusing on product?

Top comment by mschuetz

> better privacy/security than a webapp.

It's the complete opposite and one of the reasons I prefer to use a comparable web app over a native desktop app. Installing an app requires way more trust into it than using a web app that runs inside a heavily restricted sandbox.

As for why I also like to prefer developing web apps, that's because the available tools make web development more productive. Checking changes to the source is near-instant by simply pressing F5 in the browser, and the dev tools in browsers are some of the best you can get for debugging.

Top comment by Ayesh

Not a switch per se, because I still work on IT related stuff, but I started a bakery and a retail store (two separate businesses).

I hired a chef and a manager to do the work professionally, and I pay for wages, rent, material, etc. But I get to learn the immense efforts it takes for a brownie to be on a table, for a cake to bring a smile to face, and a cheesecake to melt in the mouth. It was a fresh experience, and I really like the change of pace it brought. We have been experimenting with waffles, brownie flavors, cheese cakes, etc. It feels like buying a new domain every day!

Top comment by perardi

Practice. Practice practice practice. Which sounds daunting, but…

…now, I realize it’s unfair to map physical appearance to awkwardness, but…let’s take a look at me in 2008 versus 2021. https://imgur.com/7sR0qKt Can you infer I might have been awkward? Because I was awkward. Always had been, and in a lot of ways, I am still am.

But I am vastly better than I used to be. And it was practice. Slow, slow, slow practice. I started at the gym. Built a little confidence. Got a job where I was required to be in more meetings. Built a little more confidence. Moved to a new city. Built even more confidence. Joined a sports league. Built yet even more confidence. It’s a slow process of leveling up and being out there and exposed to the world and learning to live in it.

And as you get older, I find for me it’s gotten easier. People in their late-20s and 30s are not the back-biting den of snakes they were in high school—everyone begins to realize they have their own faults and foibles, and you begin to accept that other people are always going through things too. And, conversely, you begin to realize you’re never the star of anyone else’s internal story. People are paying far less attention to your awkwardness than you think. So…roll with it, find some hobbies you like that involve other people, and just keep practicing.

Top comment by Eric_WVGG

I wish I had realized that I was still young.

I had some early startup-ish projects in the late-nineties/early-2k's, they crashed and burned with the dotcom crash, and I felt like I had lost any chance at making something cool or any kind of impact. I even felt like, at the age of 28, I was too old for dating and had missed all my opportunities.

Things picked up for me in every respect — professional and personal — at age 35. You really are as young as you feel.

Top comment by oso2k

Almost anything from suckless.org.

Here's a windows manager (dwm) and it's docs and build system in 13 files and just around 3000 lines of code.

https://git.suckless.org/dwm/files.html

And sbase, a sort of "busybox-like" set of common *NIX base utils written to be small and portable. Some of the commands are just a few dozen lines.

https://git.suckless.org/sbase/files.html

Top comment by Animats



    nslookup
    > server a.ns.apple.com
    Default server: a.ns.apple.com
    Address: 2620:149:ae0::53#53
    Default server: a.ns.apple.com
    Address: 17.253.200.1#53
    > developer.apple.com
    Server:  a.ns.apple.com
    Address: 2620:149:ae0::53#53

    developer.apple.com canonical name = developer-cdn.apple.com.akadns.net.
    ** server can't find developer-cdn.apple.com.akadns.net: REFUSED
Ah. So Apple's own DNS servers are redirecting developer.apple.com to something on "akadns.net", which is operated by Akamai. But Apple's own DNS servers refuse to resolve that, probably because it's not in the apple.com zone.

More:

    nslookup
    > developer-cdn.apple.com.akadns.net
    Server:  127.0.0.53
    Address: 127.0.0.53#53

    Non-authoritative answer:
    developer-cdn.apple.com.akadns.net canonical name = world-gen.g.aaplimg.com.
    world-gen.g.aaplimg.com canonical name = apple-c.g.aaplimg.com.
    apple-c.g.aaplimg.com canonical name = apple-cf.g.aaplimg.com.
    apple-cf.g.aaplimg.com canonical name = apple-lr.g.aaplimg.com.
    > server a.ns.apple.com
    Default server: a.ns.apple.com
    Address: 2620:149:ae0::53#53
    Default server: a.ns.apple.com
    Address: 17.253.200.1#53
    > developer-cdn.apple.com.akadns.net
    Server:  a.ns.apple.com
    Address: 2620:149:ae0::53#53

    ** server can't find developer-cdn.apple.com.akadns.net: REFUSED
It's clearly a botched DNS configuration. Not clear what the intent was. Did they really want to point "developer.apple.com", a web site, to "developer-cdn.apple.com.akadns.net", which is a DNS server? Or am I misreading that?

It's generally considered bad form to have all the DNS servers for "example.com" under "example.com", by the way. If you mess up "example.com", or it goes down, getting to it to fix it can be difficult.

Anyway, this looks like an attempt to outsource something to Akamai that went badly wrong.

Top comment by lbriner

It's great that he is still up for working!

At risk of getting flamed...

It's tricky I think because even if he can learn to program to a suitable standard, I think the reality will be that people will see him as a "junior" but you will have a different working dynamic since it is easier for an e.g. 30 year old to coach someone who is younger if they are doing it wrong but could be tricky trying to coach an older person unless they have genuine humility, otherwise your dad might feel patronised or be offended by some youngster without the experience to coach well.

Another avenue, if it is just the industry he likes rather than programming specifically, he could probably get more distance by utilising his exec skills to do a technical management role like Product Manager, Product Owner or Project Manager. He could then get as much exposure to the programming as he wants without needing to produce as much of it as would be expected of a dev.

Don't know, just thinking out loud.

Top comment by jmyeet

The problem with all these desktop UI toolkits is they have a look and feel all of their own (IMHO). You can make buttons look like Windows buttons on Windows and OSX buttons on OSX but that's only superficially cross-platform.

Different OSs have different norms, expectations and design languages.

What I'd like to see is something that abstracts as much as it can but still allows you to make something look like a native app on that platform. That would mean you'd need to do some programming for each platform but honestly I don't think there's a good way around that.

The solution isn't Electron. Way too heavyweight. Wayy too resource intensive. Way too risky by having a huge attack surface.

An additiojnal problem with Java is bundling such an app. Requiring a JRE on a target platfrom is (IMHO) a big problem. They're far from universal now. Something that compiles to a static binary. There have been efforts to create self-contained standalone packaging for Java applications. My understanding (which may be incorrect) is that all of these solutions are still somewhat suboptimal.

Top comment by deadcore

The how - depending on the protocol.

Signalling System No. 7 - ISDN User Part spec (found here: https://www.itu.int/rec/T-REC-Q.763-199912-I/en) allows you to specify both a calling party number (3.10) and generic number (3.26) (the UK spec adds an additional presentation number so you have 3). This will typically require the help of an operator which is 'connected' to the network on the PSTN. A real business case can be made; like a generic, non geo support numbers appearing on the persons phone instead of the geographical number of the office which called. Either a bit of social engineering or findings a less scrupulous operator is all you really need to do

SIP has FROM and P-Asserted-Identity headers which follow the same process