• 0 Posts
  • 24 Comments
Joined 2 months ago
cake
Cake day: December 13th, 2024

help-circle















  • I’m working on implementing a new email parser and a new blob storage for my email service, https://port87.com/

    The new parser has a number of benefits, including being able to parse emails that consist of only binary data (something like emailing a zip file, without a text body, which Google does for their DMARC reports). It also makes it a lot easier for me to parse and store attachments.

    The new blob storage has the biggest benefit, that I can store things with arbitrary keys (just like S3), but it will automatically dedupe the data (unlike S3). It’s a WebDAV server that I also wrote, and it’s open source:

    https://hub.docker.com/r/sciactive/nephele

    I’m also working on storing all of the original email streams in blob storage, so that when I implement IMAP, I don’t have to rebuild the email streams.

    This simplifies the data storage requirements, because I don’t have to store everything necessary to rebuild the stream into the database. I can just store the text, HTML, and references for all the attachments.

    I honestly don’t understand why the industry has settled on the S3 protocol for blob storage. It’s not a great protocol, and it really limits what you can do. WebDAV is super extensible and if you design your system right, works just as well as S3 for the things S3 is supposed to be better at, like paginated listing.



  • JavaScript is adequate for doing everything, but should be used sparingly.

    I feel like if your web page is mostly dependent on the speed of your chosen framework, it’s probably not doing anything complicated enough to warrant a framework in the first place. In that case, JavaScript becomes unnecessary fluff.

    My email service is mainly bottlenecked by the speed of my Postgres queries, so optimizing them is much more important and impactful. Good database and query design is a must.

    Just look at Gmail. Their frontend is slow as hell, but their backend is lightning fast, and nobody really complains. Once you’re past that first couple seconds of a loading bar, you care a lot more about how quickly the next interaction takes, and the next, and the next. I believe page load times for a dynamic page don’t matter as much as the industry thinks they do.

    That being said, there’s obviously an upper limit. Five seconds to even get the HTML would be really pushing it.

    I’ve written tons of simple pages that just use plain old JS too. It’s surprisingly easy to not use a framework these days. Here’s one of my favorites, that lets you perform WebDAV functions all with plain JS:

    https://github.com/sciactive/nephele/blob/master/packages/plugin-index/src/IndexPage.svelte

    (It’s rendered on the server side with Svelte into plain HTML, and all the JS in the <script> tag at the top there is plain JS that runs in the browser.)