Your argument basically implies that you wouldn't consider anything a full Linux system unless you can run a web browser in a fancy GUI. Sorry, that's just not a valid argument.
Agreed in theory. But now I seek a better term to distinguish a netbook running a distribution of POSIX/Linux, which can be used for lightweight terminal-based or graphical programming on top of POSIX and optionally X11 and Wine, from a Chromebook or Android device, which runs the Linux kernel but isn't quite a close substitute in this respect.
It is always possible to write Python modules that requires specific hardware or is incompatible with different parts of an operating system.
Agreed. One needs to choose modules that are available on all the platforms on which you plan to deploy. For a GUI, one ought to choose a module that Python for Android, Python for X11/Linux, and Python for Windows have in common. The annoying part about this though is that tkinter module is specified as part of Python's standard library on GUI systems. So what GUI module should a program written in Python use instead?
I'm under the impression that there were a lot more breaking changes from 3.0 through 3.3 than from 3.3 through 3.6 (stable) or 3.7 (beta). It took time for a much-needed reboot of Python to stabilize, and in particular, 3.3 was the first version that could coexist with 2.7 on Windows through py.exe. Is this a wrong impression?
I wish there were some other way to short-circuit forum pedants who think they can score a point by reminding readers that devices locked down to run otherwise incompatible userlands happen to have the same kernel.
"Why can't I find a decent Linux laptop in stores?" "There are plenty of laptops that run Linux, namely Chromebooks and Android detachable tablets." "But they don't run Linux applications, or at least they self-destruct if you try."
The actual dependencies for my work flow are POSIX, Python, GNU Make, X Window System, and Wine. So how should I go about expressing that concisely without making the question too specific to my particular work flow?
If you're going to name via dependencies then why would you only list one of the dependencies in its name rather than all of them?
It's a matter of correlation. If a system has the dependency that forms part of a platform's name, then it's far more likely than not that the system has, or that its administrator can practically install, common dependencies of other applications for the same platform. By this measure, perhaps GNU is most central to server applications and programming tools designed for Linux, and X Window System to desktop GUI apps. Hence the names "GNU/Linux" and "X11/Linux" to contrast with "Android/Linux".
And what constitutes a GNU/Linux system?
Free Software Foundation acknowledges use of Linux apart from the GNU OS while intentionally declining to give a precise definition. This has led David Johnson to write an article titled "By Any Other Name" making the reduction to absurdity argument you may have been anticipating, largely by replacing GNU with an adaptation of the FreeBSD userland. But my personal definition, based on correlation with installable dependencies, is GNU Coreutils plus two other major components of GNU, such as Bash, GCC, glibc, and Emacs. This means that Cygwin, MinGW with MSYS, and Microsoft WSL are GNU/Windows, and a full installation of DJGPP is GNU/MS-DOS or GNU/FreeDOS.
And further to your question does an application written for the GNU C runtime not run on bionic for example or do you need to include that as part of your naming convention?
Some applications are specialized to run on glibc, the implementation of the C language and POSIX standard library included with GNU. Others will run on any reasonable implementation of the C library that provides varying level of support for POSIX, such as Bionic. But many applications built for Bionic have a more central dependency they can cite, namely the Android userspace.
Applications written for X11 will run on systems with X11- which doesn't include most of the hundreds of Linux systems I've owned or administered
Among the subset of those Linux systems that you have administered that also have a graphical user interface, how many have X11?
Applications written for KDE will run on KDE systems, Gnome applications on systems with Gnome, etc.
Most popular KDE Plasma distributions will let the administrator easily install a package containing libraries to run GNOME applications or vice versa. As far as I can tell, Android is an outlier in this sense.
On a Linux desktop or server, you're probably using GNU Coreutils along with Bash and glibc, even if you have replaced GCC with LLVM or Emacs with Vim. Other systems, such as Android and home network appliances, run Linux without GNU. They replace GNU with things like Google Bionic, uClibc, Newlib, and BusyBox.
I don't call it GNU/Linux because all of the GNU stuff can be replaced
Even if you can take a desktop or server system and replace most of the GNU userspace with BusyBox or FreeBSD's userspace, there's a big difference between a GNOME, KDE, Xfce, or similar system on one hand and Android on the other. So perhaps "X11/Linux" might be more honest.
If the browser, mail program and updater are all installed and flagged as OK by the OS, any popup that asks about internet access should be fairly uncommon.
Add to that list your chat client, your file backup client, your RSS reader, your weather widget, your NTP (time of day updating) client, your music streaming client, your video streaming clients...
Linux dominates on servers and portable devices (Android is Linux).
Are laptop computers "portable devices" by your definition? If not, how meaningfully not? Answering that question might help you understand what Microsoft is targeting with Windows on ARM.
IBMers are advised to use Big Blue’s preferred sync ‘n’ share service to move data around.
I guess those who work in the field will end up seeing a lot more cellular data bills attributable to use of "Big Blue’s preferred sync ‘n’ share service".
A simple MacBook Pro with 8GB and an i5 is more than enough for me to load RDP, terminals for SSH, and the applications I might be using locally.
Ideally, you'd be making the most of what you can run locally. Because otherwise, how much data does your use of RDP, SSH, X11-over-SSH, and VNC-over-SSH amount to per month? And how much would such a cellular data plan cost? Not everybody happens to live in an area where city buses offer Wi-Fi at no additional charge to paying riders.
Load the page with an autofocused <button> element, and instruct users to press the Enter key. Chrome should be treating activations of that button as user gestures.
Overall I agree though, web is a terrible way to write a game. There are much better ways.
What are these "better ways" that don't require certifying and pushing out six separate binaries, one each for Windows UWP, Windows 7/8/10 desktop, X11/Linux, Android, macOS, and iOS? Web is the only JIT allowed on iOS, for example.
I imagine that there are far fewer of any single model of netbook than for the NES. This diversity makes it harder for people like me to find a community of other people knowledgeable enough to perform component-level repair on a particular model of netbook than for the NES.
A fraction in ratio notation, such as 1/2, is assumed to be exact unless specified otherwise. A decimal, on the other hand, often represents an interval of real numbers based on significant figure conventions. For example, 0.5 means "anything that rounds to 0.5", namely the interval 0.450 to 0.550, and 0.50 means "anything that rounds to 0.50", namely the interval 0.495 to 0.505.
Ubuntu Server, yes. Anything that relies on the presence of an X server, not quite yet. WSL users trying to run GUI apps have to obtain an X server elsewhere, which usually means a decade-old copy of Xming.
Mac OS 1 through 9 use the same newline as ProDOS on the Apple IIe: $0D. Mac OS X 10.0 through 10.11 and macOS 10.12 to present use the same newline as UNIX: $0A. Traditionally, MS-DOS and Windows have used the same newline as Digital Research's CP/M: $0D $0A.
The $0D $0A sequence dates back to the Teletype Model 33 terminal, one of the first terminals to use ASCII. It could process a carriage return ($0D) and a line feed ($0A) in parallel, but because a return took longer than a line feed, computers sent the return first, then the line feed, then a split second of pausing before the next character so that it wouldn't get smeared across the page during the return. If your Model 33 had the optional ASR paper tape drive, you might have had to use the delete key to insert the pauses yourself.
UNIX relied on terminal drivers to convert a newline to whatever sequence a particular terminal needed. CP/M just encoded what the terminal expected directly into an application. MS-DOS was originally a clone of CP/M (and DR-DOS was forked from authentic CP/M), and Windows was originally a GUI shell around MS-DOS. Though MS-DOS 2 was sophisticated enough to use these sorts of drivers, it had to remain compatible with applications designed for the much more CP/M-like MS-DOS 1.
Your argument basically implies that you wouldn't consider anything a full Linux system unless you can run a web browser in a fancy GUI. Sorry, that's just not a valid argument.
Agreed in theory. But now I seek a better term to distinguish a netbook running a distribution of POSIX/Linux, which can be used for lightweight terminal-based or graphical programming on top of POSIX and optionally X11 and Wine, from a Chromebook or Android device, which runs the Linux kernel but isn't quite a close substitute in this respect.
It is always possible to write Python modules that requires specific hardware or is incompatible with different parts of an operating system.
Agreed. One needs to choose modules that are available on all the platforms on which you plan to deploy. For a GUI, one ought to choose a module that Python for Android, Python for X11/Linux, and Python for Windows have in common. The annoying part about this though is that tkinter module is specified as part of Python's standard library on GUI systems. So what GUI module should a program written in Python use instead?
I'm under the impression that there were a lot more breaking changes from 3.0 through 3.3 than from 3.3 through 3.6 (stable) or 3.7 (beta). It took time for a much-needed reboot of Python to stabilize, and in particular, 3.3 was the first version that could coexist with 2.7 on Windows through py.exe. Is this a wrong impression?
Now imagine a herd of wildebeest stampeding all over suit-clad businessmen who want to lock down the act of computing.
I wish there were some other way to short-circuit forum pedants who think they can score a point by reminding readers that devices locked down to run otherwise incompatible userlands happen to have the same kernel.
"Why can't I find a decent Linux laptop in stores?"
"There are plenty of laptops that run Linux, namely Chromebooks and Android detachable tablets."
"But they don't run Linux applications, or at least they self-destruct if you try."
The actual dependencies for my work flow are POSIX, Python, GNU Make, X Window System, and Wine. So how should I go about expressing that concisely without making the question too specific to my particular work flow?
If you're going to name via dependencies then why would you only list one of the dependencies in its name rather than all of them?
It's a matter of correlation. If a system has the dependency that forms part of a platform's name, then it's far more likely than not that the system has, or that its administrator can practically install, common dependencies of other applications for the same platform. By this measure, perhaps GNU is most central to server applications and programming tools designed for Linux, and X Window System to desktop GUI apps. Hence the names "GNU/Linux" and "X11/Linux" to contrast with "Android/Linux".
And what constitutes a GNU/Linux system?
Free Software Foundation acknowledges use of Linux apart from the GNU OS while intentionally declining to give a precise definition. This has led David Johnson to write an article titled "By Any Other Name" making the reduction to absurdity argument you may have been anticipating, largely by replacing GNU with an adaptation of the FreeBSD userland. But my personal definition, based on correlation with installable dependencies, is GNU Coreutils plus two other major components of GNU, such as Bash, GCC, glibc, and Emacs. This means that Cygwin, MinGW with MSYS, and Microsoft WSL are GNU/Windows, and a full installation of DJGPP is GNU/MS-DOS or GNU/FreeDOS.
And further to your question does an application written for the GNU C runtime not run on bionic for example or do you need to include that as part of your naming convention?
Some applications are specialized to run on glibc, the implementation of the C language and POSIX standard library included with GNU. Others will run on any reasonable implementation of the C library that provides varying level of support for POSIX, such as Bionic. But many applications built for Bionic have a more central dependency they can cite, namely the Android userspace.
Python
Breaks if you try to import tkinter.
Applications written for X11 will run on systems with X11- which doesn't include most of the hundreds of Linux systems I've owned or administered
Among the subset of those Linux systems that you have administered that also have a graphical user interface, how many have X11?
Applications written for KDE will run on KDE systems, Gnome applications on systems with Gnome, etc.
Most popular KDE Plasma distributions will let the administrator easily install a package containing libraries to run GNOME applications or vice versa. As far as I can tell, Android is an outlier in this sense.
Many Linux binaries run without modification on Android because all the syscalls are the same
How would one go about making a graphical application that runs without modification on Android and desktop "Linux" distributions?
Cygwin stands for Cygnus GNU/Windows. MinGW stands for Minimalist GNU/Windows.
On a Linux desktop or server, you're probably using GNU Coreutils along with Bash and glibc, even if you have replaced GCC with LLVM or Emacs with Vim. Other systems, such as Android and home network appliances, run Linux without GNU. They replace GNU with things like Google Bionic, uClibc, Newlib, and BusyBox.
Anyone who cares to can call it "Apache/Mozilla/Gnu/X/Gnome/Linux" if that's their preference, I call it Linux.
Then how would you answer the following: Will an application made for "Linux" run on an Android system, which uses Linux as its kernel?
I tend to use the terms "GNU/Linux" and "X11/Linux" when distinguishing the server and traditional desktop operating environment from Android.
I don't call it GNU/Linux because all of the GNU stuff can be replaced
Even if you can take a desktop or server system and replace most of the GNU userspace with BusyBox or FreeBSD's userspace, there's a big difference between a GNOME, KDE, Xfce, or similar system on one hand and Android on the other. So perhaps "X11/Linux" might be more honest.
If the browser, mail program and updater are all installed and flagged as OK by the OS, any popup that asks about internet access should be fairly uncommon.
Add to that list your chat client, your file backup client, your RSS reader, your weather widget, your NTP (time of day updating) client, your music streaming client, your video streaming clients...
Linux dominates on servers and portable devices (Android is Linux).
Are laptop computers "portable devices" by your definition? If not, how meaningfully not? Answering that question might help you understand what Microsoft is targeting with Windows on ARM.
There's now little reason to carry cash except for a few areas that don't take cards.
Or 16- or 17-year-olds, who aren't old enough to have a bank account of their own.
From the featured article:
I guess those who work in the field will end up seeing a lot more cellular data bills attributable to use of "Big Blue’s preferred sync ‘n’ share service".
A simple MacBook Pro with 8GB and an i5 is more than enough for me to load RDP, terminals for SSH, and the applications I might be using locally.
Ideally, you'd be making the most of what you can run locally. Because otherwise, how much data does your use of RDP, SSH, X11-over-SSH, and VNC-over-SSH amount to per month? And how much would such a cellular data plan cost? Not everybody happens to live in an area where city buses offer Wi-Fi at no additional charge to paying riders.
Load the page with an autofocused <button> element, and instruct users to press the Enter key. Chrome should be treating activations of that button as user gestures.
Overall I agree though, web is a terrible way to write a game. There are much better ways.
What are these "better ways" that don't require certifying and pushing out six separate binaries, one each for Windows UWP, Windows 7/8/10 desktop, X11/Linux, Android, macOS, and iOS? Web is the only JIT allowed on iOS, for example.
I imagine that there are far fewer of any single model of netbook than for the NES. This diversity makes it harder for people like me to find a community of other people knowledgeable enough to perform component-level repair on a particular model of netbook than for the NES.
Unix is not a text editor.
A UNIX system includes the vi application, which is a screen-oriented text editor. The standard specifies its behavior.
Perhaps the partial credit was that you couldn't recite or improvise a proof that B for any slope-intercept form line is always negative 1.
Proof:
y = Ax + C
y - y = Ax + C - y
0 = Ax + (-1)y + C
A fraction in ratio notation, such as 1/2, is assumed to be exact unless specified otherwise. A decimal, on the other hand, often represents an interval of real numbers based on significant figure conventions. For example, 0.5 means "anything that rounds to 0.5", namely the interval 0.450 to 0.550, and 0.50 means "anything that rounds to 0.50", namely the interval 0.495 to 0.505.
Ubuntu Server, yes. Anything that relies on the presence of an X server, not quite yet. WSL users trying to run GUI apps have to obtain an X server elsewhere, which usually means a decade-old copy of Xming.
Mac OS 1 through 9 use the same newline as ProDOS on the Apple IIe: $0D.
Mac OS X 10.0 through 10.11 and macOS 10.12 to present use the same newline as UNIX: $0A.
Traditionally, MS-DOS and Windows have used the same newline as Digital Research's CP/M: $0D $0A.
The $0D $0A sequence dates back to the Teletype Model 33 terminal, one of the first terminals to use ASCII. It could process a carriage return ($0D) and a line feed ($0A) in parallel, but because a return took longer than a line feed, computers sent the return first, then the line feed, then a split second of pausing before the next character so that it wouldn't get smeared across the page during the return. If your Model 33 had the optional ASR paper tape drive, you might have had to use the delete key to insert the pauses yourself.
UNIX relied on terminal drivers to convert a newline to whatever sequence a particular terminal needed. CP/M just encoded what the terminal expected directly into an application. MS-DOS was originally a clone of CP/M (and DR-DOS was forked from authentic CP/M), and Windows was originally a GUI shell around MS-DOS. Though MS-DOS 2 was sophisticated enough to use these sorts of drivers, it had to remain compatible with applications designed for the much more CP/M-like MS-DOS 1.