China has a right to enforce its laws. You may not agree with the law, but China is a sovereign nation and has the right to make and enforce laws. An external corporation has to abide by them or pay the price.
I have wondered if ATT is a victim of their own success with 3G congestion. They largely sold the iPhone on the merits of all the cool data features and these users consume a lot of wireless data. 3G networks aren't designed to handle many concurrent heavy users. So I wonder, if Verizon gets the iPhone and folks make the switch, will the situation just naturally improve for ATT? Will Verizon suddenly feel the pain of all those heavy users?
Since you will be coming right out of school, you may not have much practical experience when it comes time to see a full-time job. This is to be expected, but there are a couple of things you can do to make yourself stand out:
1) Seek a good internship/coop that allows you to develop practical experience. Many of these are one or two-semester gigs (or one or two summers). When I was in school, I had a 3.5 yr coop which was basically a long-term relationship with a local employer. That was hugely valuable, as by the time I graduated I had a ton of experience (even leading small projects). I would have gotten a full-time offer had that department not been closed down shortly after I left.
2) Work on some interesting hobby projects. School projects are often an interesting spring board, but consider ways to apply what you are learning to scratching some itch.
Personally, I don't give the candidate's school a whole lot of weight. Maybe it gets my attention when looking at a sea of applicants, but I consider each applicant on his/her own merit as demonstrated by the resume, cover letter, and other submitted materials. The most crucial aspect of the whole process is actually the on-site interview. Everything else is just a screening mechanism.
What I look for most is what Joel Spolsky from Joel on Software refers to as "Smart and Gets Things Done." For me, that means someone who is interested in programming because they think it's cool and provides an outlet for creative problem solving, and someone who has demonstrated an ability to tackle problems in the past.
Therefore, I would recommend that you choose a college based on the total experience you will get. Consider everything college offers: learning about a lot of topics, meeting new people, exposure to new ideas, a new level of freedom and independence, moving to a new place to be exposed to new culture, etc... Many of the classes that had the most impact on me and were most memorable were far outside the CS curriculum. Consider what opportunities are available there with each school. Think about what it will be like to live in each of the cities the colleges are located in. Think about what there could be to explore and discover there. Choose the school that is best for you on all of those fronts - don't limit yourself to just choosing a CS program.
In a few years where you got your CS degree won't matter so much, but the memories and experiences you got while in school will last your entire lifetime. Many of those experience will be unrelated to what happened in the classroom.
What happens when a function parameter is renamed?
In your example:
[array insertObject:foo atIndex:bar];
If someone changed atIndex to insertionIndex, I don't know if I want to go and change all the references to the old name.
Does ObjectiveC handle this?
On the one hand I can see it being very annoying, but then I can also see how it would force you to update code that may be broken. For example if atIndex became afterIndex, a C-style argument passing scheme would allow a bug to be introduced.
Check out Days Of Wonder; some of their games were originally user-inspired ideas, so perhaps they are more accustomed to taking an idea and running with it.
I'm just saying that the hardware has special capabilities that don't necessarily exist on PC.
There's no API that exposes a fast memory architecture. It's just a property of the system that doesn't typically exist on PCs.
In short, APIs aren't all they are cracked up to be. Most game programmers will exploit the unique characteristics of the system to make a certain optimization.
PC porting from Xbox is then taking those specific cases and extrapolating to the general case of the PC:
1) Support a much wider range of graphics cards (which may have buggy drivers that don't conform to the spec, or special operating modes that you need to be aware of)
2) Support a wider range of audio cards (everything from barebones onboard audio to whatever the latest cards Creative has put out)
3) Support a wide range of input - how does the game feel when played with a keyboard and mouse? Or when played with any of 3 dozen or more PC gamepads and joysticks?
4) Support PC networking, including things like NAT
5) Support mods
6) Support PC-isms like multiple users, playing nice when the machine is hibernated or goes to sleep or when the user locks the desktop
7) Build an installer
And more.
As you can see, going from a fixed platform to an open one is far from a trivial task.
The Xbox GPU was a custom NVIDIA chip which resembled a GeForce, but had an awesomely fast memory architecture (as well as a few features that weren't available on PC GPUs for quite a while).
Additionally, using the Xbox means you are dealing with console-isms - a controller, memory cards, etc... So a PC port needs to account for all of that.
Also, the Xbox used a custom NVIDIA sound chip. Have to redo all of that for PC.
Xbox networking is all through Live, which is a layer on top of sockets. So networking needs a lot of work as well.
I disagree this is a mistake. Most games don't make use of this feature because for the user, there is little feedback regarding what is going on. How exactly do I push the face button half-way down? 1/4 way? All the way? I can't, really. I can just mash it with my thumb, and hope that I am getting what I want.
Windows Installations definitely don't have an artificial lifespan. I have one Windows XP installation still going strong after 3.5 years of heavy use as a software developer. A second work installation for 1.5 years (it's a newer machine) and a home installation for 2 years without a hitch. What is the secret? Don't install things!
You don't need that random app that someone said was cool. You sure don't need that cool new screensaver, or that "rad" game.
All you need to install are driver updates (when your apps require them or heaven forbid, a security hole is released) and security patches.
Also some other tips I have used:
Stay away from shell extensions, as they often slow down Explorer. Turn off desktop wallpaper. Why are you looking at the desktop anyways? You are supposed to be using the computer for something useful! Set page file min and max to the same size IMMEDIATELY after booting Windows for the first time. Why? So you can keep it from getting fragmented.
It saves your tabs state (and things you have typed into forms). Very useful for when your browser or computer crashes, you accidentally close a tab with important information, or even accidentally close a whole window.
Also, you can restart the web browser for installing extensions (or to save memory when playing a game) and not worry about getting your state back.
I wonder how that is enforced. I suppose every merchant site has to submit source code and database schemas for review before being allowed to process payments?
Here's a hint; you are the ghetto stepchild. Think about the marketshare Apple has compared to Windows. Now think about what that means in terms of development effort and ROI.
How does sniffing 443 work? I thought the point of HTTPS/SSL was to give security to the connection?
China has a right to enforce its laws. You may not agree with the law, but China is a sovereign nation and has the right to make and enforce laws. An external corporation has to abide by them or pay the price.
I have wondered if ATT is a victim of their own success with 3G congestion. They largely sold the iPhone on the merits of all the cool data features and these users consume a lot of wireless data. 3G networks aren't designed to handle many concurrent heavy users. So I wonder, if Verizon gets the iPhone and folks make the switch, will the situation just naturally improve for ATT? Will Verizon suddenly feel the pain of all those heavy users?
Why does every browser have Mozilla in the User Agent string?
That is a good article which explains how what he refers to as Apps Hungarian has an actual purpose.
However, I am left wondering why not just define new types so that the compiler will tell if you create a bug?
For example:
class UnsafeString;
class SafeString;
And then you define your APIs in terms of the safe or unsafe strings, so that the user must use the conversion functions to go from one to the other.
void PrintStringToHTML(SafeString arg1);
In his other example, define coordinates for the layout versus the window as separate types, so that they can't be confused.
Since you will be coming right out of school, you may not have much practical experience when it comes time to see a full-time job. This is to be expected, but there are a couple of things you can do to make yourself stand out:
1) Seek a good internship/coop that allows you to develop practical experience. Many of these are one or two-semester gigs (or one or two summers). When I was in school, I had a 3.5 yr coop which was basically a long-term relationship with a local employer. That was hugely valuable, as by the time I graduated I had a ton of experience (even leading small projects). I would have gotten a full-time offer had that department not been closed down shortly after I left.
2) Work on some interesting hobby projects. School projects are often an interesting spring board, but consider ways to apply what you are learning to scratching some itch.
Personally, I don't give the candidate's school a whole lot of weight. Maybe it gets my attention when looking at a sea of applicants, but I consider each applicant on his/her own merit as demonstrated by the resume, cover letter, and other submitted materials. The most crucial aspect of the whole process is actually the on-site interview. Everything else is just a screening mechanism.
What I look for most is what Joel Spolsky from Joel on Software refers to as "Smart and Gets Things Done." For me, that means someone who is interested in programming because they think it's cool and provides an outlet for creative problem solving, and someone who has demonstrated an ability to tackle problems in the past.
Therefore, I would recommend that you choose a college based on the total experience you will get. Consider everything college offers: learning about a lot of topics, meeting new people, exposure to new ideas, a new level of freedom and independence, moving to a new place to be exposed to new culture, etc... Many of the classes that had the most impact on me and were most memorable were far outside the CS curriculum. Consider what opportunities are available there with each school. Think about what it will be like to live in each of the cities the colleges are located in. Think about what there could be to explore and discover there. Choose the school that is best for you on all of those fronts - don't limit yourself to just choosing a CS program.
In a few years where you got your CS degree won't matter so much, but the memories and experiences you got while in school will last your entire lifetime. Many of those experience will be unrelated to what happened in the classroom.
What happens when a function parameter is renamed?
In your example:
[array insertObject:foo atIndex:bar];
If someone changed atIndex to insertionIndex, I don't know if I want to go and change all the references to the old name.
Does ObjectiveC handle this?
On the one hand I can see it being very annoying, but then I can also see how it would force you to update code that may be broken. For example if atIndex became afterIndex, a C-style argument passing scheme would allow a bug to be introduced.
Your understanding is incorrect.
The 360 can only play WMV and MPEG2 - it can't just play any of the files playable on the host PC.
When an American company does business in another country, why shouldn't they obey the laws of that country?
That is, why would the US Congress get to say "ignore these laws that we don't like in China"
It's not our place to impose our views on another country!
Check out Days Of Wonder; some of their games were originally user-inspired ideas, so perhaps they are more accustomed to taking an idea and running with it.
...Failed MMORPG?
This franchise has yet to succeed in the media it has been developed.
A guy I know is fond of asking, if the rovers have lasted this long, aren't they over engineered?
That is, the engineers obviously went way beyond the spec if the things are still working 10x longer than they should have.
The patents were going to invalidated, so why did they pay up? There was nothing to pay for.
What is blogging all about? Whining, Soapboxing, Browbeating. None of these activities are particularly useful, especially on the company dime.
It's Chinese law. Who are we to judge their laws?
It is certainly not Yahoo's place to dispute it.
All the descriptions I have read puzzle me. Why exactly would I use one of these ALM products? What do they do?
No, I'm not saying they fucked anything up.
I'm just saying that the hardware has special capabilities that don't necessarily exist on PC.
There's no API that exposes a fast memory architecture. It's just a property of the system that doesn't typically exist on PCs.
In short, APIs aren't all they are cracked up to be. Most game programmers will exploit the unique characteristics of the system to make a certain optimization.
PC porting from Xbox is then taking those specific cases and extrapolating to the general case of the PC:
1) Support a much wider range of graphics cards (which may have buggy drivers that don't conform to the spec, or special operating modes that you need to be aware of)
2) Support a wider range of audio cards (everything from barebones onboard audio to whatever the latest cards Creative has put out)
3) Support a wide range of input - how does the game feel when played with a keyboard and mouse? Or when played with any of 3 dozen or more PC gamepads and joysticks?
4) Support PC networking, including things like NAT
5) Support mods
6) Support PC-isms like multiple users, playing nice when the machine is hibernated or goes to sleep or when the user locks the desktop
7) Build an installer
And more.
As you can see, going from a fixed platform to an open one is far from a trivial task.
You are gravely mistaken.
The Xbox GPU was a custom NVIDIA chip which resembled a GeForce, but had an awesomely fast memory architecture (as well as a few features that weren't available on PC GPUs for quite a while).
Additionally, using the Xbox means you are dealing with console-isms - a controller, memory cards, etc... So a PC port needs to account for all of that.
Also, the Xbox used a custom NVIDIA sound chip. Have to redo all of that for PC.
Xbox networking is all through Live, which is a layer on top of sockets. So networking needs a lot of work as well.
OMG this totally fixed a dead machine I have here.
Thanks for the tip!
It has been used in racing games, and IMO it didn't work.
Read my post. The user doesn't have enough control over mashing the face button to be able to execute anything more than 3 rough options
Not on (thumb off button)
Somewhat on (thumb resting idle on button, or thumb slightly pressing button)
Mostly on (thumb pressing button in)
I say mostly on because sometimes buttons stick or you aren't pressing squarely down, and so the button registers something like 90%.
Some controllers had 8 bit resolution - can you really say any user can distinguish between the 256 levels of pressure? What use is it?
Mistake #11: No pressure sensitive face buttons
I disagree this is a mistake. Most games don't make use of this feature because for the user, there is little feedback regarding what is going on. How exactly do I push the face button half-way down? 1/4 way? All the way? I can't, really. I can just mash it with my thumb, and hope that I am getting what I want.
Windows Installations definitely don't have an artificial lifespan. I have one Windows XP installation still going strong after 3.5 years of heavy use as a software developer. A second work installation for 1.5 years (it's a newer machine) and a home installation for 2 years without a hitch. What is the secret? Don't install things!
You don't need that random app that someone said was cool. You sure don't need that cool new screensaver, or that "rad" game.
All you need to install are driver updates (when your apps require them or heaven forbid, a security hole is released) and security patches.
Also some other tips I have used:
Stay away from shell extensions, as they often slow down Explorer.
Turn off desktop wallpaper. Why are you looking at the desktop anyways? You are supposed to be using the computer for something useful!
Set page file min and max to the same size IMMEDIATELY after booting Windows for the first time. Why? So you can keep it from getting fragmented.
Can't believe more people don't use this one.
It saves your tabs state (and things you have typed into forms). Very useful for when your browser or computer crashes, you accidentally close a tab with important information, or even accidentally close a whole window.
Also, you can restart the web browser for installing extensions (or to save memory when playing a game) and not worry about getting your state back.
This extension is a must!!
I wonder how that is enforced. I suppose every merchant site has to submit source code and database schemas for review before being allowed to process payments?
Here's a hint; you are the ghetto stepchild. Think about the marketshare Apple has compared to Windows. Now think about what that means in terms of development effort and ROI.