HN user

gmassman

166 karma

https://gmassman.com/

Posts4
Comments76
View on HN

I’ve been migrating our services off of Azure slowly for the past couple of years. The last internet facing things remaining are a static assets bucket and an analytics VM running Matomo. Working with Front Door has been an abysmal experience, and today was the push I needed to finally migrate our assets to Cloudflare.

I feel pretty justified in my previous decisions to move away from Azure. Using it feels like building on quicksand…

The BEAM is an amazing piece of technology. It’s built to scale massive concurrent systems and has great developer ergonomics. I’ve used it with Elixir and it’s really a breath of fresh air as far as running a webserver goes. Much more flexible and simpler to manage than a python or nodejs runtime, and also capable of scaling up with far fewer resources than you would think. Highly recommend giving it a go!

Nice work Hunter! I’m starting a hardware side project so I’ll definitely be giving the book a read. Hopefully it helps me avoid some of the common electronic pitfalls.

Spends more time explaining why TypeScript in Svelte is problematic than actually fixing TypeScript in Svelte.

Damn, that’s brutal. I mean, I never said I knew how to fix ComponentProps or generic components, just that they have issues…

Morals aren’t always involved in commercial software development, and likely they never have been in any of your workplaces. However, I think it’s a gross mischaracterization to claim that morals and business don’t have any overlap. I work in the health tech industry, and I feel good knowing that patients benefit from using our device. I know I wouldn’t feel the same way if I was working at some fintech optimizing stock trading to the Nth degree.

I agree with your point in general, but saying one needs to be great at using AI tools gives way too much credit to companies’ ability to identify low performers. Especially in large organizations, optics matter far more than productive output. Being able to use AI tools is quite different from saying you are using AI tools!

This is a very handy postgres extension! We've been using it at my job for a couple years now to generate test datasets for developers. We have a weekly job that restores a prod backup to a temporary DB, installs the `anon` extension, and runs pg_dump with the masking rules. Overall we've been very happy with this workflow since it gives us a very good idea of how new features will work with our production data. The masking rules do need maintenance as our DB schema changes, but that's par for the course with these kinds of dev tools.

All that said, I wouldn't rely on this extension as a way to deliver anonymized data to downstream consumers outside of our software team. As others have pointed out, this is really more of a pseudonymization technique. It's great for removing phone numbers, emails, etc. from your data set, but it's not going to eradicate PII. Pretty much all anonymized records can be traced back to their source data through PKs or FKs.

What Is Vim? 2 years ago

It’s been a long time since I used vscode (~5 years) so my experience may be out of date. But I recall the vim plugin missing the quickfix list and :cdo. Also there were quirks with y and p that didn’t happen when using vim (maybe extra whitespace getting inserted).

Alembic is certainly a bit of a challenge to grasp at first, especially if you want to do anything more complicated than create or alter tables. However, it does provide a great amount of flexibility if you want to implement more complex migration functionality. It allows library developers to add powerful features that would be very difficult to do with Rails/ActiveRecord or Django ORM. FWIW I maintain the flask-audit-logger package. It allows users to maintain audit logs of specific tables using postgres triggers. Being able to create custom migration operations is really an amazing feat. The alembic docs are quite dense, but the code is well organized and very readable.

I don’t want to overly generalize, but N+1 problems are very real and frequently occur in code written by more junior developers. Their impact and occurrence rate are dependent on the nature of the application though.

I also think there’s an avoidance to simply “translate” a GQL query into an SQL query. Not that it can’t be done, but it allows a lot less flexibility in the backend as far as code patterns that can be adopted. Basically it minimizes the use of ORM models, which may be a pro for some and a con for others.

I haven’t worked with GraphQL in over 4 years since I left my last job. I actively made a choice not to use it at my current job and steered the ship towards REST endpoints, mostly because it would be easier to build authorization middleware. Also like the author of the article discovered, code littered with dataloaders is a pain to maintain.

This pattern appears frequently in just about all programming languages. I’ve written a lot of JS and Python, and a moderate amount of Elixir, and this pattern crops up quite often. Usually it’s a side effect of complex scopes with several layers of function calls.

Honestly I’m a little surprised you haven’t seen this pattern. The only times it wouldn’t be used are when people rename variables, which is frankly a practice I abhor.

From what I understand though, it’s often possible to just “look” busy without actually being productive. Seems like cranking out design docs and scheduling meetings to make yourself and your work appear important can push one up the ladder a lot faster than making improvements to the codebase will. Optics matter most in organizations the size of Google.

I think personality matters a lot here. One person may flaunt their open source contributions to their colleagues because they like the kudos. Another person may quietly commit and never publicize themselves because they don’t like being the center of attention. Both can even be true of the same person at different points in their careers!