overture
fuse
overture | fuse | |
---|---|---|
3 | 21 | |
708 | 225 | |
0.3% | - | |
7.9 | 5.3 | |
24 days ago | 22 days ago | |
JavaScript | HTML | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
overture
-
CSS lengths in Gecko are limited to 17,895,697 pixels (2010)
Fastmail shows lists of messages using a progressively-loaded list, where each item is of a consistent height (88px for me, but it can be a few other values too, depending on your configuration—I think 51px is the default). This means that the scrollbar is real and accurate, and you can seek to any point in your mailbox easily (provided your platform allows interacting with the scrollbar, which largely means “on desktop platforms”). But this does cause problems for very large mailboxes, because browsers only support finite lengths.
A few years back, while I worked at Fastmail, we had a ticket come in from an IE user that they could suddenly only access the first few messages in their mailbox. Trouble was they’d gone over IE’s limit, and IE just ignored the entire height declaration in that case, and so you ended up with only the initially-rendered list items available.
The limits I found:
• Firefox: ignores declarations that resolve to a value higher than 17,895,697 pixels (which is a bit more than 2²⁴).
• IE: ignores declarations that resolve to a value equal to or higher than 10,737,418.23 pixels (2³⁰ − 1 hundredth pixels).
• WebKit: clamps values somewhere around 2²⁵ (~33,554,432) pixels; clamping means you don’t need to worry about it so much, since that was the best workaround in other browsers anyway.
And so we ended up with the workaround code at https://github.com/fastmail/overture/blob/41cdf36f3e7c8f0dd1... (the Firefox check was of much older vintage, I just added the IE case). (Nowadays, the IE part is gone again because IE is gone, hooray!)
So yeah, it actually only took about 200,000 messages in the list to hit this limit and fall over, or subsequently just make the bottom of the mailbox inaccessible. 200,000 messages in one mailbox is uncommon, but not at all unrealistic, especially in an “All mail” sort of mailbox.
-
Defensive CSS
One uncommon place where clipping is justified at the design level: lazy-loading but finite lists. I’ll use Fastmail’s webmail (on which I worked a few years back) as an example. I could load a list of a hundred thousand emails, and each message in the list is 88px tall (containing four lines of text—approximately, sender and date, subject, and two lines of preview, with truncation on each), so the list container is made to be 8,800,000 pixels high¹, and I can use its scrollbar to immediately jump to any place, and it will figure out which messages to fetch and render based on the scroll position. If the subject line were wrapped, which would be nice at times, you’d lose this ability: you’d have to guess the approximate height of each element, and your scroll positions will be imprecise and you’ll have to make messy adjustments from time to time. Overall it generally won’t be too bad so long as there’s not too much variation in them, but it’s definitely still inferior.
¹ Browser do have limits on how large you can make containers, and handle excess in different ways. IE had the lowest threshold of failure at around ten million pixels, beyond which point it would ignore values; the workaround I implemented in https://github.com/fastmail/overture/commit/8d01c74d8c5d4ae0... came as a direct result of a customer reporting that scrolling was broken in IE in their mailbox with a couple of hundred thousand emails. Firefox breaks a little after 2²⁴ pixels, also ignoring values, so it’s still covered in https://github.com/fastmail/overture/blob/0c9828a5b77ad14383... (note the IE stuff is gone because IE is dead! :-) ). Chrome accepts larger values, but clamps them to about 2²⁵ pixels.
-
Server-Sent Events: the alternative to WebSockets you should be using
It is, however, interesting to note that Fastmail’s webmail doesn’t use EventSource, but instead implements it atop fetch or XMLHttpRequest. An implementation atop XMLHttpRequest was required in the past because of IE, but it still deliberately doesn’t use EventSource; my foggy recollection from a few years ago is that it had to do with control over timeout/disconnect/reconnect, and handling Last-Event-ID, plus maybe skipping browser bugs in some older (now positively ancient and definitely unsupported) browsers. The source for that stuff is the three *EventSource.js files in https://github.com/fastmail/overture/tree/master/source/io.
fuse
-
Castle Game Engine Roadmap
Nakama does not have shared parallelism, look at http://fuse.rupy.se for better scalability.
- Unity Tutorial
-
SpaceTraders: A multiplayer game built on a free web API
While this seems focused on trading, kinda like EVE (spreadsheet MMO), I think physical action is the real attraction of 3D graphics/audio:
So I made a very scalable MMO protocol: https://github.com/tinspin/fuse
It's event based so analog movement should be compressed, which means headshot FPS are not the target audience. But it works fine with action games that take scalability into concern.
I'm curious how hard people find it to adopt. I'm guessing I need to deliver a good and open game on top of it to see adoption.
- Platform for an online multi player card game?
-
Making a multiplayer server
You can tak a look at my multiplayer system if you need inspiration: https://github.com/tinspin/fuse
-
3D MMO backend + client
This is the source available server: https://github.com/tinspin/fuse
-
Server-Sent Events: the alternative to WebSockets you should be using
You don't need to use Event-Source to use SSE, look at how I implemented it here:
https://github.com/tinspin/fuse/blob/master/res/play.html#L1...
The XHR ready state 3 was wrongly implemented in IE7, they fixed it in IE8.
-
Ask HN: Where do you hang out virtually online?
If you just want to play a multiplayer cube drop game and chat you are welcome at http://fuse.rupy.se
You can make rooms but they get the name of the user, so I guess you need to create a user with the name of the topic you're interested in! Xo
-
XMPP, a Comeback Story: A Protocol for Robust, Private and Decentralized Comms
I made a better standard for this: https://github.com/tinspin/fuse
But of course it's suffering from this: https://xkcd.com/927/
-
Free Multiplayer Puzzle Online
I made a multiplayer game like Dr Mario that is in alpha: http://fuse.rupy.se
What are some alternatives?
wa-automate-nodejs - 💬 🤖 The most reliable tool for chatbots with advanced features. Be sure to 🌟 this repository for updates!
Mirror - #1 Open Source Unity Networking Library
FiraCode - Free monospaced font with programming ligatures
nakama - Distributed server for social and realtime games and apps.
dom-examples - Code examples that accompany various MDN DOM and Web API documentation pages
pglet - Pglet - build internal web apps quickly in the language you already know!
hasses
cinny - Yet another matrix client
markwhen - Make a cascading timeline from markdown-like text. Supports simple American/European date styles, ISO8601, images, links, locations, and more.
rsocket-java - Java implementation of RSocket
vaku - vaku extends the vault api & cli