Because you won’t determine the type of NAT during hole punching. This requires the client sending two UDP packets to two different IP addresses, then comparing their source addresses on the server.
Normally yes, you can just assume that two clients you are trying to connect both have port restricted cone NAT, and run the hole punching algorithm, and if the connection fails after ten seconds, show message to the users ‘Error 418: your router is a teapot’.
The one use case is running STUN/TURN server for NAT hole punching, that requires two separate servers, or one server with two IP addresses. You will only need that to run masterserver for games that support hole punching, or to run VoIP telephony / teleconference server.
Another use case is reliability, when your server is connected to several network providers, it will keep working if one of them has an outage, and will naturally have a different IP address for each network link. But your VPS does not have several network links, otherwise they would advertize that in bold red letters.
It’s supposed to be available on Android 15, but only on ‘select devices’, so probably only on Pixel.
Thanks for trying it.
You need to enter these commands in the Linux terminal app, not in the X server app. Once the two apps connect, it should be possible to launch another terminal inside the X server.
Go to your phone Settings > About Phone and tap “Build number” seven times. You will receive notification that your phone now has developer options enabled.
Settings > System > Developer Options > Linux development environment. On that page, tap the On/Off slider.
You will find an icon for the new Terminal app on your home screen. It’s going to download 500 MB of data when you open it.
Long-press the Terminal app icon, tap Info > Mobile data, and enable Unrestricted data usage.
Now you can download more packages inside your Linux virtual machine using apt-get
command, as described in my previous post.
Yup, Android is Linux, but you can’t run desktop apps on it like Gimp or LibreOffice or VS Code, that’s what Linux terminal is capable of.
Google’s bullshit strikes again! All apps must be built for Android 13 or they are removed from Play Store, apparently because Google could not do the Android security correctly for the first 12 versions. Now they can emulate Linux on Android, but cannot emulate an older version of Android on Android. And I last updated my app in 2021, during Android 11 era.
Here’s the link to sideload the app:
I’ll try to update it on Play Store tomorrow, if my crusty build scrips will work with the new Android SDK.
Someone who owns a fancy new phone with Android 15 or 16, could you please test if you can run GUI Linux apps on it using my X server app?
Supposedly it should work like this:
sudo apt-get install task-xfce-desktop
export DISPLAY=127.0.0.1:0
xfce4-session
Open XSDL app again, you should see XFCE desktop environment with mouse cursor, and you should be able to launch Synaptic and install other Linux packages.
Being direct is good. But ‘too complex, refactor’ as an explanation is just one word longer than ‘fuck off’. You need to explain in detail why the solution is bad and which parts should be changed, in this case it just shows that the reviewer did not actually read the code.
We want to inhibit when running stuff like pacman, wget, cp or mv
There is already a separate systemd-inhibit
command that does exactly what you need. Trust your users, they are capable of googling it (most of the time).
Only pacman and wget will benefit from suspend inhibition, because it will prevent breaking network connections. cp and mv will resume working just fine even when you hibernated your laptop while cp was executing. And in that case it’s less bug-prone to scan your system for active TCP connections to external addresses instead of adding a hack wakelock inside your terminal or inside wget.
It is also a poor idea to mess up with system-wide settings from some command when the user does not expect it, you’ll likely to get a thousand invalid bug reports that sleep mode is broken when some service randomly decides to use wget to continuously read from local Unix socket.
Jumping from loose-typed language to strict-typed language will be hard.
It’s also a matter of your general programming experience. Once you write, like, ten thousand lines of meaningful code in Python, learning C# should take you a month or two at most, you’ll know most programming concepts and algorithms intrinsically, and the rest is just learning syntax.
I have switched from XTerm to Konsole only a year ago.
it’s used to verify that OpenGL ES2 works onn your system. It’s the variant of 3D graphics drivers that is used on smartphones. Many apps nowadays write their GFX frontend with GLES2 so it uses the same code on phones and PCs, and if they compile the app to run in the web browser, WebGL is also based on GLES2.
Torvalds kicked out a bunch of Russia-based kernel maintainers.
The security issue is very likely scenario. If you’re in Russia, you can go to jail at any moment on totally bogus charges. It is very easy for FSB to pressure some random kernel maintainer into adding hard to detect backdoor into their code, it will be XZ situation all over again.
Yes they do. See the long-standing debate over the ban to export crypto algorithms to Iran.
What about systemctl poweroff
?
I had the root canal done without an anesthesia, because I did not want a needle sticking into my gum.
It was tolerable, I did not cry or anything like. The nerve was mostly dead anyway.
The dentist took his sweet time removing the nerve piece by piece with a probe, instead of just drilling the whole tooth through. It did not matter at the end anyway, because he filled the canal afterwards. And the molar has three roots, so he repeated that two more times.
I guess it depends on your pain tolerance.
C++ with -Wall -Werror, and no pointer diddling.
Back in the '90s, when you created a game, you had to build three separate game engines for DOS, Windows, and MacOS, with their separate audio and video drivers. Or you just selected DOS and ignored all Mac users.
SDL was revolutionary, it could create an OS window for you to draw onto (or emulate a full-screen ‘window’ for DOS), and output 2D video and sound using the same SDL calls, on DOS, Windows, MacOS, Linux, AmigaOS, and even Sony PlayStation. So you had the same source code compiling to 6 different game binaries for each platform.
SDL does not implement 3D graphics, it just initializes OpenGL in a window and passes that to your code, because the game studios went all ‘fuck you I’m using OpenGL or I’m ignoring your XBOX entirely’ so even Microsoft was forced to support OpenGL on top of it’s incompatible proprietary DirectX 3D drivers, so OpenGL became the new standardized cross-platform API for 3D graphics.
Vulkan is a replacement for OpenGL which can use multiprocessor architecture, OpenGL is strictly single-threaded so your high-end 12-core gaming CPU ends up with one overworked core drawing all the graphics and 11 lazy cores performing Windows update in the background. The rules are already established, so every GPU and chip manufacturer will either support Vulkan or not have 3D graphics at all.