This is something that we covered in my UI design class.
A useful heuristic for determining an upper-bound of dexterity of a part of the body is to compare the mass of the part with the mass of the muscle that moves it. Of course you can have less dexterity than that (eg. a baby), but there is also an upper limit.
When you're using a mouse, you're primarily moving your wrist or your elbow. These are pretty good. However, your fingers simply have much better dexterity, because the muscles that move them are in your forearm, so the ratio of the masses is much better. While you might get pretty good with a mouse, most pen users will be better than most mouse users. Likewise, most mouse users will be better than most people that use their leg to operate a pointing device.
Also, it's not that the mouse doesn't have it's good points. It allows you to keep your hand at rest most of the time, and is more suited for extended use. I suppose you could use a mouse by moving it around with your fingertips, but it would have to be a pretty light mouse. Hm..
As an aside, the most dexterous part of the body is the tongue. There have been experiments to put a pointer on the roof of the mouth, but they met with various problems, including hardware problems with the saliva, taste issues, and the fact that the tongue has thin skin which wears through rapidly.
I've roasted many marshmallows on the browser flamewars. They can be fun to watch, but not too enlightening.
One question that I'd like to hear an educated answer to is what you think Firefox's (and mozilla's) greatest innovations are. What are your best additions to the field, and which are simply refined from other browsers?
Also, the spell checker in FF2 detects suxx0rs and roxx0rs as real words. Should I try to use them more?;P
Well, it looks like you're using Hungarian to encode meaning into the variable name. That's great - variable name is a wonderful place to put descriptive information about what the variable is, and how it's used.
I'm saying that there are a couple of different levels at which you can do this. If you're not using the variable in a given way very much, in the variable name is great. However, I may be spoiled, but I tend to use human-readable variable names. Compilers no longer have a limit to symbol names that's shorter than what I'm willing to type. Arbitrarily removing all the vowels from variable names doesn't really help readability. But on the other hand, it's not the end of the world - after reading Joel's short primer on Hungarian notation, I think I agree that the real evil is a convention that is based on data type name.
The other point that I was trying to make is how great having multiple types for different usages can be, especially when you use them extensively. In the code I'm working on, we're dealing with polygonal meshes a lot - we've got vertices, edges, and faces all over the place. We tried using a simple int with notational marking, but we still got a few bugs where the wrong type of index was passed to a function - for example, you send a face index to deleteEdge. Then we made three types, VertexIndex, EdgeIndex, and FaceIndex. Now, that class of bug is guaranteed to be completely gone, for those types. There's no performance penalty. The only cost is moving semantic information from the variable name to the type. Is it worth it? Well, I guess it depends on how often you use the type, and what the potential for bugs is. We don't need to wait until new programmers know the conventions - in that part of the code, it is very, very difficult to use the wrong type.
As for dynamically typed languages, I've used Python a bit, it's pretty cool..:). I've heard that Ruby is good, but I haven't had a chance to try it. Matz recently spoke nearby, but I couldn't make it. I'll have to give it a look..:)
But really, how hard is it to make them different types? Like, say, istream and ostream? If you use the type much at all, it's not hard, and then you don't need to check visually - they're strongly typed. If you don't use the type much, just rely on plain old variable names and comments. A semi-machine-readable, semi-codified system semi-solves a problem that's much better tackled in different ways.
We've been using many, many types in a codebase I work on, and templates make multiple types very easy to use throughout the code. It has all the advantages of a hungarian system, plus compiler checks.
Except for the suspicious morse code border, I'd say you're right. But at least it's friendly competition. I imagine none of the ie developers were happy that they all got taken off of the ie team once netscape was crushed, and I'm sure they're happy to be allowed to work on it again, thanks to Firefox.
Ah yes. I'm certain that if all the fraud in the world stopped, merchants would charge less. I'm sure they wouldn't just keep charging whatever they thought the market would bear.
'The humbling -- and perversely comforting -- reality is that the Earth will forget us remarkably quickly.'
Not if I can help it!
What kind of a developer do you want to be?
on
Microsoft or Google?
·
· Score: 1
Exactly. Would you rather be a gDeveloper? Or a Developer, Developer, Developer, Developer?
Different developers get different things from working. One of the most insightful things I've seen about Google's attitude about its employees is that they basically treat them as rockstars in order to make advertising money. Personally, I'd love a 20% program at work. On the other hand, Microsoft is very stable ATM, and weathered the last web boom and bust with very little disturbance.
Tell both companies the other has noted in an interest in you working there and ask the question that most job interviewees hate; but not "Why should you work for us?" but "Why should I work for you?" It's the question they will be least expecting and the answer may be somewhat telling.
Yeah, except that's a question that they ask themselves every day they come to work - "Why oh why am I working here?".
He'd prefer that the supernode feature be removed entirely and Skype calls only ever consume the resources of the consenting parties directly involved in it.
.. which implies that Skype would no longer work through the majority of Firewalls. Skype's success is in part because the business folks can download it, install it, and get it working without having to ask the network guy at the company to please poke a hole in the firewall for port x to my laptop. Or the network guy actually doing it. Or the business guy even being able to formulate the question, instead of saying 'geez, that didn't work. Oh well'.
It's almost shocking to see a moderate argument. It seems that the average slashdot poster is an idiot, and half are below average. However, I think it's mostly because a balanced argument is much longer to type and less fun than firing out a quick one-liner, or shooting talking points back and forth.
Here's my take on the whole thing - raising kids is a tricky business. Many people take different approaches, and very few parents will agree on everything. Most parents that I know want their kids to grow up to be better people than they are. Most work quite a bit to reach that goal.
One argument that seems common is that anything that is banned or censored is controlled at the request of parents who don't want to take responsibility for their own kids. So, the argument goes, it is the fault of bad parenting that I can't watch saturday-morning porn on NBC - lazy parents that don't want to raise their own kids. However, the laziest parents I've known don't care about what their kids listen to, see, or do, certainly not enough to try to ban it.
On the other hand, it seems that there are a lot of parents that don't spend enough time with their children, but still act as if they did. It's easy to imagine parents like these being shocked that their kids are into bad things, and going ballistic. Legislating a solution, instead of trying to work one out with their kid. These are not always helpful.
Personally, I try to spend a lot of time with my kids, get a good relationship, teach values and social expectations. (Currently we're working on pooping in the potty.) However, I appreciate the fact that my kids don't have to grow up too fast. I'm glad that Nick Jr. doesn't have violent or racy ads inbetween shows, and I'm glad Dora the explorer doesn't swear. It's nice that there's entertainment that's age appropriate, and I appreciate the help. As kids get older, there's a delicate balance between letting them make their own mistakes and bad judgments, and cushioning their fall. At the end of the day, it's up to the kid to decide whather he wants to take what you taught him and try to be good, or ignore it and seek other pursuits.
So, you try to be a good parent, try to help your kids be good people, and appreciate any help you can get from society in general. Some people would like the world to be adults-only, but I really appreciate that there are some places that are safe for kids.
In relation to the perception of games, I personally hope that the Wii will help change people's perceptions. Unfortunately, the current crop seems to be more aimed at hardcore gamers, who expect adult-themed games to be an option. My 3-year-old probably couldn't handle a dual shock, but I bet she could have a lot of fun with a Wii. Hopefully there will be better content out there which will show a kid-friendly side to this medium as well. Heck, if the devkits are cheap, I'd be happy to make some..:).
Exactly. GPGPU is basically hijacking graphics hardware to perform parallelizable vector operations. However, the GPU isn't general enough for many applications. Hardware is improving in this regard, but if GPGPU actually takes off, it would really make more sense to have a generic vector processor. However, this could also happen by improving the SIMD abilities of the current round of hardware, like Altivec and SSE.
Exactly. If multiple accounts for the same person were frowned upon, why wouldn't they just block forwarding from gmail accounts to other gmail accounts? They already block forwarding from your account to your account, even through intermediaries.
Slightly offtopic. Peter Norvig gave a talk at my university on similar topics, and there was a short Q&A afterwards.
One of the students asked him what he did for his 20% project. He said that he was usually too busy keeping tabs on what the other employees were doing with their 20% time, so he didn't quite get around to working on his. He told us what he wanted to do, as motivation for himself.
The basic idea is that when he used to work for NASA, it'd always make him upset when people saw faces in random spots on the moon's terrain, and claimed it was aliens that NASA was covering up, or similar. So, he was planning on taking facial recognition software and running it on all of google earth. I think it'd be pretty awesome..
Any progress yet, Mr. Norvig? I'd love to see the results..:)
I think the more possible danger is to ever-so-slightly modify the format, such that the current reverse-engineered driver will fail to work, but their stuff will continue to work, because they have more guarantees or limitations in the filesystem than could be deduced from the first attempt at reverse engineering.
For example, if I were looking to create a system that would be hard to reverse-engineer, I'd do something like add flags all over the place. If the flag was on, it would behave one way, if it was off, it would behave another way. Leave all the flags off in release versions. Then, if someone is able to duplicate the original behavior, release an update that starts turning on the flags, exposing the different behavior in old systems. Then wait until the system is reverse-engineered again, and start flipping a different flag.
While that's a little paranoid, it's possible that such a thing could happen by accident - say, they build in advanced features that almost never get used. I didn't even know that symlinks were possible in NTFS until a few months ago. Are they fully supported by this driver? What if the next version of office starts using symlinks all over the place? Or Vista uses them to store search results?
Guess it depends on the school. My school's CS department (and the student body in general) is surprisingly anti-microsoft.
Perhaps it's because microsoft crushed all of the local software companies that made it big (wordperfect, novell, um.. SCO?).
In any case, I think there's a total of one class that requires MSVC, which is algorithmic analysis (heavy on the optimization). In general I see a lot of people with linux or mac laptops. Although, if I were to do it again now, I'd probably get a macbook and triple-boot. There are things I like about xp, linux, and osx (and msvc, emacs, and xcode, respectively), but the form factor and little niceties of mac hardware do it for me. As has been repeated over and over by mac zealots, comparable specs are comparable prices, give or take.
I imagine that if you did pay $20,000 a year, one of the side effects is that your employees would die a lot more. Think about it.. people would quite simply kill for a job like that. People in the US kill for a smaller increase in salary, and we have welfare and other programs designed to permit everyone to be able to have a standard of living above what many of them are used to.
That said, it wouldn't be a bad thing to not require them to work 15-hour days nonstop.
I know a guy who made similar software. Not sure how it stacks up to some of the other products mentioned in the thread, although it does have some fairly sophisticated shape blending which minimizes bending energy to produce the morphs. Has bones, cross-platform, etc.
It's called TweenMaker.
At the university where I study, they typically teach making text files and makefiles for c++. The main downside of this imho is that a lot of the students never learn to use debugging tools properly. Instead, everyone just sticks with the printf school of debugging, which is not as useful for many classes of bugs.
IDEs allow you to step through the execution, to see what's happening. They remove tedium. They also often have useful syntax markup - specifically in the case of Python, this is important. I've used a python IDE (SPE) that shows how your indentation breaks down into execution blocks. That's very important for python editing, and giving your students help visualizing it is probably good.
Other than that, I agree with other statements that IDEs are fine, as long as you understand what's going on behind the scenes. Specifically with java, showing them that java programming essentially uses only 3 executables - the editor, the compiler, and the VM.
This is something that we covered in my UI design class.
A useful heuristic for determining an upper-bound of dexterity of a part of the body is to compare the mass of the part with the mass of the muscle that moves it. Of course you can have less dexterity than that (eg. a baby), but there is also an upper limit.
When you're using a mouse, you're primarily moving your wrist or your elbow. These are pretty good. However, your fingers simply have much better dexterity, because the muscles that move them are in your forearm, so the ratio of the masses is much better. While you might get pretty good with a mouse, most pen users will be better than most mouse users. Likewise, most mouse users will be better than most people that use their leg to operate a pointing device.
Also, it's not that the mouse doesn't have it's good points. It allows you to keep your hand at rest most of the time, and is more suited for extended use. I suppose you could use a mouse by moving it around with your fingertips, but it would have to be a pretty light mouse. Hm..
As an aside, the most dexterous part of the body is the tongue. There have been experiments to put a pointer on the roof of the mouth, but they met with various problems, including hardware problems with the saliva, taste issues, and the fact that the tongue has thin skin which wears through rapidly.
I've roasted many marshmallows on the browser flamewars. They can be fun to watch, but not too enlightening.
;P
One question that I'd like to hear an educated answer to is what you think Firefox's (and mozilla's) greatest innovations are. What are your best additions to the field, and which are simply refined from other browsers?
Also, the spell checker in FF2 detects suxx0rs and roxx0rs as real words. Should I try to use them more?
Cute overload.
Works for me.
Well, it looks like you're using Hungarian to encode meaning into the variable name. That's great - variable name is a wonderful place to put descriptive information about what the variable is, and how it's used.
:). I've heard that Ruby is good, but I haven't had a chance to try it. Matz recently spoke nearby, but I couldn't make it. I'll have to give it a look.. :)
I'm saying that there are a couple of different levels at which you can do this. If you're not using the variable in a given way very much, in the variable name is great. However, I may be spoiled, but I tend to use human-readable variable names. Compilers no longer have a limit to symbol names that's shorter than what I'm willing to type. Arbitrarily removing all the vowels from variable names doesn't really help readability. But on the other hand, it's not the end of the world - after reading Joel's short primer on Hungarian notation, I think I agree that the real evil is a convention that is based on data type name.
The other point that I was trying to make is how great having multiple types for different usages can be, especially when you use them extensively. In the code I'm working on, we're dealing with polygonal meshes a lot - we've got vertices, edges, and faces all over the place. We tried using a simple int with notational marking, but we still got a few bugs where the wrong type of index was passed to a function - for example, you send a face index to deleteEdge. Then we made three types, VertexIndex, EdgeIndex, and FaceIndex. Now, that class of bug is guaranteed to be completely gone, for those types. There's no performance penalty. The only cost is moving semantic information from the variable name to the type. Is it worth it? Well, I guess it depends on how often you use the type, and what the potential for bugs is. We don't need to wait until new programmers know the conventions - in that part of the code, it is very, very difficult to use the wrong type.
As for dynamically typed languages, I've used Python a bit, it's pretty cool..
But really, how hard is it to make them different types? Like, say, istream and ostream? If you use the type much at all, it's not hard, and then you don't need to check visually - they're strongly typed. If you don't use the type much, just rely on plain old variable names and comments. A semi-machine-readable, semi-codified system semi-solves a problem that's much better tackled in different ways.
We've been using many, many types in a codebase I work on, and templates make multiple types very easy to use throughout the code. It has all the advantages of a hungarian system, plus compiler checks.
Except for the suspicious morse code border, I'd say you're right. But at least it's friendly competition. I imagine none of the ie developers were happy that they all got taken off of the ie team once netscape was crushed, and I'm sure they're happy to be allowed to work on it again, thanks to Firefox.
Ah yes. I'm certain that if all the fraud in the world stopped, merchants would charge less. I'm sure they wouldn't just keep charging whatever they thought the market would bear.
Not if I can help it!
Exactly. Would you rather be a gDeveloper? Or a Developer, Developer, Developer, Developer?
Different developers get different things from working. One of the most insightful things I've seen about Google's attitude about its employees is that they basically treat them as rockstars in order to make advertising money. Personally, I'd love a 20% program at work. On the other hand, Microsoft is very stable ATM, and weathered the last web boom and bust with very little disturbance.
Yeah, except that's a question that they ask themselves every day they come to work - "Why oh why am I working here?".
.. which implies that Skype would no longer work through the majority of Firewalls. Skype's success is in part because the business folks can download it, install it, and get it working without having to ask the network guy at the company to please poke a hole in the firewall for port x to my laptop. Or the network guy actually doing it. Or the business guy even being able to formulate the question, instead of saying 'geez, that didn't work. Oh well'.
Here's my take on the whole thing - raising kids is a tricky business. Many people take different approaches, and very few parents will agree on everything. Most parents that I know want their kids to grow up to be better people than they are. Most work quite a bit to reach that goal.
One argument that seems common is that anything that is banned or censored is controlled at the request of parents who don't want to take responsibility for their own kids. So, the argument goes, it is the fault of bad parenting that I can't watch saturday-morning porn on NBC - lazy parents that don't want to raise their own kids. However, the laziest parents I've known don't care about what their kids listen to, see, or do, certainly not enough to try to ban it.
On the other hand, it seems that there are a lot of parents that don't spend enough time with their children, but still act as if they did. It's easy to imagine parents like these being shocked that their kids are into bad things, and going ballistic. Legislating a solution, instead of trying to work one out with their kid. These are not always helpful.
Personally, I try to spend a lot of time with my kids, get a good relationship, teach values and social expectations. (Currently we're working on pooping in the potty.) However, I appreciate the fact that my kids don't have to grow up too fast. I'm glad that Nick Jr. doesn't have violent or racy ads inbetween shows, and I'm glad Dora the explorer doesn't swear. It's nice that there's entertainment that's age appropriate, and I appreciate the help. As kids get older, there's a delicate balance between letting them make their own mistakes and bad judgments, and cushioning their fall. At the end of the day, it's up to the kid to decide whather he wants to take what you taught him and try to be good, or ignore it and seek other pursuits.
So, you try to be a good parent, try to help your kids be good people, and appreciate any help you can get from society in general. Some people would like the world to be adults-only, but I really appreciate that there are some places that are safe for kids.
In relation to the perception of games, I personally hope that the Wii will help change people's perceptions. Unfortunately, the current crop seems to be more aimed at hardcore gamers, who expect adult-themed games to be an option. My 3-year-old probably couldn't handle a dual shock, but I bet she could have a lot of fun with a Wii. Hopefully there will be better content out there which will show a kid-friendly side to this medium as well. Heck, if the devkits are cheap, I'd be happy to make some.. :).
DRM can be easier or harder to crack, but it will always be crackable.
You give them the lock, you give them the key, and you hope that they can never figure out how to use them together.
Why the content industries keep believing that this is a good idea is a true mystery.
Exactly. GPGPU is basically hijacking graphics hardware to perform parallelizable vector operations. However, the GPU isn't general enough for many applications. Hardware is improving in this regard, but if GPGPU actually takes off, it would really make more sense to have a generic vector processor. However, this could also happen by improving the SIMD abilities of the current round of hardware, like Altivec and SSE.
It seems that GPGPU applicatoins are turning the GPU into something similar to the old math coprocessors, but for parallelizable, SIMD math.
I predict that they will eventually go the way of the FPU.
I heartily agree - would you go and be a PM at a cell phone company? Awesome.
BTW, one of the items on your list, the GPS phone locator service, is offered by Disney Mobile.
Exactly. If multiple accounts for the same person were frowned upon, why wouldn't they just block forwarding from gmail accounts to other gmail accounts? They already block forwarding from your account to your account, even through intermediaries.
As opposed to my generic walrus olympics opening ceremonies method?
Slightly offtopic. Peter Norvig gave a talk at my university on similar topics, and there was a short Q&A afterwards.
:)
One of the students asked him what he did for his 20% project. He said that he was usually too busy keeping tabs on what the other employees were doing with their 20% time, so he didn't quite get around to working on his. He told us what he wanted to do, as motivation for himself.
The basic idea is that when he used to work for NASA, it'd always make him upset when people saw faces in random spots on the moon's terrain, and claimed it was aliens that NASA was covering up, or similar. So, he was planning on taking facial recognition software and running it on all of google earth. I think it'd be pretty awesome..
Any progress yet, Mr. Norvig? I'd love to see the results..
I think the more possible danger is to ever-so-slightly modify the format, such that the current reverse-engineered driver will fail to work, but their stuff will continue to work, because they have more guarantees or limitations in the filesystem than could be deduced from the first attempt at reverse engineering.
For example, if I were looking to create a system that would be hard to reverse-engineer, I'd do something like add flags all over the place. If the flag was on, it would behave one way, if it was off, it would behave another way. Leave all the flags off in release versions. Then, if someone is able to duplicate the original behavior, release an update that starts turning on the flags, exposing the different behavior in old systems. Then wait until the system is reverse-engineered again, and start flipping a different flag.
While that's a little paranoid, it's possible that such a thing could happen by accident - say, they build in advanced features that almost never get used. I didn't even know that symlinks were possible in NTFS until a few months ago. Are they fully supported by this driver? What if the next version of office starts using symlinks all over the place? Or Vista uses them to store search results?
Guess it depends on the school. My school's CS department (and the student body in general) is surprisingly anti-microsoft.
Perhaps it's because microsoft crushed all of the local software companies that made it big (wordperfect, novell, um.. SCO?).
In any case, I think there's a total of one class that requires MSVC, which is algorithmic analysis (heavy on the optimization). In general I see a lot of people with linux or mac laptops. Although, if I were to do it again now, I'd probably get a macbook and triple-boot. There are things I like about xp, linux, and osx (and msvc, emacs, and xcode, respectively), but the form factor and little niceties of mac hardware do it for me. As has been repeated over and over by mac zealots, comparable specs are comparable prices, give or take.
I imagine that if you did pay $20,000 a year, one of the side effects is that your employees would die a lot more. Think about it.. people would quite simply kill for a job like that. People in the US kill for a smaller increase in salary, and we have welfare and other programs designed to permit everyone to be able to have a standard of living above what many of them are used to.
That said, it wouldn't be a bad thing to not require them to work 15-hour days nonstop.
The thing about using your console as a DVD player is that consoles generally suck as DVD players.
I know a guy who made similar software. Not sure how it stacks up to some of the other products mentioned in the thread, although it does have some fairly sophisticated shape blending which minimizes bending energy to produce the morphs. Has bones, cross-platform, etc. It's called TweenMaker.
IDEs allow you to step through the execution, to see what's happening. They remove tedium. They also often have useful syntax markup - specifically in the case of Python, this is important. I've used a python IDE (SPE) that shows how your indentation breaks down into execution blocks. That's very important for python editing, and giving your students help visualizing it is probably good.
Other than that, I agree with other statements that IDEs are fine, as long as you understand what's going on behind the scenes. Specifically with java, showing them that java programming essentially uses only 3 executables - the editor, the compiler, and the VM.