We are also looking to migrate off Cloudflare. I thought Bunny.net was mostly a pure CDN, not a reverse proxy like Cloudflare. Am I wrong? One of the most important things for us would be DDoS protection.
Self Plug-in: We are currently beta testing Hyvor Relay [0], a self-hosted alternative for sending emails. We are focusing more on observability (monitoring DKIM/SPF, periodically querying DNSBLs) and DNS automation.
A simple docker compose up can get a reasonably working setup [1]
We are working on an open-source, self-hosted solution [0] to make this easier. When you correctly set up DKIM, SPF, reverse/forward DNS for IPs, it is not much hard to get emails delivered. IPs can still get blacklisted and you need to monitor blacklists and contact them if it happens. Solutions like Postfix are great, but they lack observability. In our solution, we have developed dashboards and health checks to make it easier to find problems with the set up.
We are currently running beta tests (really appreciate it if you can join).
For the past two months, I have been working on Hyvor Relay [1], an open-source, self-hosted alternative to AWS SES, Mailgun. It's been an awesome ride learning SMTP and DNS in depth. And, we're pretty close to a beta release.
We did this [0] as a 3-devs startup, and it was one of the best things we ever did!
For us, we found ourselves repeating again and again when we had multiple UI projects. It became boring and we decided to write the design system. It took us about 3-4 months to complete this.
- It takes a LOT of effort to migrate old projects. A LOT! So, make sure you really have the time and effort for a migration like that.
- In my opinion, it only makes sense to have a component library if you have multiple different projects / repos.
- Try not to reinvent the wheel. Design your components library, but follow a pattern of a popular library so you can see "hey if you have used this library, it's the same here. Just the UI is different"
- Write an extensive documentation with examples (here's ours: [1])
- In our case, integrating dark mode, docs, and i18n into the design system (in an opinionated way) saved us a lot of time.
Slightly off-topic: Until last week, we used Redis for Laravel queues and cache in our blogging platform. We decided to get rid of Redis and use the database. The reason was that we are planning to allow self-hosting of our software so removing a dependency is a huge win to reduce complexity (didn't know about the license change then). There are a lot of arguments against using a relational DB for queues, but from our testing, it just worked! So, we just went with it in production. Surprisingly, there are no noticeable performance issues so far.
We initially used Redis because, well, Laravel recommends it. But, what I learned is that Redis is not a requirement until you absolutely need it.
Almost three years ago, but the last time we used database as engine for Laravel’s queue subsystem it exploded due to some database table locks under high load. We switched to redis and things just worked well.
if you have very high volume, there can be some tricks to using an rdbms as a queue system.
For Rails use, 37Signals recently released the open source solid queue package, meant for use with either msyql or postgres. It makes some odd choices, like separating things into different tables depending on state. And it also makes careful use of the not-necessarily-super-well-known (but standard, and in both mysql and postgres) `FOR UPDATE SKIP LOCKED` clause.
These choices were to get good performance at high volumes, which they think they have done and tested.
So it can be done! Probably. And indeed solid queue is MIT-licensed, there are not barriers to looking at the choices they made and copying them in whatever language/platform you want.
But it's not necessarily trivial. At non-huge volumes though it's probably not an issue.
This is cool! I recently worked on integrating something like this into our blogging platform [0] to help bloggers monitor their links automatically. One main problem is with popular websites which have pretty aggressive bot prevention mechanisms. They often return 5xx codes even in HEAD requests. How do you combat that?
I had to write a piece of logic that sends a GET when HEAD fails, because of a non-HTTP compliant servers. HEAD should in theory return the same status as a GET, but without any body. In practice, many web servers return 404, sometimes 500. HN itself returns 405 Method Not Allowed, which makes some sense, I guess.
The code in question, simplified:
defp try_get_request?(%Link{method: :head}, %StatusResponse{} = response) do
# Per HTTP specification, the HEAD response should be functionally equivalent to a
# GET, but shall not contain any body.
# Not all servers respect this, so might have a different status response on HEAD than on GET.
#
# We assume that some HTTP status codes are suspicious and worth retrying.
#
# HTTP 520 is seen with Cloudflare to mean "Web Server Returned an Unknown Error", possibly
# in response to a HEAD request.
response.code in [403, 404, 405, 520]
end
We recently re-indexed comments to Meilisearch (a PHP process that synced data from MYSQL to Meilisearch) after a Meilisearch version upgrade. It only took about 1 hour for about 12 million documents on a 16GB/4vCPU. In your case, maybe it was a config issue? Or, an old version?
The article mentions Image Streaming, which I've been practising since. Interestingly, it seems to work! I've have been seeing vivid dreams, and have been able to randomly visualize shapes. Nothing to prove it "cures" aphantasia, but we'll see :)
So, first thing, I have this inner monologue talking to me everytime. I have to first shut it up. This happens when I'm very relaxed and don't think about anything. Then, I slowly focus on the visuals I see (which is nothing). Then, suddenly some shapes come and go, and I try to keep them in my head as much as I can. To influence a flow of visuals, I look at a light and close my eyes. You see the afterimage of the light (which is a "eye" thing, not a "mind" thing). However, this has helped to start seeing some stuff in the mind, even though it takes 10-20 minutes of focus (and mentally exhausting!)
I have seen some shapes and a few colors for now. Most importantly, I have started to see vivid dreams in the last few days, which has never happened before (before that it was just a feeling not a visual. However, my father suggested this might just be that I have learned to remember dreams more by becoming more conscious about it, which is a possibility). It's too soon to judge. So, I'll keep doing it for a couple more weeks to see if it can help me see visuals rather than random flashes.
I'm aphantasic, though I'm not entirely sure that I have always been that way. I've recently been using Lumenate to meditate, and while it hasn't actually changed my aphantasia (yet?), I do get very strong abstract visuals when using the app. It's closer to the kind of thing you might see while on mushrooms than any kind of physical form. I absolutely suck at meditation usually as I just cannot switch off the inner voices, this seems better as it gives me something else to focus on.
If you are interested in internal visions, try flickering lights with closed eyes. Around 10hz they create strong internal visuals after about a minute. There are several apps that can do this— luminate is one, but there are free ones, too.
(Usual warnings about photosensitive epilepsy apply)