The World Economic Forum is also involved, hoping that one day, 'a person's data would be equivalent to their money... controlled, managed, exchanged and accounted for just like personal banking services operate today.'
Companies are increasingly getting more access to peoples money with "services" like automatic bill pay, fancy non-check checking, direct deposit, etc... The goal is to give everyone easy access to your money with minimal intervention from the owner of that money. Personal data is already way beyond this with opt-out (or not at all) data collection, sharing, and selling. The only exception seems to be HIPPA in the US. People after your money could only wish to have the level of access the information folks have.
Back in the late 80's/ early 90's, I considered using a lookup table for some trig calculations. The first thing I did was check the computation time for a "multiply" and for a tan() calculation in a loop dividing by the number of iterations.
There are no generalizations. You don't replace a trig function with something else, you change the approach to the entire problem. Also, if that was on Intel hardware of that era you were using the 80387 coprocessor which implemented multiplication and trig functions on the same hardware - look up CORDIC algorithms to see how trig functions can be done using shift-and-add operations. Most modern processors can multiply in a single cycle if pipelined. Vector operations on Intel or GPU can often be done in one cycle these days, so vector operations are fast. The math usually works out more elegantly using vectors as well.
As an example, consider the sun at the origin and calculating the gravitational pull (gx,gy) on a planet at coordinates (x,y). Lots of people would use atan2(x,y) to get the angle and more math to get a radius and then compute F=G*m1*m2/(r*r) and then gx = F*cos(theta) gy=F*sin(theta) or some such - 'cause that's how they learned it in physics class. A better way to go is: T = G*m1*m2/((x*x+y*y)^1.5) where ^ is exponentiation. Then do gx = T*x and gy=T*y. The only complicated calculation here is the exponent of 1.5 which is also the same as cubing it and taking the square root. So at worst we have a square root and a few multiplies to replace all that trig. This also trivially extends to 3d by putting a z*z in there and computing the 3rd component gz=T*z whereas trig will make your brain hurt in 3d.
Now that I wrote it down, I recall making this exact suggestion to the people working on x-pilot back in the early 90's. Then implemented gravity that way and got a rather large performance improvement on maps with lots of gravity sources. It's a specific case, other problems involving trig will have different non-trig solutions, but I hope this illustrate the type of thing I was talking about.
Almost all of Linear Algebra can be learned in a day, if you're willing to apply yourself.
WTF? Matrix multiplication can be learned in a day. How about geometric transforms, diagonalization, basis vectors, eigen values, etc... Sure I can refresh my memory on ALL of those and more in an hour or two, but to learn it the first time is not a one day task.
Read the AMS article on PageRank and tell me how someone could grok that after studying linear algebra for one day.
One thing that I've learned in physics and simulation software: If you're using trig functions you're doing it wrong. OK, not wrong but your code has sub-optimal performance. Vector and matrix math are almost always the way to go. But of course most the comp-sci majors I've met were not required to take a linear algebra course. To me that's one of the most useful math classes a programmer can take.
I liked this one: "Can you build an app for students in the building?" Doing an app for your friends can be a good motivator. When I was a kid I started a 2d scorched earth game on my Atari800, but it really started to get awesome when one of my friends started making suggestions and I implemented them - didn't just have a numeric display or a wind sock, ended up with clouds blowing by dependent on wind speed. Of course this can go too far with people demanding all sorts of things, but making something for others is sometimes a good motivator.
"Smart guns" don't actually prevent the wrong people from firing them, they enable the correct person(s) to fire them. As such when the electronics fail the gun won't work for anyone. The bigger issue is then that EMP type devices could disable guns (think of simple kitchen-tech). Criminals would love this - disable YOUR gun but theirs is an illegal one that works. And of course the police won't be required to use the smart guns for exactly this reason - criminals could remotely disable them.
Yes. It's a subject of tremendous interest. I saw a very good presentation on this at the AIAA Aerospace Sciences Conference two years ago, looking at global data on contrail-induced clouds viewed from satellites. The data from the weeks following 9-11-2001 was particularly informative, the time when global air traffic was temporarily grounded.
Thanks for that. The 9-11-2001 articles are what really brought it to my attention. The daily temperature variation increased by (I think 2 degrees but don't recall which scale). I'm not sure to what extent the atmosphere acts like a black body, but since that radiation goes up with the 4th power of temperature a wider variation would radiate more than a lower variation with the same average temperature - hence contrails would reduce temperature variation and radiate less heat. Of course that's not a complete model. The sky near me starts clear in the morning and tends to be cloudy later in the day with contrails (and their induced cloud formation) and sunlight having a 24 hour cycle. How would phase shifting the con-trail cycle change things? So many questions...
I agree with your conclusion that too many people don't know what they need code to do. I disagree on optional typing. For large applications I think typing is necessary, but for small things it really can get in the way and slow things down.
For simple data processing apps I like Python because a=5 is automatically an integer and b=2.5 is automatically a float, I don't need or want to include type information on every variable - particularly temporaries with intermediate results (cause it looks like shit inline and I don't want to go back to top and declare them). I totally agree that this is lazy programming practice, but again I think it's appropriate for small throw-away programs or prototypes. OTOH in those cases a compiler could infer the type of an expression if the types used in that expression are already known. Why isn't this done?
Actually, the Environmentalist just bitched about emissions.
Yep. I've been wondering how air traffic affects the weather for a long time. Do the climate folks model this? I swear the weather changed in michigan after Delta bought Northwest and Detroit was demoted from primary hub to whatever it is now. Depending on conditions, con-trails may dissipate or they may start to grow into larger clouds. I'm not saying it's a problem, I just wonder if anyone has studied these effects.
IMHO the GIMP developers should have got the GEGL stuff done as a priority for 2.10 and then immediately worked on the GTK3 stuff for 3.0. All other features and improvements should be extras until the infrastructure migrations are done. Why? For reasons exactly like you describe. Being up to date with infrastructure and libraries is rather critical. GnuCash was almost dropped when it took too many years for them to jump on Gnome 2 libs. It's been what, two years since Gnome 3 and they still aren't there yet...
I'd rather see the effort put into overhaul X.org, or even start from scratch with a new X11 implementation instead of starting from scratch with an entirely new system that lacks the features X11 has.
So you don't understand Moore's law. Thanks for making that obvious.
What Moore originally wrote down was the equations that defined how you scale transistor sizes, which was an enabler for the continued performance increases which are now associated with Moores law. While doubling core counts every 2 years will allow the continued performance increases, the original moores law ran out of steam some time ago.
Take your question again: In 10 years when our entire assortment of devices has as much horsepower as my desktop computer does today, are we really going to need significantly tight processing? I'd say the better long term solution will be making development faster and hopefully more expressive.
Yes, yes it will be important to have optimized software in 10 years. Remember X was entirely usable (OMG I'm getting old) 20 years ago. That 150MHz Alpha workstation in the lab was amazingly fast, but here we are today talking about tweaking software for modern hardware 20 years later. And since Moore's law doesn't really work any more, we can expect little progress in terms of single core performance over the next 10 years. Besides, the big thing now is power efficiency to extend battery life and that requires efficient code as well. Optimization will always be important. Why use twice the core count when you can just write tighter code? That argument isn't going away.
Interesting that you call MPEG-LA scum, while Google _is_ _actually_ suing Microsoft over the use of h.264, right here, right now. So who is the scum?
I wasn't aware of that. Hmmm. It's one thing to sue for patent infringement, but what MPEG-LA did was IMHO much worse. Not the creation of the H264 patent pool or its licensing, but their attempt (solicitation) to create a patent pool specifically to use against WebM. It's one thing to patent some stuff, use it, and defend it. It's entirely different to see a competitor, try to get people to gang up on them with a patent pool covering their thing, and go after them. OK, if it's patented that wouldn't really be "their thing" (googles thing) but MPEG-LA had no stake in VP8 when they went after it. That is why I called them scum. I'm not certain but I think there are legal terms that cover that behaviour as well (cartel, collusion, and possibly racketeering might be applicable but IANAL).
Now if you tell me Google sued MS over a patent they purchased just to sue, I may have to include them under the scum umbrella.
It's great to write an article outlining the problem, but it would be nice if he offered a better solution. Google put WebM / VP8 / VP9 out there are open source with a strong belief that it didn't infringe the H264 patents. Turns out the scum at MPEG-LA rounded up some patents for an attack and Google has made some effort to allow use of those patents. What else could they do? Go to court and get the claims thrown out? Perhaps, but what it some are valid claims?
We can hope that Google has a larger strategy than they are letting on. The thing to do is get WebM out there to take power away from MPEG-LA. For the short term that means Google, Android, and the major browsers have to be able to use it, and then YouTube needs to use it exclusively. Everyone else can use the code, but it's kinda hard for Google to influence other patent holders. Rather than just complain, the author and OSI should propose a better solution - there isn't one.
BTW, your phone probably supports VP8 - Android has supported it in software since 2.3(?) and Google has made hardware implementations available for some time now with many SoC vendors licensing it (for free).
I do not pay for bugs. Developers can make more work for themselves by causing bugs, and with the specifications I write there is no excuse for not testing their code. Developers are always fine with it until we get toward the end of a project and the customer is complaining about bugs.
Anyone who says they write perfect specs or perfect code, or perfect anything is full of shit. Even if YOU write perfect specs, they're based on customer requirements and those are always incomplete. Customers do not have requirements, they have problems, and it's our job to devise solutions to those problems. Even if code is written bug-free the customer will not know exactly how it should work until you give them something to critique. Then they ask for changes - this is called a requirement change or clarification, not a bug, and not the developers fault. I'm sure your developers create bugs too, but I'm certain they're not the only cause.
Usually reporters tell stories of "hackers" finding such things and we wonder weather the reporters understand how "non-hacking" the activity really was. Well in this case it's abundantly clear to them since it was they who discovered the data in plain sight. No question the reporters see the absurdity of the "hacker" label in this case.
And since it will be the police getting the reports, how do you figure it will increase the level of fear in citizens?
Because once you've got that label they will throw away whatever legal protections you may have. Don't leave the country because then you are a possible drone target - all because your nosy neighbor thought *you* were suspicious. Remember, everyone probably looks suspicious to someone and you've always had the ability to report suspicious activity. But now you get to add that label. Does it scare you now?
Suppose the judge ordered the OWNER of the video to remove it from the internet. Now that poor chump would have to run around sending takedown notices for those violating his copyright. See see see? Now he's not outside his jurisdiction and can plausibly get it removed from the major portions of the net by offloading the pain onto the video owner.
As a bioinformatician who's trying to give researchers better tools to identify disease, whose projects could also improve the lives of lots of folks: this is not that kind of programming. Demoscene programmers are generally hired by graphics companies and embedded systems development, where their formidable optimization abilities actually get put to use; those skills are not transferable to general high-performance computing.
Actually the skills do transfer. The techniques of code optimization are many and universal. Which ones constitute acceptable use depends on the application (i.e. mathematical approximations are not always OK). From what I keep reading, HPC focuses a lot on matrix math - an area where some tricks can help a lot without affecting the results. I was manipulating 1GB 3d data sets interactively on a machine with 128M of RAM back in the day, and I suspect the technique has not gone mainstream yet.
Could be me, but I was told that GPS does not work in the extreme Northern and Southern regions due to lack of satellite coverage? Like North of 84 degrees?
You take a known point on the ground and track its movement within the constellation of satellites for a day. Its path with trace a circle on a plane in 3-space. The normal vector of that plane (throught the center of the circle) is the earths spin axis.
The world is not perfectly spherical and rely on equal opposite weight on each side to stay balanced.
Every object has a natural stable spin axis, no matter how uniform it is or not. Actually, they have 2 stable axis to rotate on. Tape a book shut and toss it in the air spinning, it will be fine in a "flat" spin and will also be fine spinning about the center line of its longest dimension. try spinning it on the 3rd axis and it will tumble in an attempt to reach one of the 2 stable states (the one with lower energy I think).
Did that NASA guy ever try to demonstrate this on the space station? That would be a cool experiment.
Nice. Hey, but since we end up dividing one could do the cube and then a reciprocal square root ;-) So many options.....
Companies are increasingly getting more access to peoples money with "services" like automatic bill pay, fancy non-check checking, direct deposit, etc... The goal is to give everyone easy access to your money with minimal intervention from the owner of that money. Personal data is already way beyond this with opt-out (or not at all) data collection, sharing, and selling. The only exception seems to be HIPPA in the US. People after your money could only wish to have the level of access the information folks have.
There are no generalizations. You don't replace a trig function with something else, you change the approach to the entire problem. Also, if that was on Intel hardware of that era you were using the 80387 coprocessor which implemented multiplication and trig functions on the same hardware - look up CORDIC algorithms to see how trig functions can be done using shift-and-add operations. Most modern processors can multiply in a single cycle if pipelined. Vector operations on Intel or GPU can often be done in one cycle these days, so vector operations are fast. The math usually works out more elegantly using vectors as well.
As an example, consider the sun at the origin and calculating the gravitational pull (gx,gy) on a planet at coordinates (x,y). Lots of people would use atan2(x,y) to get the angle and more math to get a radius and then compute F=G*m1*m2/(r*r) and then gx = F*cos(theta) gy=F*sin(theta) or some such - 'cause that's how they learned it in physics class. A better way to go is: T = G*m1*m2/((x*x+y*y)^1.5) where ^ is exponentiation. Then do gx = T*x and gy=T*y. The only complicated calculation here is the exponent of 1.5 which is also the same as cubing it and taking the square root. So at worst we have a square root and a few multiplies to replace all that trig. This also trivially extends to 3d by putting a z*z in there and computing the 3rd component gz=T*z whereas trig will make your brain hurt in 3d.
Now that I wrote it down, I recall making this exact suggestion to the people working on x-pilot back in the early 90's. Then implemented gravity that way and got a rather large performance improvement on maps with lots of gravity sources. It's a specific case, other problems involving trig will have different non-trig solutions, but I hope this illustrate the type of thing I was talking about.
WTF? Matrix multiplication can be learned in a day. How about geometric transforms, diagonalization, basis vectors, eigen values, etc... Sure I can refresh my memory on ALL of those and more in an hour or two, but to learn it the first time is not a one day task.
Read the AMS article on PageRank and tell me how someone could grok that after studying linear algebra for one day.
One thing that I've learned in physics and simulation software: If you're using trig functions you're doing it wrong. OK, not wrong but your code has sub-optimal performance. Vector and matrix math are almost always the way to go. But of course most the comp-sci majors I've met were not required to take a linear algebra course. To me that's one of the most useful math classes a programmer can take.
I liked this one: "Can you build an app for students in the building?" Doing an app for your friends can be a good motivator. When I was a kid I started a 2d scorched earth game on my Atari800, but it really started to get awesome when one of my friends started making suggestions and I implemented them - didn't just have a numeric display or a wind sock, ended up with clouds blowing by dependent on wind speed. Of course this can go too far with people demanding all sorts of things, but making something for others is sometimes a good motivator.
"Smart guns" don't actually prevent the wrong people from firing them, they enable the correct person(s) to fire them. As such when the electronics fail the gun won't work for anyone. The bigger issue is then that EMP type devices could disable guns (think of simple kitchen-tech). Criminals would love this - disable YOUR gun but theirs is an illegal one that works. And of course the police won't be required to use the smart guns for exactly this reason - criminals could remotely disable them.
Thanks for that. The 9-11-2001 articles are what really brought it to my attention. The daily temperature variation increased by (I think 2 degrees but don't recall which scale). I'm not sure to what extent the atmosphere acts like a black body, but since that radiation goes up with the 4th power of temperature a wider variation would radiate more than a lower variation with the same average temperature - hence contrails would reduce temperature variation and radiate less heat. Of course that's not a complete model. The sky near me starts clear in the morning and tends to be cloudy later in the day with contrails (and their induced cloud formation) and sunlight having a 24 hour cycle. How would phase shifting the con-trail cycle change things? So many questions...
That wasn't fair. You need to be able to link existing libraries to run on anything.
I agree with your conclusion that too many people don't know what they need code to do. I disagree on optional typing. For large applications I think typing is necessary, but for small things it really can get in the way and slow things down.
For simple data processing apps I like Python because a=5 is automatically an integer and b=2.5 is automatically a float, I don't need or want to include type information on every variable - particularly temporaries with intermediate results (cause it looks like shit inline and I don't want to go back to top and declare them). I totally agree that this is lazy programming practice, but again I think it's appropriate for small throw-away programs or prototypes. OTOH in those cases a compiler could infer the type of an expression if the types used in that expression are already known. Why isn't this done?
Yep. I've been wondering how air traffic affects the weather for a long time. Do the climate folks model this? I swear the weather changed in michigan after Delta bought Northwest and Detroit was demoted from primary hub to whatever it is now. Depending on conditions, con-trails may dissipate or they may start to grow into larger clouds. I'm not saying it's a problem, I just wonder if anyone has studied these effects.
IMHO the GIMP developers should have got the GEGL stuff done as a priority for 2.10 and then immediately worked on the GTK3 stuff for 3.0. All other features and improvements should be extras until the infrastructure migrations are done. Why? For reasons exactly like you describe. Being up to date with infrastructure and libraries is rather critical. GnuCash was almost dropped when it took too many years for them to jump on Gnome 2 libs. It's been what, two years since Gnome 3 and they still aren't there yet...
Many of the X developers disagree with you.
What Moore originally wrote down was the equations that defined how you scale transistor sizes, which was an enabler for the continued performance increases which are now associated with Moores law. While doubling core counts every 2 years will allow the continued performance increases, the original moores law ran out of steam some time ago.
Yes, yes it will be important to have optimized software in 10 years. Remember X was entirely usable (OMG I'm getting old) 20 years ago. That 150MHz Alpha workstation in the lab was amazingly fast, but here we are today talking about tweaking software for modern hardware 20 years later. And since Moore's law doesn't really work any more, we can expect little progress in terms of single core performance over the next 10 years. Besides, the big thing now is power efficiency to extend battery life and that requires efficient code as well. Optimization will always be important. Why use twice the core count when you can just write tighter code? That argument isn't going away.
I wasn't aware of that. Hmmm. It's one thing to sue for patent infringement, but what MPEG-LA did was IMHO much worse. Not the creation of the H264 patent pool or its licensing, but their attempt (solicitation) to create a patent pool specifically to use against WebM. It's one thing to patent some stuff, use it, and defend it. It's entirely different to see a competitor, try to get people to gang up on them with a patent pool covering their thing, and go after them. OK, if it's patented that wouldn't really be "their thing" (googles thing) but MPEG-LA had no stake in VP8 when they went after it. That is why I called them scum. I'm not certain but I think there are legal terms that cover that behaviour as well (cartel, collusion, and possibly racketeering might be applicable but IANAL).
Now if you tell me Google sued MS over a patent they purchased just to sue, I may have to include them under the scum umbrella.
It's great to write an article outlining the problem, but it would be nice if he offered a better solution. Google put WebM / VP8 / VP9 out there are open source with a strong belief that it didn't infringe the H264 patents. Turns out the scum at MPEG-LA rounded up some patents for an attack and Google has made some effort to allow use of those patents. What else could they do? Go to court and get the claims thrown out? Perhaps, but what it some are valid claims?
We can hope that Google has a larger strategy than they are letting on. The thing to do is get WebM out there to take power away from MPEG-LA. For the short term that means Google, Android, and the major browsers have to be able to use it, and then YouTube needs to use it exclusively. Everyone else can use the code, but it's kinda hard for Google to influence other patent holders. Rather than just complain, the author and OSI should propose a better solution - there isn't one.
BTW, your phone probably supports VP8 - Android has supported it in software since 2.3(?) and Google has made hardware implementations available for some time now with many SoC vendors licensing it (for free).
Anyone who says they write perfect specs or perfect code, or perfect anything is full of shit. Even if YOU write perfect specs, they're based on customer requirements and those are always incomplete. Customers do not have requirements, they have problems, and it's our job to devise solutions to those problems. Even if code is written bug-free the customer will not know exactly how it should work until you give them something to critique. Then they ask for changes - this is called a requirement change or clarification, not a bug, and not the developers fault. I'm sure your developers create bugs too, but I'm certain they're not the only cause.
BTW, my subject line applies to developers too.
Usually reporters tell stories of "hackers" finding such things and we wonder weather the reporters understand how "non-hacking" the activity really was. Well in this case it's abundantly clear to them since it was they who discovered the data in plain sight. No question the reporters see the absurdity of the "hacker" label in this case.
Because once you've got that label they will throw away whatever legal protections you may have. Don't leave the country because then you are a possible drone target - all because your nosy neighbor thought *you* were suspicious. Remember, everyone probably looks suspicious to someone and you've always had the ability to report suspicious activity. But now you get to add that label. Does it scare you now?
Suppose the judge ordered the OWNER of the video to remove it from the internet. Now that poor chump would have to run around sending takedown notices for those violating his copyright. See see see? Now he's not outside his jurisdiction and can plausibly get it removed from the major portions of the net by offloading the pain onto the video owner.
Actually the skills do transfer. The techniques of code optimization are many and universal. Which ones constitute acceptable use depends on the application (i.e. mathematical approximations are not always OK). From what I keep reading, HPC focuses a lot on matrix math - an area where some tricks can help a lot without affecting the results. I was manipulating 1GB 3d data sets interactively on a machine with 128M of RAM back in the day, and I suspect the technique has not gone mainstream yet.
You take a known point on the ground and track its movement within the constellation of satellites for a day. Its path with trace a circle on a plane in 3-space. The normal vector of that plane (throught the center of the circle) is the earths spin axis.
Every object has a natural stable spin axis, no matter how uniform it is or not. Actually, they have 2 stable axis to rotate on. Tape a book shut and toss it in the air spinning, it will be fine in a "flat" spin and will also be fine spinning about the center line of its longest dimension. try spinning it on the 3rd axis and it will tumble in an attempt to reach one of the 2 stable states (the one with lower energy I think).
Did that NASA guy ever try to demonstrate this on the space station? That would be a cool experiment.
What if Google just removes auto complete for everyone in Germany? 'cause how are they supposed to know what someone may find offensive?