It's leaking hydrogen !
keep filling !
804 publicly visible posts • joined 13 Aug 2006
Why can't we have a simple setup file like on windows or mac ? Applications should be distributed with everything they need and not have to pull in a metric crapload of other stuff. they should also install in their own container and not throw their stuff everywhere or modify the system.
To run x you need to first install y, z, q , p , r (but only 2.9 unless your kernel is 3.21.4.q.left and the wind comes from the east on a tuesday , but not in april or if the year is divisible by 5 , unless your neighbor just made a fresh cup of tea.. then it is ok to click cancel to proceed -facepalm-
.
There are so many flavors out there. this only runs on that, this thing only uses that package manager ... it's infuriating. Self deploying is what we need. without dependencies or prerequisites. the install package contains everything.
1) Avoid all the niche efforts.
2) Firstly, they're small.
3) Not many people use them
4) You'll have difficulty finding people to ask for help
5) third-party hardware and software probably won't work out of the box
6) and if you ask the vendor for help
7) game or a graphics card or a printer
8) Stick to the mainstream."
Windows and MacOS it is then.
1) not niche
2) not small (trillion dollar companies)
3) many people use it
4) easy to find someone who knows
5) third party hard and software do work out of the box.
6) There is an actual vendor as opposed to pet projects made in somebodies spare time
7) ooh . que the binary blob crusaders.
8) windows and MacOS it is then.
Then gain, already knew that. Linux on the desktop . Lol.
blind people don't even need monitors , why do they need a full blown graphical user interface ? think about it !
This is like making shoes with an attached staircase bolted on top of a car ... so you drive upstairs
Isn't that the real problem ? Should we maybe rethink how to build a user interface for disabled people ?
Alexa is far more useful for blind people (as a user interface) you can talk to it and it responds. no keyboard, mouse, monitor needed.
Drivers run on the OS side. Firmware runs on the hardware. The os interacts with the driver, the driver talks to the firmware on the device. Even if you had the source to the firmware there is didly squat you can do with it as you have no idea how the hardware works and you don't have the toolchain or compilers to build it anyway.
but but but ... there are all these user forums no? Where everything ends up in endless discussions of Vi vs emacs, KDE vs gnome and what color scheme is best...
Oh you are using flavor x of linux , should be using flavor y...
It's 2022 , can we move past it?
The operating system is just a layer to run programs.
Sometimes the application you want to use is Mac only. Sometimes it is windows only. If it's open source good chances are it runs on all.
The above distills as follows
- if you have a Mac you can run native mac and open source programs.
- if you have a windows box you can run native windows and open source programs.
- if you have linux ... you can maybe run open source provided you can find the right package installer and the right flavor of linux. (yeah yeah i hear you , you can compile it from source. but 99.9% of computer users don't know how to do that)
So why do you need linux on the desktop ? (as a average user)
looking at the stuff i use on a daily basis linux has nothing to offer.
Some are windows only. Solidworks , Altium ,Office. Adobe Photoshop and Lightroom , Illustrator others are ported to windows or exist on both platforms ( Altera/Intel FPGA software, several cross compilers, notepad++, inkscape ,daVinci video editor,) I use plenty of stuff that comes from the linux world, but as a windows port.
I find these endless discussions about what flavor-du-jour OS is best a waste of time. The best OS is the one that runs the programs you need. For some that is Linux, for others that is MacOs and for yet others that is Windows. To each his/her own.
It would be nice the have programs that do not depend on an operating system. Run anywhere. Then you would have a real fight at hand. The best OS would simply be the fastest, most stable and secure. OS makers would compete purely on the performance of the OS, not on the basis of available applications.
Now there's an idea. if we fit every cow in the world with a network transmitter. And we make inter-cow data exchange using line of sight lasers. No need to shoot stuff into space. Easy to maintain : grab the cow , replace transmitter. Use the horns as antenna masts.
The Cow Network.
provided you have enough closing parentheses for opening ones , got all your semicolons in line and told the compiler every time when you means assign and when you mean compare. ( = versus == )
I still cannot understand how so many languages cannot figure this simple thing out. This was solved in many older languages than C. Even every , often scoffed on, Basic compiler/interpreter can do it.
So we'll build it for an imaginary computer with an imaginary instruction set and then shoehorn that imaginary binary onto real hardware ? -FAIL-
THAT is the problem with all those catch-all compilers (and languages) we have today.
They compile for something with an architecture that does not exist and an instruction set that does not exist.
I've picked apart output of several compiler for embedded systems. Sending "Hello world" to a serial port. strings are null terminated like c.
in pseudo code :
string = {"hello world",0x00} // 12 bytes of rom space , null terminated string (11 chars + null)
MOV DPTR #string. // load the address of the string into the data pointer
:next_char
SNZ @DPTR // skip next instruction if not zero
JMP exit
:wait_for_port
SBC SCON,02 // Skip next instruction if bit clear register Serial CONtrol , bit 2
JMP wait_for_port
MOVI TX @DPTR // send character to TX register Move with post-increment DPTR
JMP next_char // see if there is something else
:exit
I've seen compilers that produce this : ( because they did not know the MOVI instruction)
MOV TX @DPTR // send character to TX register Move with post-increment DPTR
INCR DPTR
or this (because they did not understand DPTR is a hardware register and treat it as a variable)
MOV TX @DPTR // send character to TX register Move with post-increment DPTR
MOV A, DPTR // move DPTR to accumulator
INCR A // increment accumulator
MOV DPTR,A // move accumulator back
On a harvard machine you have dedicate mov operation that change depending if you are moving
ram to ram
ram to register
register to ram
io to ram
ram to io
rom to ram
rom to io
I've seen compilers that take that string in rom , allocate 12 bytes of ram , copy the string from rom to ram and send it out. Slightly smarter ones do it character by character but still need a rom to ram copy first.
Those are clear examples of the misery with generating intermediate machine code. They have one print function that is designed to take a ram pointer. Try to get a string from rom and it needs copying over first.
Optimization is not something to be done afterwards. Optimization needs to be done first. see what instructions are in the machine and map the source in the most efficient way.
Jump tables are a prime example of that. Switch case statements can easily be translated into jump tables. Depending on the selected branch all you do is add an offset to the code pointer so it lands in the jump table . There it finds a single move operation with the new target.
Your switch case statement translates to a constant speed operation (one ADD , one JMP), no need for testing anything.
Now, i do realize this is different on machines with different architecture or dynamically loaded programs. The above is just an example of how bad compilers can be when doing the compile to imaginary machine"
It pays to take a look at compilers that make code for one and one system only. They can heavily optimize for the architecture. Portability is in the source code, No need for an intermediate layer.
What's wrong with Goto ? your nicely crafted C code gets translated into assembler.... which is full of 'goto'. JMP operations in all their flavors and variants are nothing but a goto.
your nice do loops and while loops and switch cases all get converted to JMP operations.
Any complex case statement gets converted to a jump table.
There are even specific instruction like SZ : Skip next opcode if A register is zero .
SZ
JMP true_label
JMP false_label
if the register is zero the next instruction (jmp true_label) is skipped so the JMP false_label is executed
if non-zero the next instruction is executed. so it jumps to the true_label.
There is your if-then-else.... nothing but a conditional goto
All your subroutines and calls and any other stuff is translated into nothing but Goto, simply because that is how processors work !
C fits like pliers on a pig for most processors. The concept of heap and stack and streams works on a pdp-11. Not so much on any other architecture. Tape and punch card streams have gone the way of the dodo. Its all block access these days.
i wrote a program to do some data logging on a piece of lab equipment. It ran on a machine that only had floppy drives. Data was stored on drive B.
if the disk was full it would keep coming back to the same dialog. Disk is full. please replace the disk. The program would not proceed until it had successfully saved the file. The machine would not go on so the operator was forced to replace the floppy. doing nothing kept coming back to that screen. (the data was actually stored temporarily on the first floppy. it was copied using a dos copy operation and then removed from the first floppy. So even if you power cycled the machine you got the prompt as the temp file was still there. The first floppy was not accessible by the user ( hidden inside the machine).
we had big filers running solaris and samba
grab a windows 95 computer , hit escape to bypass login screen. make new user on the windows box named 'root' with blank password
Connect to filer by mapping network drive.
Drag and drop folders around. copy a bunch of pictures from windows to the filer.
all that stuff was done by 'root'.
The cause was a bug in solaris whereby it did not re authenticate. it said you are root over there, so you are root over here...
ooh .oooh .. oooh .. i know something .. Wireless USB ! that went nowhere...
Or Bluetooth. A technology that will replace all wires so you can send your pictures wirelessly to your printer. By the time it as ready we all had 3 megapixel cameras and it would take 1.7 minutes to send one image to the printer. Bluetooth is only good for earpieces and some small stuff. It was deemed problematic for mice and keyboards as it is a power hog. a bluetooth device could only run for about 2 months off a set of batteries. same batteries would run a 458MHz keyboard for 5 years ... ( bluetooth needs an always on radio link. only later revisions solved that ...)
my whole house is wired and anything wifi is switched off. why ? so the neighbors can't bog down or leech off my network !
That is the problem with wifi. you may have high bandwidth but there are only 11 , 15 or 16 channels in the spectrum. ( depending on where you live). I can see at least 20 different routers so some of these are 'sharing' a channel ( time multiplex) .
reality struck a blow.
What did they expect ? They flog this stuff as 'free' and then complain when you don't get paid. Like it or not the world does not work that way. Nobody will throw peeled grapes in your mouth out of the goodness of their heart. They may pay you if they need something only you can provide. If you offer it for free .. don't come crying.
The only concept that did work (to some extent) was shareware.
Who says the clock has to rely on gps ? there is plenty of other systems out there.
And time is not a problem only in gps. we had a year 200 problem and the unix year rollover problem is also looming... many programs have trouble with time/date stamps. since all computers ( well, most) these days are 32 bits .. two words can give you to-the-second time.