Details
-
AboutI'm a humanist, except for most humans I had business with.
-
Skillsc#, frontend, node, godot, maths, more maths, weird and seemingly useless maths, recklessly applying weird maths, slow-drinking, question-dueling, Python
-
LocationGuildford, UK
-
Website
-
Github
Joined devRant on 5/18/2018
Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API

From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
-
Finish my game. It will probably be shit because the concept just wasn't that good, but I will be able to extract 2-3 useful node modules once it's finished and tested properly. A VoIP system with overlapping rooms and an efficient co-browsing system without a serverside browser like Selenium are certain. Perhaps the plugin structure as well, but that's more architecture than code.1
-
Last December I discovered the Chinese curse "May you live in interesting times", and my new year's wish was that there be interesting times. This year I wish there be mundane times.2
-
Literally unlimited? Everything buildable.
Figuratively unlimited? Games. I want to make games but they're very time consuming. If I had so much time it would seem a lot on an exponential scale I'd finally be able to make games without the feeling of wasting my precious time ruining all the fun.5 -
What's the point of the "finally" block? Isn't it functionally equivalent to everything after the try { } clause?5
-
[CSS]
I'd like to create a fixed aspect ratio box that remains centered in its parent such that two of its sides are always touching the parent. I know about the padding-top hack, the problem is that that won't make the box narrower if the parent isn't tall enough.
Is this even possible in CSS?
I like riddles and I don't expect a solution, but I'd like to know if it's even possible before I spend days researching.18 -
Typescript is my new favorite and my grudge is the stupid scoping of type assertions. I have an async function that checks whether a variable is set and awaits a change event if it's undefined. This function is working javascript but invalid according to typescript, because it relies on the exact type changing while the function is running. I had to convert it to a mess of promises to bypass this because (and this is the best) the callback-based syntax of identical meaning will reset all type assertions, even locals that are never written after the callback's creation.8
-
I swear to god this industry needs some serious purging. I was trying to google the parameter to Node that crashes on unhandled promise rejections so that I can get a stack trace and debug it properly, and literally all relevant SO questions were asking how to _prevent node from crashing on unhandled promise rejections_. In what realm is that preferred behavior?7
-
Riddle me this: (Arch) Whenever network connection is lost, NetworkManager freezes for a good 10s. Neither nmcli nor nmtui nor client applications get anything back from it during this time. After that 10s, it detects that the connection was lost and continues normal operation.12
-
So apparently due to an extremely talkative x input driver and an error in a certain app, I've been running an emergent keylogger on my computer for half a year. On every keypress event, the driver would call the app, the app would segfault, the driver would log the incident including the event to /var/log and then crash, and the app would restart the worker. I noticed this when I started wondering why /var/log is over 100GB in size.14
-
I had a brainfart and I can't google it, do you happen to know of a game that deals with inventory in the style of a stack (large, but you can only access the topmost few elements at any time)?4
-
Why on Earth is React.Component.state public? This doesn't make any sense. It has no significance, but it just feels so, so stupid.2
-
The first rule of networking: You can't claim that a message had been received until you have heard the reply.5
-
What are my odds that V8 will recognize my efforts and convert my for loop to use SIMD? It literally just adds the elements of a Float32Array to another, it's the single best chance for compiler optimizations to shine.4
-
You ever get that experience when you drink some water and the colors become brighter, the room expands in size and your future suddenly seems simple and straightforward?8
-
If Java versions can coexist on a system
If all java versions have their own packages on the AUR
If you can change envvars in a launch script and be sure that all processes of the application will persist your settings
Then why THE FUCK do package maintainers keep announcing to change the default java version to install their package, rather than explicitly doing that by themselves? Fuck off, do you really think yours is the only package that needs a specific Java version? Do you think each and every user will write their own init script, or edit the PKGBUILD to include the new version as an envvar in the desktop file? This is why Arch has a bad name, and they're fucking right. If you don't have the time to put a single motherfucking diff in the motherfucking pkgbuild to specify the java version in the desktop file, then don't fucking maintain the package. I know there are too few maintainers, but pretending to maintain a package while doing fuckall is much worse than leaving it unmaintained on the AUR so the first person who has time can pick it up.1 -
Hooray! voice is now working on localhost! Now to find a high latency, low reliability connection to stress-test the thing. Do you reckon sending the packets 3 times to echo.websocket.org is unreliable enough?
-
I'm trying to build VoIP into my browser-based game, and holy shit are sound processing people bad at explaining stuff.
Every stackoverflow answer has badly named variables, noone names the algorithms they're using (which makes research near impossible), and literally every single Web Audio API pipeline I have seen so far contains at least one unexplained effect with no parameters, but it's a different effect each time.
One guy had implemented some kind of smoothing for catching up with the stream after interruptions (where the playback speed is proportional to how far we're behind the intended latency), without ever mentioning it anywhere. And this is meant to be a basic example!4 -
I have a readonly object property foo on a typescript class. When I create an instance bar by calling the constructor, bar.foo doesn't compare equal to this.foo as seen from within bar several async calls later. What could I have possibly fucked up?5
-
Whoever designed the Google Play geographical restrictions had never travelled
1. Changing my country locks it for a year
2. I can only have one country
Clearly, people only cross borders once a year and don't need to download apps like the official local public transport route planner.15 -
So I just found out that multi-line editing can copy a matrix of letters and paste it on other lines. This is amazing. Imagine being the person who thought of this feature.1
-
You seek persistence, stability or want to know what you'll be doing 20 years from now.
You like variety
You want to socialize -
Always test your fucking mocks
I spent 3 weeks debugging every part of the application, except for the mock network connection. The mock network connection didn't trigger closing events on the sender side. -
Fuck Avahi, fuck Aruba AirGroup, fuck Bonjour and fuck "zeroconf" networking. I spent all day configuring it.12
-
Everyone else complains about the lack of tooling, shitty online tools or technical analphabetic coworkers. While all of these happen to devs, they're much, much rarer.
-
How bad an idea is it to avoid having to write VoIP for my game by writing a discord bot instead that moves people between rooms that represent the literal rooms in game?10