Well assuming you are a US citizen. . . do you use your passport? Do you use all the treaties that have been signed by the U.S. government to allow you to travel freely in other countries? If you get injured or arrested while in another country are you going to use the US consulate services?
I know a number of expatriate (former?) US citizens in Australia, now Australian citizens, and in all cases the answer is "no" to all questions. If you have another citizenship, and you'd prefer to turn your back on the US and use that instead, why should you pay US taxes?
I may be wrong, but the subtext appears to be that US citizenship is somehow more advantageous than other citizenships. But surely if the US wants to tax you even if you don't live in the country, don't use their passports, don't use their consular services and generally have turned your back on then, then that's one clear DISadvantage. The US government wants something for nothing from someone that they by right should have no further claim over.
The only people would may have ANY reasonable excuse for not wanting to pay taxes [...]
The problem for expatriates is not being taxed, it's being taxed twice. Especially paying taxes to a country that you are no longer part of.
It's a simple matter to go to the embassy, renounce your US citizenship and surrender your US passport if they're not providing you any services.
It is not even close to "simple" to renounce a US citizenship. If you stick your head above water, they will never leave you alone.
IANAL, but I thought that you had no legal requirement to tell the US government where you are if you're outside the country. And they surely have no way to tell if a) you're not travelling on a US passport, and b) they're not watching you for some other reason.
[I] am in awe how these two radically different communities (haskell and perl) managed to find each other;-)
It's not such a shock, IMO. Ever since it's been a "real" language (about Perl 5 or so), Perl has always been inspired by Lisp-like languages with its support for programming with lists, map/filter-like programming, higher-order programming and so on. And Perl is still a prerequisite for building the most common Haskell compiler, GHC.
Haskell and Perl represent flip-sides of the programming coin. I find it no surprise that they've found a home together.
The fact that people can write entire operating systems in C without having these problems indicates that the problems are with people, not C.
Quick exercise for the interested:
Go to your Linux source tree. Take a look in fs/pipe.c. Go to the function do_pipe. Take a look.
Yes, it's possible to clean up after yourself by writing code like this. But then, you'd have to be prepared to write and maintain code that looks like this. In Java, you wouldn't have to. You could let the GC take care of it, and your code would be much cleaner.
Now in an operating system kernel, there's a good argument here in favour of writing this awful code: The kernel's entire job is to manage resources well, so it's very important that resources are freed as soon as possible. In most user-space programs (there are some exceptions), there is less of a requirement to release most kinds of resources as soon as they become free, so you can batch them up and free them together instead, and reap the performance gains.
Believe it or not, it can make a huge difference. On a piece of high-performance, resource-intensive C++ code at work, we discovered that freeing a piece of memory was much more expensive than allocating it. The reason is that you can allocate memory from any arena, but freeing it requires that you return it to the arena that it came from. Decent multi-threaded allocators usually assign memory arenas to threads, so when allocating, a thread generally has an arena to itself. But freeing memory requires obtaining that thread's arena, which introduces lock contention. We fixed the problem with a judicious combination of using memory pooling, structure reuse and deferred deletion. If we had been using a GC-friendly language, a concurrent GC running at low priority would also have fixed the performance problem, at the cost of being more uncertain when resources would have been reclaimed. (For the particular application, the uncertainty was not an option, but most applications are not like that.)
One of the reasons why Pugs is written in Haskell is that, IM(biassed)O, it can be even more fun than Python. Certainly, the more fun features of Python were either directly borrowed from Haskell (e.g. list comprehensions) or from languages very like it (e.g. higher-order programming from Scheme).
With Blender you have complete access to the source code so the problems you have with other software of being limited to how they expose things in their API is nonexistent [...]
You probably missed the main point. In Maya you can do anything... without introducing any coupling in the Maya core.
You could introduce a physics simulator to any animation tool if you're prepared to propagate knowledge of it throughout the source code. But you require knowledge of the source code to do that, and you risk voiding your warranty (i.e. support contract). You also severely lose maintainability and robustness. The second thing that you introduce increases the coupling even more!
A well-designed API solves this problem by reducing what you have to know, reducing the effort that you have to expend and in order to get work done. As one other person pointed out, you could do anything in Blender by the simple expedient of completely rewriting it (or replacing it, perhaps) so that it was some other program. But then, you don't actually need Blender to do that.
BTW, I'm going to fall well short of saying that Blender is useless for animation/vfx work. Any tool is useful if used wisely. My point is that Maya fits better into just about any shaped hole that you can think of, unless that hole is almost precisely Blender-shaped.
The dependency graph. This is what gives Maya its flexibility.
The MEL interpreter. This is what gives Maya its extensibility, for the most part. (In fact, you can't create dependency graph nodes in MEL; you need to do this using the C++ API.)
The dependency graph is precisely what it sounds like: It's a graph, with dependencies between the nodes. Dependency nodes form an object hierarchy, so you can subclass nodes to make other nodes.
A good way to think of this is like a spreadsheet. The cells in a spreadsheet either contain data which the user has typed in, or contain expressions which compute values based on the values in other cells. When you modify some value, the system propagates those changes through the spreadsheet. The Maya dependency graph works similarly. For example, in Maya, "time" is just a node. Moving to the next frame just requires changing the value in the "time" node, and letting the dependency engine do the rest.
The main difference with a spreadsheet is that in Maya, the evaluation is goal-directed. At any time, only some of the scene is visible (e.g. some layers might be turned off), so Maya goes to a lot of trouble to avoid propagating changes that don't contribute to visible changes. This way, you can play back animations at real-time speeds if the visible part of the scene isn't complex.
Everything in Maya works this way. Suppose you create a polygonal square, then extrude it, then tweak it. Then you have four nodes: A polygonal square node, which outputs a polygon mesh, then an extrusion node, which turns polygon meshes into polygon meshes, then a tweak node, then a shape node, which is the thing that's actually visible. Your entire construction history is there, so you can go back and edit the amount of extrusion, and the changes will propagate through.
So if you want to implement a new polygon edit tool, all you need to do is create a dependency node for it, and everything will work. (You also need to create a user interface, of course. You can do that with MEL.)
Similarly, if you want to create a completely new concept in Maya, once again, all you need to do is implement new dependency nodes. Eventually, they will output some kind of data that Maya understands (e.g. transforms, colours), and at that point, standard Maya dependency nodes can take over. Or they won't output anything at all, and can just sit there waiting for your exporter or renderer to take notice of them, at which point they'll be evaluated. And MEL provides you with a mechanism to create a user interface to manipulate your dependency nodes; MEL has primitives for manipulating any dependency node object which conforms to the Maya data model.
Re:If Autodesk _does_ kill Maya for Mac and Linux.
on
Autodesk Acquires Alias
·
· Score: 3, Informative
Indeed. People who have never used Maya probably can't appreciate what it can do, but Blender doesn't even come close.
Modelling and animation is only part of a visual effects or animation pipeline. Maya's strength is not the fabulous modelling tools (certainly Lightwave's modelling tools are better), but the way that it is customisable. Any part of Maya is customisable. Maya can be whatever you want it to be, and can integrate seamlessly with whatever you want it to integrate with.
This is a much harder problem than it sounds. Consider a simple Newtonian physics simulation engine. The location and orientation of some object might depend on the simulation (e.g. an object might be moving under gravity). On the other hand, the simulation depends on the location and orientation of objects (e.g. objects can collide). This is a circular dependency. Most animation systems handle this in one of two ways: couple the animation system and the physics simulator, or run the simulation as a post-pass between animation and rendering. Maya (even though it does have a simulator in the base product) can handle it as a plug-in, and the circular dependency is no problem at all. Moreover, you can have multiple special-purpose solvers (fluid solvers, cloth solvers etc), and they all work together automatically, with no coupling with the Maya core.
It goes deeper.
Maya has its own shader model. If you don't like it, such as if it's not the model that your renderer uses, you can implement your own as a plugin. No change to the core. It Just Works(tm).
Unlike 3DS, which requires plug-ins to conform to a fixed set of interfaces (subclass THIS C++ class if you want to implement a shader, subclass THIS if you want to implement a type of geometry, subclass THIS if you want to implement a renderer), in Maya, it's completely generic. You can even implement your own "things" which the Maya core has no concept of (e.g. it's not a shader, it's not geometry, it's not a user control), and everything will just work. Try doing that with Blender.
Whoops, my mistake. It's well known that the new GPS satellites will use hydrogen MASER clocks. I believe this one actually uses a rubidium clock, much like the "newer" old GPS satellites.
At any rate, caesium clocks are definitely history. They're bigger, they use more power, they don't last as long and they're less accurate than rubidium.
I have seen these comments about the "external" carbon costs of nuclear power plants -- the claims are never supported.
It depends which claims you listen to. Some are based on assuming that all of the known high-grade ore in the world has been mined, and so the world has to rely on lower-grade ore, which requires more refining.
But if you want a figure, Wikipedia notes that at peak capacity, the Paducah enrichment plant (which I believe is the only one operating in the US at the moment) consumes over 3000MW of electricity. USEC's web site confirms this. Even if they only use about 2000MW most of the time, that's still two large coal power stations just for enrichment. Coal, by comparison, doesn't need to be enriched. On the other hand, you need less Uranium for the same amount of power than you do for coal, so it's a bit less polluting to mine.
I do agree that nuclear power is cleaner than fossil fuels. I will provisionally retract the claim that nuclear fuels take the same amount of energy to prepare as coal (it seems like it's actually more, but I can't find any hard data). My point is simply that it's not as clean as some people think.
Some day the world might have an enrichment plant which runs off its own breeder reactor. But at the moment, it doesn't.
Why not nuclear? Nuclear energy is some of the cleanest and most efficient energy production available.
It's not as clean as some people seem to think.
Nuclear fuels need to be mined and refined. So much so that you create roughly the same amount of pollution preparing nuclear fuels as you do preparing coal. While it's true that actually generating the power is cleaner, nuclear energy is still significantly more polluting than truly "green" energy such as wind, solar, geothermal and hydro.
I think the most important lesson is that while we're talking about cleaner power, we should not neglect using the energy that we already have more efficiently. Wouldn't it be great if you could redirect the heat being generated by your server farm into heating offices and water?
What kind of 3d software:
1) has no modeling tools
Most of them. Games, for example.
2) lists 'rotate, translate, and scale with visual feedback' as a fucking 'feature'?! Or 'multiple views' I mean this is 3D SOFTWARE, right?
I think you're missing the point.
DAZ is not trying to create competition for Houdini or even Vue d'Esprit. That would be stupid. There are plenty of players in that market already who have a head start.
DAZ is trying to do something new: 3D clip art. Clip art sells well for a reason. This program is going to take that into 3D. They want people to be able to use 3D models as easily as they use ring tones. It's actually a pretty grand vision and, unlike most dot coms, it's not so dumb, since it plays right into modern remix culture.
We shall see if they succeed or not, but if anyone can do it, they can.
As interesting as this argument is, it's a bit of a stretch to call this scenario a restriction on free speech. A restriction on "free parenting" (whatever that means), perhaps, but not free speech.
Most people in big countries don't drive that far to work, especially if they have a decent public transport system. And if you are in the unlucky position of having to drive a long distance to work, well, serves you right for working in Silicon Valley.
On one hand it goes against the spirit of open-ness.
I don't think it does at all. This is no different from copyrighting the GPL text. Pretty much all FOSS advocates are in favour of trademarks, and the overwhelming majority have no objection to the principle of "if you fork it, rename it".
Instituting, and aggressively policing, mandatory 40KM/h zones outside any building which could conceivably be used for (K12) educational purposes. I have no problem with a 40KM/h zone outside a primary school, grade three kids have little to no road sense; outside a senior school, with youth who are expected to KNOW to STAY OFF THE ROAD is obvious revenue raising.
Let me help out with a specific (and real) scenario.
Suppose you have a four-lane highway with service roads. (I'm not sure what USians call these, but they're one-lane-with-parking roads separated from the main road via a strip of land.) Suppose, furthermore, that there is a high school which faces on to one of these service roads. Suppose furthermore that there is a traffic light intersection next to the school, manned by crossing guards at the appropriate times on school days. The law says that the speed limit on BOTH sides of the four-lane highway must be 40km/h (25mph) from 8am-9:30am and from 3pm-4:40pm on school days.
However: The correct response is not to speed, but rather to ask the loyal opposition if they will correct the insanity when they are elected.
I know a number of expatriate (former?) US citizens in Australia, now Australian citizens, and in all cases the answer is "no" to all questions. If you have another citizenship, and you'd prefer to turn your back on the US and use that instead, why should you pay US taxes?
I may be wrong, but the subtext appears to be that US citizenship is somehow more advantageous than other citizenships. But surely if the US wants to tax you even if you don't live in the country, don't use their passports, don't use their consular services and generally have turned your back on then, then that's one clear DISadvantage. The US government wants something for nothing from someone that they by right should have no further claim over.
The problem for expatriates is not being taxed, it's being taxed twice. Especially paying taxes to a country that you are no longer part of.
It is not even close to "simple" to renounce a US citizenship. If you stick your head above water, they will never leave you alone.
IANAL, but I thought that you had no legal requirement to tell the US government where you are if you're outside the country. And they surely have no way to tell if a) you're not travelling on a US passport, and b) they're not watching you for some other reason.
You mean he or she, you sexist clod.
The Sears catalogue appeals to a prurient interest in excretion?! Damn, I should subscribe.
Well, at least the children of Calfornia will be protected from Pat Robertson Games' latest title, SimIntelligentDesign.
It's not such a shock, IMO. Ever since it's been a "real" language (about Perl 5 or so), Perl has always been inspired by Lisp-like languages with its support for programming with lists, map/filter-like programming, higher-order programming and so on. And Perl is still a prerequisite for building the most common Haskell compiler, GHC.
Haskell and Perl represent flip-sides of the programming coin. I find it no surprise that they've found a home together.
Quick exercise for the interested:
Go to your Linux source tree. Take a look in fs/pipe.c. Go to the function do_pipe. Take a look.
Yes, it's possible to clean up after yourself by writing code like this. But then, you'd have to be prepared to write and maintain code that looks like this. In Java, you wouldn't have to. You could let the GC take care of it, and your code would be much cleaner.
Now in an operating system kernel, there's a good argument here in favour of writing this awful code: The kernel's entire job is to manage resources well, so it's very important that resources are freed as soon as possible. In most user-space programs (there are some exceptions), there is less of a requirement to release most kinds of resources as soon as they become free, so you can batch them up and free them together instead, and reap the performance gains.
Believe it or not, it can make a huge difference. On a piece of high-performance, resource-intensive C++ code at work, we discovered that freeing a piece of memory was much more expensive than allocating it. The reason is that you can allocate memory from any arena, but freeing it requires that you return it to the arena that it came from. Decent multi-threaded allocators usually assign memory arenas to threads, so when allocating, a thread generally has an arena to itself. But freeing memory requires obtaining that thread's arena, which introduces lock contention. We fixed the problem with a judicious combination of using memory pooling, structure reuse and deferred deletion. If we had been using a GC-friendly language, a concurrent GC running at low priority would also have fixed the performance problem, at the cost of being more uncertain when resources would have been reclaimed. (For the particular application, the uncertainty was not an option, but most applications are not like that.)
One of the reasons why Pugs is written in Haskell is that, IM(biassed)O, it can be even more fun than Python. Certainly, the more fun features of Python were either directly borrowed from Haskell (e.g. list comprehensions) or from languages very like it (e.g. higher-order programming from Scheme).
True story: William Shakespeare wrote The Merchant of Venice because a wealthy patron wanted a play that was like Marlowe's The Jew of Malta.
You probably missed the main point. In Maya you can do anything... without introducing any coupling in the Maya core.
You could introduce a physics simulator to any animation tool if you're prepared to propagate knowledge of it throughout the source code. But you require knowledge of the source code to do that, and you risk voiding your warranty (i.e. support contract). You also severely lose maintainability and robustness. The second thing that you introduce increases the coupling even more!
A well-designed API solves this problem by reducing what you have to know, reducing the effort that you have to expend and in order to get work done. As one other person pointed out, you could do anything in Blender by the simple expedient of completely rewriting it (or replacing it, perhaps) so that it was some other program. But then, you don't actually need Blender to do that.
BTW, I'm going to fall well short of saying that Blender is useless for animation/vfx work. Any tool is useful if used wisely. My point is that Maya fits better into just about any shaped hole that you can think of, unless that hole is almost precisely Blender-shaped.
Not quite.
Maya has two main parts "under the covers":
The dependency graph is precisely what it sounds like: It's a graph, with dependencies between the nodes. Dependency nodes form an object hierarchy, so you can subclass nodes to make other nodes.
A good way to think of this is like a spreadsheet. The cells in a spreadsheet either contain data which the user has typed in, or contain expressions which compute values based on the values in other cells. When you modify some value, the system propagates those changes through the spreadsheet. The Maya dependency graph works similarly. For example, in Maya, "time" is just a node. Moving to the next frame just requires changing the value in the "time" node, and letting the dependency engine do the rest.
The main difference with a spreadsheet is that in Maya, the evaluation is goal-directed. At any time, only some of the scene is visible (e.g. some layers might be turned off), so Maya goes to a lot of trouble to avoid propagating changes that don't contribute to visible changes. This way, you can play back animations at real-time speeds if the visible part of the scene isn't complex.
Everything in Maya works this way. Suppose you create a polygonal square, then extrude it, then tweak it. Then you have four nodes: A polygonal square node, which outputs a polygon mesh, then an extrusion node, which turns polygon meshes into polygon meshes, then a tweak node, then a shape node, which is the thing that's actually visible. Your entire construction history is there, so you can go back and edit the amount of extrusion, and the changes will propagate through.
So if you want to implement a new polygon edit tool, all you need to do is create a dependency node for it, and everything will work. (You also need to create a user interface, of course. You can do that with MEL.)
Similarly, if you want to create a completely new concept in Maya, once again, all you need to do is implement new dependency nodes. Eventually, they will output some kind of data that Maya understands (e.g. transforms, colours), and at that point, standard Maya dependency nodes can take over. Or they won't output anything at all, and can just sit there waiting for your exporter or renderer to take notice of them, at which point they'll be evaluated. And MEL provides you with a mechanism to create a user interface to manipulate your dependency nodes; MEL has primitives for manipulating any dependency node object which conforms to the Maya data model.
Indeed. People who have never used Maya probably can't appreciate what it can do, but Blender doesn't even come close.
Modelling and animation is only part of a visual effects or animation pipeline. Maya's strength is not the fabulous modelling tools (certainly Lightwave's modelling tools are better), but the way that it is customisable. Any part of Maya is customisable. Maya can be whatever you want it to be, and can integrate seamlessly with whatever you want it to integrate with.
This is a much harder problem than it sounds. Consider a simple Newtonian physics simulation engine. The location and orientation of some object might depend on the simulation (e.g. an object might be moving under gravity). On the other hand, the simulation depends on the location and orientation of objects (e.g. objects can collide). This is a circular dependency. Most animation systems handle this in one of two ways: couple the animation system and the physics simulator, or run the simulation as a post-pass between animation and rendering. Maya (even though it does have a simulator in the base product) can handle it as a plug-in, and the circular dependency is no problem at all. Moreover, you can have multiple special-purpose solvers (fluid solvers, cloth solvers etc), and they all work together automatically, with no coupling with the Maya core.
It goes deeper.
Maya has its own shader model. If you don't like it, such as if it's not the model that your renderer uses, you can implement your own as a plugin. No change to the core. It Just Works(tm).
Unlike 3DS, which requires plug-ins to conform to a fixed set of interfaces (subclass THIS C++ class if you want to implement a shader, subclass THIS if you want to implement a type of geometry, subclass THIS if you want to implement a renderer), in Maya, it's completely generic. You can even implement your own "things" which the Maya core has no concept of (e.g. it's not a shader, it's not geometry, it's not a user control), and everything will just work. Try doing that with Blender.
Whoops, my mistake. It's well known that the new GPS satellites will use hydrogen MASER clocks. I believe this one actually uses a rubidium clock, much like the "newer" old GPS satellites.
At any rate, caesium clocks are definitely history. They're bigger, they use more power, they don't last as long and they're less accurate than rubidium.
Caesium is so 20th century. And besides, they actually use up the caesium.
It's fairly well-known that the new GPS satellites use hydrogen MASER clocks.
It depends which claims you listen to. Some are based on assuming that all of the known high-grade ore in the world has been mined, and so the world has to rely on lower-grade ore, which requires more refining.
But if you want a figure, Wikipedia notes that at peak capacity, the Paducah enrichment plant (which I believe is the only one operating in the US at the moment) consumes over 3000MW of electricity. USEC's web site confirms this. Even if they only use about 2000MW most of the time, that's still two large coal power stations just for enrichment. Coal, by comparison, doesn't need to be enriched. On the other hand, you need less Uranium for the same amount of power than you do for coal, so it's a bit less polluting to mine.
I do agree that nuclear power is cleaner than fossil fuels. I will provisionally retract the claim that nuclear fuels take the same amount of energy to prepare as coal (it seems like it's actually more, but I can't find any hard data). My point is simply that it's not as clean as some people think.
Some day the world might have an enrichment plant which runs off its own breeder reactor. But at the moment, it doesn't.
It's not as clean as some people seem to think.
Nuclear fuels need to be mined and refined. So much so that you create roughly the same amount of pollution preparing nuclear fuels as you do preparing coal. While it's true that actually generating the power is cleaner, nuclear energy is still significantly more polluting than truly "green" energy such as wind, solar, geothermal and hydro.
I think the most important lesson is that while we're talking about cleaner power, we should not neglect using the energy that we already have more efficiently. Wouldn't it be great if you could redirect the heat being generated by your server farm into heating offices and water?
Perl is an even better operating system, but it's a shame about the scripting language.
I agree. A better way of putting it is that scientists have the following priorities:
When you're talking about millions of dollars, you'd better have the "eat" part worked out first.
Most of them. Games, for example.
I think you're missing the point.
DAZ is not trying to create competition for Houdini or even Vue d'Esprit. That would be stupid. There are plenty of players in that market already who have a head start.
DAZ is trying to do something new: 3D clip art. Clip art sells well for a reason. This program is going to take that into 3D. They want people to be able to use 3D models as easily as they use ring tones. It's actually a pretty grand vision and, unlike most dot coms, it's not so dumb, since it plays right into modern remix culture.
We shall see if they succeed or not, but if anyone can do it, they can.
Blender's interface might be completely incomprehensible, but it's still no competition for ZBrush.
Don't blame me. I voted for Kronos.
As interesting as this argument is, it's a bit of a stretch to call this scenario a restriction on free speech. A restriction on "free parenting" (whatever that means), perhaps, but not free speech.
Most people in big countries don't drive that far to work, especially if they have a decent public transport system. And if you are in the unlucky position of having to drive a long distance to work, well, serves you right for working in Silicon Valley.
I don't think it does at all. This is no different from copyrighting the GPL text. Pretty much all FOSS advocates are in favour of trademarks, and the overwhelming majority have no objection to the principle of "if you fork it, rename it".
Let me help out with a specific (and real) scenario.
Suppose you have a four-lane highway with service roads. (I'm not sure what USians call these, but they're one-lane-with-parking roads separated from the main road via a strip of land.) Suppose, furthermore, that there is a high school which faces on to one of these service roads. Suppose furthermore that there is a traffic light intersection next to the school, manned by crossing guards at the appropriate times on school days. The law says that the speed limit on BOTH sides of the four-lane highway must be 40km/h (25mph) from 8am-9:30am and from 3pm-4:40pm on school days.
However: The correct response is not to speed, but rather to ask the loyal opposition if they will correct the insanity when they are elected.