Recent submissions

Comment · 3 years ago
I just would like to give my opinion on some of your points, which I don't agree with:

> Looking at the documentation directly, what they advise you to do is kind of the worst idea they could come up with: https://stripe.com/docs/webhooks/signatures – you need custom logic[2] to verify that their MAC ("signature" they call it incorrectly) is valid and you need to configure a different secret for each of your endpoints

It certainly help that I use their official SDK, but it's one line of code to add the signature validation. Also, I'm not sure why you would want to create a lot of endpoints to listen to these webhook. I simply have one, and the Stripe SDK helps me in determine the event type, its deserialization, etc.

> Payment process information is such a vital business concern that "let's try to call them and if that fails... well we tried" is broken on principal alone

That's not how it works. The webhooks keep retrying with exponential backoff until they succeed. You can also manually retrigger them for individual events.

> The obvious approach is to have an event list which you as customer long-poll or just poll every few seconds if your framework doesn't support async well

Nothing is preventing you to do that. In fact, in my codebase I do polling to the Stripe API as a fallback to check if payment is successful in case there are issues with webhooks. But it's nice to have the webhook telling you immediately if a payment fails/succeed, in order to give feedback to the user fast about the status of his payment (and not wait the next long polling iteration)

Not everything on Stripe is perfect, but I do find it really pleasant to work with in general

Comment · 3 years ago
Comment · 3 years ago
Business are currently required in Italy to accept cards. Some still do not, but they can get a fine for it.
Comment · 4 years ago
Here are the signs that I had during my burnout: - Hoping to get sick to get a few days without having to cope with work

- Trouble sleeping

- Not being able to enjoy my holiday / weekend due to the thought of having to go back to work with an increased backlog

- Enhanced imposter syndrome

- Work productivity drop

- Complete lack of purpose in the daily work

All of the above built up very slowly and I didn't realize until things got overwhelming. The good news for me was that all of the above disappeared almost instantly when I switched jobs.

Comment · 4 years ago
We use an approach similar to what's described here: https://blexin.com/en/blog-en/build-scalable-and-resilient-a...

Using the Actor Model provided by Akka and an event sourced architecture does not fit very well with the request-response model of HTTP. Commands are usually issued in a fire-and-forget pattern, with resulting events being pushed to the client in a completely asynchronous way.

By using websockets via SignalR, we can better accomodate this pattern on the client code as well. On top of being a better fit with our backend architecture, it also provides some benefits in the frontend such as:

- Limited availability items disappear as soon as they actually are not available anymore, without the client having to refresh

- We can integrate more easily with payment gateways where payment confirmation usually arrives via a server side webhook. We can then easily push the "payment succeeeded" event to the client as soon as we receive it, without polling.

- Even the backoffice benefits from real-time, as all backoffice users are guaranteed that when they look up a customer/orders/products, they are looking at the most up-to-date information, even if somebody else edits the same record at the same time, or the record is updated by external APIs/scheduled job.

- We can provide easily real-time dashboboards that are listening to the feed of events being persisted

Comment · 4 years ago
I've spent the last year working on an e-commerce project that esclusively uses websocket for real-time updates and communication. There are some great benefits to it, but websockets also introduce a lot of technical challenges that may not be obvious when you start. Things that come to mind are:

- Persistent connections make horizontal scaling more difficult

- Web Application Firewall don't usually support payload scanning for threats over websocket messages (eg. Cloudflare)

- If you need to integrate with third parties, you may end up needing a standard REST API anyway, since it's a lot less common to integrate via websockets (especially server-side). You then end up with two APIs. Also, websockets have less standard tooling for automatic documentation purposes such as Swagger/OpenAPI

- It's harder to load test the system, difficult to estimate the breaking point of the infrastructure via websockets

- HTTP Status Codes provide a standard error mechanism to HTTP server calls, while with websockets it's entirely up to you (which can be a good and bad thing)

- You need to manage explicitly situations where the connection drops and what to do when it recovers, as you may have lost some data in the meantime

- You give up a lot of standard mature tooling for caching and rate limiting

Comment · 4 years ago
I can confirm that this happens in Italian as well. I've never visited the site before and my search placeholders in the top bar are just full of weird NSFW terms.

Weirdly, it only happens to the desktop site, if I access it via mobile I get mostly normal suggestions.

Comment · 4 years ago
I don't know java, but that's not the message I got from the comment. It looks like with java, 3 VMs with 2 cores are better than 6 VMs with 1 core, which may be forgotten when configuring equivalent kubernetes services.
Comment · 4 years ago
> like stackoverflow.com, that punish people who don't accept all cookies by prompting on every visit

Well, not sure if that's fair. Until you accept at least the "strictly necessary" cookies, it makes sense that you get prompted the consent at every visit, since no cookies are saved.

Comment · 5 years ago
I hope they are talking about hashed passwords. There is no reason why in 2021 passwords can be recovered in clear text, even in a legacy code base...
Comment · 5 years ago
I've now worked for about six months on a Akka.NET codebase. I find it a very elegant high-performance framework that gives you a lot of flexibility in how you want to solve a wide range problems.

This being said, I've been burned already several times by the complexity and its raw power. The codebase tends to become verbose and difficult to navigate (everything being an ActorRef). Debugging is difficult and coding is challenging for junior engineers, as you said. I found it very unforgiving to mistakes, and it's easy to shoot yourself in the foot if you use the abstractions without knowing very well what's going on under the hood. Edge cases can be very tricky to manage.

I'm still very conflicted about it. One one side the services powered by Akka are quite stable and performant, but I'm not sure the complexity justifies the means.

Comment · 5 years ago
I've used BEE editor many times before, and I've always always loved it.

When I found out the company was founded in Italy (my home country) I was very pleasantly surprised, as tech companies with such well designed products are very rare over here. Building a friction-less editor for engaging, reliable email layouts is a complicated engineering problem, and what your team built is absolutely outstanding.

Good job, really :) the company success is fully deserved.

Comment · 5 years ago
Probably because number of hours worked per week is only one of the metrics involved in the general ranking.
Comment · 5 years ago
I've recently started a remote job with a UK-registered company, and I am working from Italy. If the company does not have a local office in the country (which mine doesn't), the easiest way is just to become a contractor/freelance and send invoices for b2b services. I had to hire an accountant to manage taxes, but it's doable.
Comment · 5 years ago
I live in Rome, so I can give a bit of feedback on it. The road has been turned to pedestrian-only since August 2013 by the mayor Marino. It has been like that ever since. There is currently no plan for deconstruction, and the future of the road is still up to debate. I think it makes for a very nice walk in the heart of Rome, with plenty of space for tourists to wonder around without being cramped.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton