I don't want to spend the time it takes to trawl a dozen websites multiple times a day.
A good RSS reader gives me headlines and if they intrigue me, I drill down into them
I used to use Pulse until it stopped working on my hardware. I used the RSS features built into Firefox, until Firefox started hiding all its controls a la Microsoft. I liked Flipboard, except that apparently someone has to build special feeds for Flipload, and a lot of my favorite sites are ill-served. My latest favorite is Feedly, which has a simple way to mark things if the headlines interest me but I'm busy scanning for good stuff. I can mark the latest news as "seen" and pull the deferred articles out from the "saved" area at leisure.
RSS is automatically supported in many products these days. Wordpress, for example. It's also a a feature of some things very important to me, like the National Hurricane Center.
There was something called "Named Common" storage in Fortran that is quite capable of being assigned to absolute memory locations. If you don't mind the fact that the only structured data concept in Fortran was array data. Peek and Poke are loopholes to I/O ports, but perfectly functional ones. Volatile memory is harder to manage without language extensions, especially when compilers start seriously optimizing code.
Prime Computer actually optimized their machine instruction set to run Fortran optimally - there were even basic instructions for Fortran's unique 3-way branch construct.
And I'm fairly certain that you could have written low-level OS code in the COBOL that some of Honeywell's minicomputers implemented. Although the thought of an OS written in COBOL is enough to give me nightmares.
I can estimate fairly accurately. But Management/user grimaces and says "It can't take that long, All You Have To Do Is..." and forces me to chop it in half.
Then when it takes twice as long as the accepted estimate, it's My Fault.
I allow a fudge factor in my estimates. Even the simplest projects almost invariably develop complications. Plus I know that a good deal of my time is going to be spent in one small module finding that misplaced comma.
Automate the SSA? Their target clientèle is the biggest bunch of techno-incompetents in the country - old people!
And, incidentally, those people are all paying into the Social Security system themselves, so it's not all lost money. If we laid them all off, would the savings on an automated system be enough to compensate for their lost income?
No, magnetism isn't a force. It's a field. Much like a gravitational field - a distortion of the continuum. Magnetic force is what you get when two such distortions interact, much as gravitational force comes from the interactions of 2 objects with masses. There is potential energy, but until something moves, it's not "real" energy.
It was a Raspberry Pi Zero. Cost me a whopping $5 and since it was part of a larger order, shipping was essentially free.
Already have too many keyboards, mice and monitors. And the best thing is that it's not networked, so it can't go tattling back my entire life to OS vendors, app vendors, ISPs or the NSA. But it can play multimedia and run office software.
Of course, if I'd needed it as an Internet computer, I could pay twice as much and get a Pi Zero W. Or jack in an Ethernet USB, since I've got one of those left from an old tablet.
True. I think of cash flow in both directions, myself.
On the income side, poorer households are more likely to see frequent job shifts, add a temporary second (or third) job, pick up overtime pay or be docked (you've probably got fewer options when you unexpectedly have to take care of a sick family member as an example).
Middle-class people are more likely to hold longer-term and salaried jobs, but there are still bonuses and windfalls. I knew a company where quarterly profit-sharing checks were a significant (and not totally predictable) part of many people's incomes. Dividend checks may count as "found" cash, and rebates coming out of class-action suits on everything from overcharges at the Apple store to washing-machine recalls. Medical overcharges refunded when insurance kicks in or billing mistakes were corrected. The rebate from buying a major appliance might not seem like "real" income, but it's usually far enough away in time that the pre-rebate price had to be factored into the budget (and you don't always actually get the rebate).
Even a bi-weekly paycheck in a month with 5 weeks can be manna from Heaven.
Major dip every year in December. Xmas shopping, annual fees on certain accounts. Secondary dip in june - bi-annual insurance bill.
Tertiary dips in odd months as various home or health maintenance services have to be paid for.
Random dips - the fridge or water heater dies, cat gets run over and rushed to vet. Bart needs a ton of expensive sports equipment. Little Maggie catches pneumonia (or did you really think that US insurance plans keep you from having to hit your wallet even when they'll - eventually (hopefully) - pay for it?
Some of these can be factored in and budgeted by those rare people who have their financial act together. Some come out of the blue. No such thing as an "average" month's expenses, just averaging expenses over the months and hoping that you don't get that back-breaking surprise.
A database is not a programming language. Even when you have decimally-precise data storage, if your computational facilities are not precise, you'll lose data.
I wouldn't say "every" language has a fixed-point decimal data type or library, although many do. The point was that in COBOL, fixed-point decimal numbers were a language primitive. Relatively few modern-day languages do that. An approximation can be made in C++ where you can define a fixed-decimal class and operator overloading, but C++-style operator overloading is itself rare in most popular modern languages. Failing that, you have to fall back to possible non-standard libraries and coding computation by function calls instead of the more convenient mathematical formula notation.
Think about human languages. Translate "Out of Sight, out of Mind to a language like Chinese, where a literal conversion might be "no-see, no-think". Now take another automated translator and translate it back: Invisible Idiot.
Every language - computer or human - has its unique characteristics. There's an old saying, in fact that "Translators are traitors".
Case in point: COBOL didn't support variable-length strings. Most modern languages have little or no tolerance for fixed-length strings. IBM COBOL supported a hardware-level data type (COMPUTATIONAL-3) which can store penny fractions precisely. Most modern languages don't allow for that, and tend to use floating-point (COBOL COMPUTATIONAL-2). Which cannot store decimal values precisely. Fuzz the pennies on people's paychecks and see how long before the torches and pitchforks come out. It's one of 2 reasons why so many payroll and accounting systems are written in COBOL (with the other one being that there's not exactly a lot of leading-edge technology in basic financial systems).
Some of these things can be automatically dealt with - albeit with some inefficiency - some of the more subtle issues have to be dealt with more directly, just as we've never yet managed to construct truly generic software-writing systems and have to continue to use programmers instead of robots like we do with truck driving and day-trading.
I have, actually worked with/supported automated code translation projects using commercial translator products. Every one of them has required a time and manpower budget for the clean-up crew. You can get about 80% of the job done automatically (although the resulting code may look horrible to a native human programmer). But to get something actually working, the tools need human help.
Sometimes I wonder what would actually happen if all countries just said f*** it and allowed free trade and free immigration (so long as you dont have a criminal record etc) anywhere?
People from poor countries would migrate to wealthier countries causing a collapse of the wealthier country's economy because of the burden imposed by the massive population surge without jobs. No thank you.
If that were true, then Appalachia would be totally depopulated by now. You can find plenty of wealthier places in the USA without encountering any immigration or trade barriers at all.
Sure, places like Detroit and West Virginia have been losing population slowly because there's no money to be made there. But an awful lot of people have also remained right where they were and would continue to do so until there was either no way to live there anymore or they died.
Ripping up one's roots and moving isn't something that most people would like to do unless they have no choice. The rootlessness of the post-WWII American Middle Class isn't typical of most times and cultures. And even there, you don't see mass migrations.
You're forgiven. From the programmer's viewpoint, it was all one thing. Something that was especially valuable when you were working with languages like FORTRAN, where data structures and byte-sized objects weren't a part of the language.
I can learn new techniques and tools. And I use them, when I can gain an advantage. However, I'm also quite happy to use the old well-worn stuff when it's appropriate.
Not everything new and shiny is gold. Some of it - a LOT of it - is just tinfoil. RoR was a case in point. Used well, it could make you productive (or at least apparently so). But the problem was that it was not in and of itself designed for performance or security and that too much of its attraction to management was that untrained monkeys could spit out shiny UIs quickly using wizards.
The kicker was that as long as it was a matter of simply re-writing the same set of programs over and over again, it was fine, but the minute you had to reach outside the box, the untrained monkeys couldn't deal with it. They were, after all, untrained. working with a "black box" that they didn't know how to extend. That's what's probably killed more "programmer-less" development systems over the last 3 decades than anything else. Including the ones that were based on otherwise capable platforms.
More precisely, the I/O services wrote 133-column lines, but only 132 columns were actually written to the printer.
The first column was pinched off and used as the print control character by the printer driver. It was either a printable character or an actual low-level printer opcode. If it was a character and the I/O control block options were configured right, then the driver simply converted it into its machine opcode equivalent.
Since you didn't have any control over font faces, point sizes, or even italics and boldfacing (short of overprinting) a single carriage-motion command was sufficient for an entire print line. Later, more flexible printers (typically dot-matrix ones to begin with) offered mid-line changes, and so they employed escape sequences embedded within the text, but technically the column-1 print control was never part of the text at all.
"Compiled" is usually taken to mean "translated from an abstract language". Assembly is a straight 1-to-1 translation. I never got particularly bent about people saying that they were "compiling" an assembly language program, though, and that's not even including assembly code heavily fortified with smart macros or so-called "optimizing assemblers".
People have been known to implement cross-assembly macros or use virtual machines to run non-native machine language, but essentially, you're correct.
One of the first things that they teach you in Calculus I is the concept of Domain and Range. Actually, if you had the "function machine" concept of New Math, I think it originally gets introduced there.
Most programming languages have only a limited concept of domain and range. Especially domain. Usually, in fact, it's limited to throwing an exception when you do something that violates the range like divide by zero or get a register arithmetic overflow error.
Ada allows you to precisely define datatypes and to give them domains and ranges. So A), you cannot pass a value in meters to a function that operates in inches (the best you can do is input a raw number that the function assumes is in inches). And you cannot pass in a value that is outside of the domain. So if I define a POSITIVE_INTEGER as having a vaue of 1..infinity, then passing zero to a function that takes a POSITIVE_INTEGER is a compile-time error.
As they say, make a system that's idiot-proof and some idiot will prove that it isn't, but Ada puts a lot more protections in at both compile and run times than most languages. It's the opposite extreme from some of the scripting languages where you could spill beer over the keyboard while sneezing and the resulting collection of random characters wouldn't fail until maybe the module got called next Leap Year.
Ada as a practical language suffered from 2 problems, First, it came out too soon. At a rough guess, a really competent Ada machine requires as much horsepower as Java, and when I studied Ada, merely running the compiler could bring an IBM mainframe of the day to its knees. Secondly, as with Java, any language that pushes most of the development cycle into the design and coding phases because until that part's right, absolutely nothing runs has a hard battle going up against the "instant gratification" of today's popular scripting languages, where the bulk of the work tends to be done chasing the run-time errors slowly emerging because the interpreter couldn't catch them in advance and the program "runs" almost as soon as you start coding.
APL. Why settle for a write-only programming language when you can have a write-only programming language that reads like terse mathematical expressions using special characters. That can be overstruck!!!
I have likened this to pulling the chair out from under me, but no one gets the hint.
So is this age discrimination?
Because I usually only see the text alerts at the end of the day when I plug my phone in to charge.
In Bangalore you can prepare a meal for 6 for the price of a big starbucks beverage.
I don't want to spend the time it takes to trawl a dozen websites multiple times a day.
A good RSS reader gives me headlines and if they intrigue me, I drill down into them
I used to use Pulse until it stopped working on my hardware. I used the RSS features built into Firefox, until Firefox started hiding all its controls a la Microsoft. I liked Flipboard, except that apparently someone has to build special feeds for Flipload, and a lot of my favorite sites are ill-served. My latest favorite is Feedly, which has a simple way to mark things if the headlines interest me but I'm busy scanning for good stuff. I can mark the latest news as "seen" and pull the deferred articles out from the "saved" area at leisure.
RSS is automatically supported in many products these days. Wordpress, for example. It's also a a feature of some things very important to me, like the National Hurricane Center.
There was something called "Named Common" storage in Fortran that is quite capable of being assigned to absolute memory locations. If you don't mind the fact that the only structured data concept in Fortran was array data. Peek and Poke are loopholes to I/O ports, but perfectly functional ones. Volatile memory is harder to manage without language extensions, especially when compilers start seriously optimizing code.
Prime Computer actually optimized their machine instruction set to run Fortran optimally - there were even basic instructions for Fortran's unique 3-way branch construct.
And I'm fairly certain that you could have written low-level OS code in the COBOL that some of Honeywell's minicomputers implemented. Although the thought of an OS written in COBOL is enough to give me nightmares.
Locally, UPS has been using golf cars.
But what ultimately will solve the wear and tear and crowding of the streets is going to be when the skies blacken with legions of drones!
It isn't hubris.
I can estimate fairly accurately. But Management/user grimaces and says "It can't take that long, All You Have To Do Is..." and forces me to chop it in half.
Then when it takes twice as long as the accepted estimate, it's My Fault.
I allow a fudge factor in my estimates. Even the simplest projects almost invariably develop complications. Plus I know that a good deal of my time is going to be spent in one small module finding that misplaced comma.
SF? Restaurants staffed by robot waiters and groceries delivered by Amazon drones. Gourmet, of course.
Automate the SSA? Their target clientèle is the biggest bunch of techno-incompetents in the country - old people!
And, incidentally, those people are all paying into the Social Security system themselves, so it's not all lost money. If we laid them all off, would the savings on an automated system be enough to compensate for their lost income?
No, magnetism isn't a force. It's a field. Much like a gravitational field - a distortion of the continuum. Magnetic force is what you get when two such distortions interact, much as gravitational force comes from the interactions of 2 objects with masses. There is potential energy, but until something moves, it's not "real" energy.
It was a Raspberry Pi Zero. Cost me a whopping $5 and since it was part of a larger order, shipping was essentially free.
Already have too many keyboards, mice and monitors. And the best thing is that it's not networked, so it can't go tattling back my entire life to OS vendors, app vendors, ISPs or the NSA. But it can play multimedia and run office software.
Of course, if I'd needed it as an Internet computer, I could pay twice as much and get a Pi Zero W. Or jack in an Ethernet USB, since I've got one of those left from an old tablet.
True. I think of cash flow in both directions, myself.
On the income side, poorer households are more likely to see frequent job shifts, add a temporary second (or third) job, pick up overtime pay or be docked (you've probably got fewer options when you unexpectedly have to take care of a sick family member as an example).
Middle-class people are more likely to hold longer-term and salaried jobs, but there are still bonuses and windfalls. I knew a company where quarterly profit-sharing checks were a significant (and not totally predictable) part of many people's incomes. Dividend checks may count as "found" cash, and rebates coming out of class-action suits on everything from overcharges at the Apple store to washing-machine recalls. Medical overcharges refunded when insurance kicks in or billing mistakes were corrected. The rebate from buying a major appliance might not seem like "real" income, but it's usually far enough away in time that the pre-rebate price had to be factored into the budget (and you don't always actually get the rebate).
Even a bi-weekly paycheck in a month with 5 weeks can be manna from Heaven.
Major dip every year in December. Xmas shopping, annual fees on certain accounts. Secondary dip in june - bi-annual insurance bill.
Tertiary dips in odd months as various home or health maintenance services have to be paid for.
Random dips - the fridge or water heater dies, cat gets run over and rushed to vet. Bart needs a ton of expensive sports equipment. Little Maggie catches pneumonia (or did you really think that US insurance plans keep you from having to hit your wallet even when they'll - eventually (hopefully) - pay for it?
Some of these can be factored in and budgeted by those rare people who have their financial act together. Some come out of the blue. No such thing as an "average" month's expenses, just averaging expenses over the months and hoping that you don't get that back-breaking surprise.
A database is not a programming language. Even when you have decimally-precise data storage, if your computational facilities are not precise, you'll lose data.
I wouldn't say "every" language has a fixed-point decimal data type or library, although many do. The point was that in COBOL, fixed-point decimal numbers were a language primitive. Relatively few modern-day languages do that. An approximation can be made in C++ where you can define a fixed-decimal class and operator overloading, but C++-style operator overloading is itself rare in most popular modern languages. Failing that, you have to fall back to possible non-standard libraries and coding computation by function calls instead of the more convenient mathematical formula notation.
Yeah. "All You Have To Do Is..."
Think about human languages. Translate "Out of Sight, out of Mind to a language like Chinese, where a literal conversion might be "no-see, no-think". Now take another automated translator and translate it back: Invisible Idiot.
Every language - computer or human - has its unique characteristics. There's an old saying, in fact that "Translators are traitors".
Case in point: COBOL didn't support variable-length strings. Most modern languages have little or no tolerance for fixed-length strings. IBM COBOL supported a hardware-level data type (COMPUTATIONAL-3) which can store penny fractions precisely. Most modern languages don't allow for that, and tend to use floating-point (COBOL COMPUTATIONAL-2). Which cannot store decimal values precisely. Fuzz the pennies on people's paychecks and see how long before the torches and pitchforks come out. It's one of 2 reasons why so many payroll and accounting systems are written in COBOL (with the other one being that there's not exactly a lot of leading-edge technology in basic financial systems).
Some of these things can be automatically dealt with - albeit with some inefficiency - some of the more subtle issues have to be dealt with more directly, just as we've never yet managed to construct truly generic software-writing systems and have to continue to use programmers instead of robots like we do with truck driving and day-trading.
I have, actually worked with/supported automated code translation projects using commercial translator products. Every one of them has required a time and manpower budget for the clean-up crew. You can get about 80% of the job done automatically (although the resulting code may look horrible to a native human programmer). But to get something actually working, the tools need human help.
Sometimes I wonder what would actually happen if all countries just said f*** it and allowed free trade and free immigration (so long as you dont have a criminal record etc) anywhere?
People from poor countries would migrate to wealthier countries causing a collapse of the wealthier country's economy because of the burden imposed by the massive population surge without jobs. No thank you.
If that were true, then Appalachia would be totally depopulated by now. You can find plenty of wealthier places in the USA without encountering any immigration or trade barriers at all.
Sure, places like Detroit and West Virginia have been losing population slowly because there's no money to be made there. But an awful lot of people have also remained right where they were and would continue to do so until there was either no way to live there anymore or they died.
Ripping up one's roots and moving isn't something that most people would like to do unless they have no choice. The rootlessness of the post-WWII American Middle Class isn't typical of most times and cultures. And even there, you don't see mass migrations.
You're forgiven. From the programmer's viewpoint, it was all one thing. Something that was especially valuable when you were working with languages like FORTRAN, where data structures and byte-sized objects weren't a part of the language.
I can learn new techniques and tools. And I use them, when I can gain an advantage. However, I'm also quite happy to use the old well-worn stuff when it's appropriate.
Not everything new and shiny is gold. Some of it - a LOT of it - is just tinfoil. RoR was a case in point. Used well, it could make you productive (or at least apparently so). But the problem was that it was not in and of itself designed for performance or security and that too much of its attraction to management was that untrained monkeys could spit out shiny UIs quickly using wizards.
The kicker was that as long as it was a matter of simply re-writing the same set of programs over and over again, it was fine, but the minute you had to reach outside the box, the untrained monkeys couldn't deal with it. They were, after all, untrained. working with a "black box" that they didn't know how to extend. That's what's probably killed more "programmer-less" development systems over the last 3 decades than anything else. Including the ones that were based on otherwise capable platforms.
Wait a minute. Why are all those new Camaros morphing into killbots?
More precisely, the I/O services wrote 133-column lines, but only 132 columns were actually written to the printer.
The first column was pinched off and used as the print control character by the printer driver. It was either a printable character or an actual low-level printer opcode. If it was a character and the I/O control block options were configured right, then the driver simply converted it into its machine opcode equivalent.
Since you didn't have any control over font faces, point sizes, or even italics and boldfacing (short of overprinting) a single carriage-motion command was sufficient for an entire print line. Later, more flexible printers (typically dot-matrix ones to begin with) offered mid-line changes, and so they employed escape sequences embedded within the text, but technically the column-1 print control was never part of the text at all.
Actually, the 1403's were pretty noisy. But they were well soundproofed. You could definitely tell the difference when the cover was up.
"Compiled" is usually taken to mean "translated from an abstract language". Assembly is a straight 1-to-1 translation. I never got particularly bent about people saying that they were "compiling" an assembly language program, though, and that's not even including assembly code heavily fortified with smart macros or so-called "optimizing assemblers".
People have been known to implement cross-assembly macros or use virtual machines to run non-native machine language, but essentially, you're correct.
Oh, they burned. Just not so slowly.
One of the first things that they teach you in Calculus I is the concept of Domain and Range. Actually, if you had the "function machine" concept of New Math, I think it originally gets introduced there.
Most programming languages have only a limited concept of domain and range. Especially domain. Usually, in fact, it's limited to throwing an exception when you do something that violates the range like divide by zero or get a register arithmetic overflow error.
Ada allows you to precisely define datatypes and to give them domains and ranges. So A), you cannot pass a value in meters to a function that operates in inches (the best you can do is input a raw number that the function assumes is in inches). And you cannot pass in a value that is outside of the domain. So if I define a POSITIVE_INTEGER as having a vaue of 1..infinity, then passing zero to a function that takes a POSITIVE_INTEGER is a compile-time error.
As they say, make a system that's idiot-proof and some idiot will prove that it isn't, but Ada puts a lot more protections in at both compile and run times than most languages. It's the opposite extreme from some of the scripting languages where you could spill beer over the keyboard while sneezing and the resulting collection of random characters wouldn't fail until maybe the module got called next Leap Year.
Ada as a practical language suffered from 2 problems, First, it came out too soon. At a rough guess, a really competent Ada machine requires as much horsepower as Java, and when I studied Ada, merely running the compiler could bring an IBM mainframe of the day to its knees. Secondly, as with Java, any language that pushes most of the development cycle into the design and coding phases because until that part's right, absolutely nothing runs has a hard battle going up against the "instant gratification" of today's popular scripting languages, where the bulk of the work tends to be done chasing the run-time errors slowly emerging because the interpreter couldn't catch them in advance and the program "runs" almost as soon as you start coding.
APL. Why settle for a write-only programming language when you can have a write-only programming language that reads like terse mathematical expressions using special characters. That can be overstruck!!!