If you have to type "make [...]" or set up a cron job, you aren't doing reactive.
That's a little disingenuous - there will always be a tool in the chain whose job is to continually check for changes and trigger the recalculation. Whether that tool is a cron job or a trigger in a db, or a specially built "reactive" engine, something is doing that job.
Your filesystem notifications or DB reactions are either coming from a polling loop in the FS/DB engine, or from an event processing loop in the FS/DB engine. Externalising that loop into a cron job doesn't change what it is.
Reactive programming amounts to writing a 10 line Makefile which is "automatically" (i.e. set up by someone else) called by inotify/FSEvents or by cron, instead of writing a 200 line shell script to watch a directory for changes and call gcc and/or yacc when needed.
Yeah, that's "reactive programming" at the file level. I do it all the time, with Makefiles. Lots of people do. A nice thing about a Makefile is that you can easily control when the calculation of derivative files happens. You (re)create some sets of primary data, then use a simple "make" command to rebuild everything that depends on any of them.
You've hit it exactly - they've "invented" Makefiles for database rows.
In a sense, that didn't exist before, so that's something new, and it's definitely simpler than writing the 200 lines of code to do what make would automatically do for you.
I'm not sold on it taking over the world, but it's an interesting application of the idea.
(Well, actually, it did exist before - they point out the example of a spreadsheet, which does exactly what they're talking about. This seems to be the answer to "why can't we program databases the same way we do spreadsheets and Makefiles?")
Huh? How do you leak their SRPMs which they make available to everyone anyway?
And certainly, you can refuse to take anyone's money... But you can't impose restrictions on them exercising the rights which you are barred from restricting...
Worth investigating: an Indian charity worked with together with Stanford and MIT D-Lab to develop <$50 above-knee prosthetics, and has been building 60,000+ per year for the last few years... Again, that's part cost, not chargable cost, but still...
Just because its Opensource has never declared "when" the source and through what channels it must be made available.
I agree with most of what you've said, I just have this little nitpick:
The GPL is very clear about the when and what channels: you MUST make the source available (or include an explicit offer to make it available) to someone when you make the binaries available to them. That said, you can choose to make the source available earlier than the binaries, as you suggest.
As for the "what channels", the GPL (section 6 of GPLv3, section 3 of GPLv2) specifically identifies what channels are appropriate if you are providing binaries. Again, you may use other channels in *addition* to those, which may include directly providing source via direct communication in advance or instead of binaries. However, if you provide binaries to a person, there are explicit rules on how you must provide corresponding sources.
BUT... as a developer, I have clients who still use IE6 and/or IE8 on XP as their standard operating environment. So I still need my server infrastructure to cope with the wide range of client choices of software...
... If the spot price falls at or below your maximum, your instance starts running. Should it exceed your maximum, your instance gets terminated. Using these things obviously requires a tolerance for server outages far above even the shoddiest physical systems; but if you can divide your problem space into relatively small, discrete, chunks, and get the results off the individual servers once computed, you won't lose more than a single chunk per shutdown...
And how is this different from SETI@Home, other than renting the computers rather than convincing people to run your screensaver for the good of mankind?
"No" they wouldn't need approval of everybody who contributed to the GPL version.
I agree with you, but I think of it as "Yes, they need the approval of everybody who contributed to the GPL version, so they got that approval in advance in the form of a copyright assignment. Because the contributors assigned all their copyright rights to the owners of MySQL, the owners can make this change without needing any further permission from the contributors."
Over here, "postal voting" (mailing your vote in) is different from "absentee voting" (voting at a different voting centre outside your electorate, on election day), or "early voting" (voting at special voting centres, before election day).
For postal voting, you receive a ballot form and some special envelopes in the mail shortly before the election, and you fill them in and send them back within a few days of the election.
For absentee voting or early voting, you attend a centre which is set up like a normal voting place.
I understand what they are, I have them too. I just don't understand how applying that exact concept in a single interface is immediately such a terrible idea.
(For the ones you're just going to let die, mailinator is a handy option.)
"A few throwaway email accounts" sounds like multiple inboxes, grouped by sender/expected content, with different importances... How is this proposal significantly different, apart from being able to access all of them with a single login?
[sci.crypt newsgroup] The technique of breaking a code or cipher by
finding someone who has the key and applying a rubber hose vigorously and
repeatedly to the soles of that luckless person's feet until the key is
discovered. Shorthand for any method of coercion: the originator of the
term drily noted that it can take a surprisingly short time and is
quite computationally inexpensive relative to other cryptanalysis
methods. Compare social engineering, brute force.
Wikipedia also has it the term Thermorectal cryptanalysis for it, which brings disturbing images to mind. The comments on Schneier on Security suggest that hot soldering irons are involved.:-S
The concept of "leasing" vs "ownership" is not one of whether you're paying every month or not - it's about whether you have legal control over the asset. If you paid the entire cost of leasing a house up front, that doesn't mean that you own it.
A leased asset is yours to use, because another entity continues to permit you to use it, however they may revoke your permission to use it at any time. They have the legal control over the asset, you get to use it because they allow you to use it as long as you play by their rules (which may or may not involve repeatedly paying them money).
When someone else says "you can use an iPhone, as long as you don't install Cydia or other unapproved software on it, and if you do, we reserve the right to remotely disable it", that's indicating that they have the control, and dictate the terms under which you use your device.
If you have a 64 bit PC and OS, it should be little more than a recompile.
A number of comments have claimed this: recompile with 64-bit time_t and the problem goes away. Unfortunately, for many apps it's not quite as simple as that.
Certainly, for those apps which only deal with time information internally, and in a transient fashion, this will be sufficient to eliminate the problem.
However any program which persists UNIX timestamps in files, or sends UNIX timestamps as part of a networking protocol, or basically anything which sends the data structure outside the application is still going to require work on how to handle the migration.
What happens if your app is required to talk on the network? If there are few enough machines involved, then sure, you can upgrade all of them at once, but if it's a large or distributed operation, there needs to be a transition plan. How will older clients and newer clients interoperate?
If data is saved, how will the recompiled application interpret old files? Does it need a way to distinguish them? Can old data be automatically converted? Are there cases where old data may be compromised? (e.g. those 30 year mortgages probably have the wrong end-date stored...) How will we handle those cases?
What about situations where time information is used to prime other calculations - is it okay to affect those other calculations? Serial numbers, PRNGs, UUID generation, etc - the situation has to be assessed. Many cases might be fine, but you can't make a blanket statement for all cases, so each calculation must be vetted.
In the end, the result is that there is work to do. Much of it will be easy to fix, but the assessment still needs to be done.
It's one of the standard misquotes... Like all these "quotes" which never happened:
* Luke, I am your father.
* Play it again, Sam
* Elementary, my dear Watson
* Beam me up, Scotty
* Are you feeling lucky, punk?
* I want to suck your blood
* Me Tarzan, you Jane
* Here's another fine mess you've gotten us into
* Greed is good
That's a little disingenuous - there will always be a tool in the chain whose job is to continually check for changes and trigger the recalculation. Whether that tool is a cron job or a trigger in a db, or a specially built "reactive" engine, something is doing that job.
Your filesystem notifications or DB reactions are either coming from a polling loop in the FS/DB engine, or from an event processing loop in the FS/DB engine. Externalising that loop into a cron job doesn't change what it is.
Reactive programming amounts to writing a 10 line Makefile which is "automatically" (i.e. set up by someone else) called by inotify/FSEvents or by cron, instead of writing a 200 line shell script to watch a directory for changes and call gcc and/or yacc when needed.
You've hit it exactly - they've "invented" Makefiles for database rows.
In a sense, that didn't exist before, so that's something new, and it's definitely simpler than writing the 200 lines of code to do what make would automatically do for you.
I'm not sold on it taking over the world, but it's an interesting application of the idea.
(Well, actually, it did exist before - they point out the example of a spreadsheet, which does exactly what they're talking about. This seems to be the answer to "why can't we program databases the same way we do spreadsheets and Makefiles?")
Huh? How do you leak their SRPMs which they make available to everyone anyway?
And certainly, you can refuse to take anyone's money... But you can't impose restrictions on them exercising the rights which you are barred from restricting...
Worth investigating: an Indian charity worked with together with Stanford and MIT D-Lab to develop <$50 above-knee prosthetics, and has been building 60,000+ per year for the last few years... Again, that's part cost, not chargable cost, but still...
Here's an article about them from 2011: http://www.smh.com.au/world/indians-work-miracles-on-a-shoestring-20110617-1g7yl.html (mirrored at http://jaipurfoot.org/media/media_reports/pdf/shoestring.pdf)
I agree with most of what you've said, I just have this little nitpick:
The GPL is very clear about the when and what channels: you MUST make the source available (or include an explicit offer to make it available) to someone when you make the binaries available to them. That said, you can choose to make the source available earlier than the binaries, as you suggest.
As for the "what channels", the GPL (section 6 of GPLv3, section 3 of GPLv2) specifically identifies what channels are appropriate if you are providing binaries. Again, you may use other channels in *addition* to those, which may include directly providing source via direct communication in advance or instead of binaries. However, if you provide binaries to a person, there are explicit rules on how you must provide corresponding sources.
socat is a telnet/netcat clone with SSL and readline baked in. I used to (in a former life) regularly hit imap servers with:
I should... certainly, and I have.
BUT... as a developer, I have clients who still use IE6 and/or IE8 on XP as their standard operating environment. So I still need my server infrastructure to cope with the wide range of client choices of software...
And how is this different from SETI@Home, other than renting the computers rather than convincing people to run your screensaver for the good of mankind?
I agree with you, but I think of it as "Yes, they need the approval of everybody who contributed to the GPL version, so they got that approval in advance in the form of a copyright assignment. Because the contributors assigned all their copyright rights to the owners of MySQL, the owners can make this change without needing any further permission from the contributors."
Over here, "postal voting" (mailing your vote in) is different from "absentee voting" (voting at a different voting centre outside your electorate, on election day), or "early voting" (voting at special voting centres, before election day).
For postal voting, you receive a ballot form and some special envelopes in the mail shortly before the election, and you fill them in and send them back within a few days of the election.
For absentee voting or early voting, you attend a centre which is set up like a normal voting place.
I don't know whether to applaud you, or to cry because so few posters recognize the beautiful testament to the "Netcraft confirms it" posts...
You're on the wrong site: Here's where they are... ;-)
I understand what they are, I have them too. I just don't understand how applying that exact concept in a single interface is immediately such a terrible idea.
(For the ones you're just going to let die, mailinator is a handy option.)
"A few throwaway email accounts" sounds like multiple inboxes, grouped by sender/expected content, with different importances... How is this proposal significantly different, apart from being able to access all of them with a single login?
Similarly, from the Jargon File:
rubber-hose cryptanalysis : n.
[sci.crypt newsgroup] The technique of breaking a code or cipher by
finding someone who has the key and applying a rubber hose vigorously and
repeatedly to the soles of that luckless person's feet until the key is
discovered. Shorthand for any method of coercion: the originator of the
term drily noted that it can take a surprisingly short time and is
quite computationally inexpensive relative to other cryptanalysis
methods. Compare social engineering ,
brute force.
Wikipedia also has it the term Thermorectal cryptanalysis for it, which brings disturbing images to mind. The comments on Schneier on Security suggest that hot soldering irons are involved. :-S
The concept of "leasing" vs "ownership" is not one of whether you're paying every month or not - it's about whether you have legal control over the asset. If you paid the entire cost of leasing a house up front, that doesn't mean that you own it.
A leased asset is yours to use, because another entity continues to permit you to use it, however they may revoke your permission to use it at any time. They have the legal control over the asset, you get to use it because they allow you to use it as long as you play by their rules (which may or may not involve repeatedly paying them money).
When someone else says "you can use an iPhone, as long as you don't install Cydia or other unapproved software on it, and if you do, we reserve the right to remotely disable it", that's indicating that they have the control, and dictate the terms under which you use your device.
If you have a 64 bit PC and OS, it should be little more than a recompile.
A number of comments have claimed this: recompile with 64-bit time_t and the problem goes away. Unfortunately, for many apps it's not quite as simple as that.
Certainly, for those apps which only deal with time information internally, and in a transient fashion, this will be sufficient to eliminate the problem.
However any program which persists UNIX timestamps in files, or sends UNIX timestamps as part of a networking protocol, or basically anything which sends the data structure outside the application is still going to require work on how to handle the migration.
What happens if your app is required to talk on the network? If there are few enough machines involved, then sure, you can upgrade all of them at once, but if it's a large or distributed operation, there needs to be a transition plan. How will older clients and newer clients interoperate?
If data is saved, how will the recompiled application interpret old files? Does it need a way to distinguish them? Can old data be automatically converted? Are there cases where old data may be compromised? (e.g. those 30 year mortgages probably have the wrong end-date stored...) How will we handle those cases?
What about situations where time information is used to prime other calculations - is it okay to affect those other calculations? Serial numbers, PRNGs, UUID generation, etc - the situation has to be assessed. Many cases might be fine, but you can't make a blanket statement for all cases, so each calculation must be vetted.
In the end, the result is that there is work to do. Much of it will be easy to fix, but the assessment still needs to be done.
Except that he didn't, we just remember it that way... He says "No, I am your father".
https://www.google.com/search?q=No+Luke+I+am+your+father
It's one of the standard misquotes... Like all these "quotes" which never happened:
* Luke, I am your father.
* Play it again, Sam
* Elementary, my dear Watson
* Beam me up, Scotty
* Are you feeling lucky, punk?
* I want to suck your blood
* Me Tarzan, you Jane
* Here's another fine mess you've gotten us into
* Greed is good
If people can't stream videos and play mp3s without major configuration and grief, who cares what version the Linux kernel is at?
And conversely, if people CAN stream videos and play mp3s without major configuration and grief, who cares what version the Linux kernel is at?
(Nerds like us, that's who...)
FTFY:
Yeah, and some teenager working on his hobby program late at night might actually want to send his code to other people, so that they can run it and possibly work with him.
Almost, but not quite...
Seriously? I previewed and everything! :-S
At a guess, the link was probably supposed to be http://csimadmax.deviantart.com/art/she-rarity-199414368 and accidentally got an extra 6 appended to it...
At a guess, the link was probably supposed to be and accidentally got an extra 6 appended to it...