Because we apparently are entering into the New Roman Times. Surely any other font would fail to capture the feel of the new empire in the same way. For more information about the new empire, please see New American Century, which uses Times New Roman extensively.
I tried voice command with the Starfleet Academy game, and decided to revert to keyboard when it decided "one half impulse" = "shields down" repeatedly. Or "fire photons" = "all stop". Perhaps the recognition is better today, but that combined with my cell phone's continual "please repeat the name" on voice dial just don't give me a lot of faith in voice recognition.
I did get good recognition rates out of the Dragon Dictate program, or whatever it was called. I suspect stress changes voices enough to make it a harder challenge to recognize the same command when it was recorded originally in an unstressed environment.
I would think the lack of online gambling is a good thing: It used to be people could destroy their savings once a quarter on Vegas trips but now they can dump money down the drain at will thanks to the Internet gambling. I personally wouldn't trust these sites (which are not regulated like Vegas casio's are: not that I trust *them* that much) one bit. Online casino losing money today? Guess it's time to stop dealing aces to the players...
I can understand concern about a project growing beyond its root. I agree completely that if the database turns out to be something useful, then *at that point* (the point other users become involved) it should be expanded and set into at least a third normal form implementation. This is the point that concurrency issues, data lifespans, response time requirements and other hard questions have to be answered.
Having worked with businesses for the last 20 years as a programmer, the only things I can guarantee are: a) change and b) change to your changes.
I see a lot of people get hung up (analysis paralysis) trying to "do the right thing" in even the most throw away projects. My experience has shown that it is far better to throw a prototype or working prototype together in a day or two, and then use it as a launch board for discussion of the real project.
If someone wants a throw away (prototype) database, I would probably build it to third normal, just because it is a habit. It's pretty clear the poster has no idea what third normal is, or how to implement it. Because of that, I also assume many of the other requirements are not covered either. In that case, I wouldn't sweat making a throwaway, since the chances of the project proceeding are probably less than one in four anyway.
If I have taken anything away from working in the business environment for those two decades, it is the emphermal nature of business direction. On the other hand, other fields probably have more stable requirements, and would make the usability of throwaway projects much lower. Ironically, the very "expressing the truth" nature of fifth normal form makes it impractical in the real implementations, because you don't know the truth. (Nor can SQL handle the truth, which is why I find D4 facinating: it can). I have watched people spend weeks gathering requirements for a database, and have softy chuckled knowing that the "prototype" at the end of the week will have *more* changes to fragile structures than my two day bang out job, because the guy who spent a week interviewing people about requirements is so sure he "knows the truth" that he expresses it in a fully formed, rigid structure. My structures are poorly linked, fluid, and after being rejected, are much easier to mallet into the "true truth" than the tightly linked, fully constructed "false truth".
While I agree with a lot of what you are saying, it sounds like this guy is interested in making use of a card file, not a database. I'm a huge proponent of proper relational design (and keep an close eye on the D4 language's progress, since it corrects several flaws in the SQL language). However, there is a huge population of people who basically need an overblown card file to store some facts. Hypercard had an excellent system for doing so, and I find it odd that there are no semistructured databases similar to that available.
Asking yourself "what is truth" makes sense when you are setting relations in stone. I suspect this guy could get away with a semistructured database that dodges the bullet with flexibility and simplicity. Using a relational database to file recipes is like using a exotic sports car to drive across the street. Perhaps walking makes sense, sometimes.
I also take issue (ah the designer gets loose) that song title had better not be an attribute of a track because of covers. That statement is incomplete. Song titles can be the same, even if they are not covers, so the song title is nothing but a decoration as far as relationships. Even considering it brings peril. However, I doubt any user would be happy if they couldn't *search* upon titles. This common reasoning flaw is why I'm a huge proponent of non significant primary keys: often what appears to be useful in relationships turns out to be unreliable in the longer term.
Also, most MP3 databases only handle tracks. While attempting to handle songs, opus, introductions, etc, it would be best to handle those as a layer on top of the track table: that makes no changes to the track table, howevever. In that light, we have multiple truths, and they can be simultaniously expressed. Similar with albums: they are collections of CDs, meaning two layer, "CD" and "Album".
In regards to artist being an attribute of a track or song, if song is a collection of one or more tracks, I would be careful about not giving the flexability to store it at the track level: if the three sopranos sang three parts of a song, and they broke it into three tracks, I would lean towards relating tracks and artists, and having songs pull the aggrigate artist list from all tracks involved.
Amen. I have been a consultant in this industry since I was sixteen years old. Not because I was trying to cash in, but because this is what I'm good at. I have seen no diminishing demand for my services because I have a proven track record. I even have outsourced to India some work I didn't find interesting - I don't find it a threat, but a relief to be able to take the boring, redundent and less creative aspects and focus instead on the process of design, architecture and simply working with the customer to get a job done right. (Of course, after I get the code back, I generally then add it to my code generation libraries, so I don't outsource often, just when a large chunk of code needs to be hammered out that isn't of great interest to me.)
I would agree to a point that Java programmers could learn C++, but being a small consultant makes it hard to choose someone without my specific requirements. Really, my comment was not to say that C++ is a requirement I would always have. If I was looking for architect/designer level people, exact languages are much less critical than good analytical skills. The benefits of proper architecture can prevent the need for much low level optimization.
On the other hand, if it's my C++ guy who was hired to rewrite slow modules (say, the scheduler module, which has to crunch many alternatives in real time) when algorithm alone fails to peform, then I need someone who can make C++ sing, not just run the algorithm.
Actually, I would disagree. C++ comes with a lot of baggage that is complex to understand, and pointers cause a lot of danger that higher level languages don't have. You can screw up Lips, oCaml, Java, C#, VB.NET (all of which carry some complex baggage), but generally you can't bomb random memory addresses without deliberate effort. I prefer to restrict C++ to time critical areas, which occur less and less frequently, thanks to just in time compiling and efficent virtual machines. However, when I have C++ requirements, I surely don't want someone who thinks C++ is as easy as a high level language working on that part (well, unless they believe that because they rock with C++...)
Yes, C++ comes with libraries that mitigate the worse of C's bare metal mindset, but you have to know the language pretty well to know they exist and how to properly apply them.
While I totally agree that someone with a broad background can pick up C++ in time, if that is a *specific requirement* of the tasks the programmer will be handling, I would not take a VB programmer for the task.
Also, I would take a C++ programmer of a VB project. Why? Because the C++ programmer has a lower level understanding that can be applied to the "kind and safe" VB environment without breaking code. On the other hand, a VB only programmer is usually unaware of the complexities of pointers and memory management. Additionally, most VB programmers use Collections and Arrays as the be all and end all of data structures. Most C++ programmers have handled B-Trees and other modest data structures.
Of course, this paints with a broad brush, but if you want a job programming C++, surely these are issues that must be addressed in your resume. I am a small consultant with a small team of programmers. I don't have time to train a VB programmer to write C++, unfortunately. (I love teaching though... just can't afford to pay people to do it for them.)
As I pointed out on the other side of this thread... I *did* spell check this. With kedit. It will accept either spelling, although it is pretty clear inflexible is correct.
On the other hand, I have to appreciate the meta irony... after all, I did say I'm a poor speller. Now I have proved it. As a bonus, I know I need a better program to type my posts into...
You know what the funny thing is? I spell check my/. posts via kedit, and it *accepts* "inflexable" and "inflexible". I guess I better hire you to proofread my posts, since kedit spells as well as the average open source programmer.
is for the C+@ language. I program in some pretty esoteric languages as a hobby (yes, I need a life, deal with it)... and I have been challenged on some of the names before. I wouldn't *list* it on a resume personally though...
Having been responsible for the interview process, I have to agree with 95% of Joel's comments. I also used e-mail as the principal method of communication, because it allowed me to drag and drop organize an otherwise unruly pile of paper.
While I never saw an application that said "hire me d00d" from Yahoo, as he seems to be quoting, I saw some pretty awful stuff. The fact of the matter is most jobs will generate far more interest in the position than it is possible to interview through, so a good resume is your only hope of getting to the phone interview in my book.
In my experience, 50% of all applications (or more) are either: a) Unqualified: why are you wasting your time? If I ask for C++ experience, your VB skills are probably not going to help debug the memory leaks you create. b) Illiterate: I'm a poor speller too, but I found "spell check" and a proofreader, why can't you? c) Inflexable: my favorite category. "I work from home in California, and telecommute" isn't going to fill position in southern Arizona. I was shocked by the quantity of these in 1999, heyday of stupid applications.
I do however make some allowances for international applicants. Some of my best finds were people with 80% command of English, but 100% command of C++, architecture and design. I'm willing to work with a language barrier, so I thought he was a bit agressive in that area.
I have to agree. I used to be "hard core" about games: give me a challenge for my dollar. Now that I can sneak a half hour in on alternating days, if that, I just don't have time to perfect my skills.
As an example of a game that rocked on the difficulty scale: Ratchet and Clank 2. If you ever bump into a difficult patch, go buy a new weapon or upgrade one of the existing ones, and things get easier. If you are rocking, you can keep going, if you are not rocking, the game hands you powerful toys to bring things back into alignment.
Contrast that with Jak II from the same developers. All I can say is "gah, who decided they hate me"... stupid traffic, suiciding AIs to rescue...
So what if it is less than selfless? With the American (and apparently from more recent data Europe is starting this tend) weights going out of control, anything that helps someone get started on weight loss is a good thing. The trick to weight loss is finding things you can live with: starving yourself only causes short term gains with long term rebounds that push you into even heavier territory. I personally dropped 25 pounds and went from a 28 to 23% bodyfat by:
#1 Finding exercise I would do. In my case, an indoor rockclimbing gym provides my workout, and a good puzzle for the mind as well. BTW, exercise itself doesn't cause weight loss, but will help you keep weight off and muscle helps you burn more calories even when at rest.
#2 Finding replacement foods. This means examining everything you eat. Replace the fast food hamburger with a 6" sub to start. Find a place with a salad bar. Get a "light" cooking book. Some of the stuff is horrible, but you will find a dish here, a dish there, that works.
#3 Change your routines. If you have a habit of snacking to give yourself a break, find something else to do during breaktime. I personally have a gameboy with puzzle games on it that can be played in 5-10 minutes. Makes for a great break without attacking the snack machine.
I applaud anyone who can figure a way to make a profit while bringing waistlines back under control. Weight induced illness is more likely than cancer to strike you if you get heavy, and can cause diabetic conditions, heart conditions and generally won't get you the girl/guy of your dreams. If playing DDR can get you healthy, high end DDR pads are cheaper than bypass surgery...
Well, it depends on how it was handled. If one wanted to insist upon case sensitivity with meaning, the compiler would enforce it by issuing a warning or error if the user had incorrect case for a CONSTANT, Method or variable. This would allow current practices to be followed, and in fact would enforce them. In that case, any editor would work, but something with power assist to correct errors would be helpful.
However, I seriously wonder why we continue to work in languages with complex topology with a text only interface. There have been a few half hearted attempts to develop alternative interfaces to programming, but they tend to dumb down while not really providing "power assist". Some new IDE's can do code folding, structure templating and such, but still really only provide a textual interface.
Now, it's pretty clear that at the lowest level, text is going to be where it is at... but I can also envision an editor where typing "if" doesn't just type { } else { } for me, but actually made them uneditable framework objects.
Take this code:
for (int i = 0; i < splitKey.Length; i++) {
if(i == 0)//Root key
keyOpened = OpenBaseKey(splitKey[i]);
else
keyOpened = OpenSubKey(splitKey[i]);
if (keyOpened == null)//Failed to open
break; }
When I type for, the frame should be built. When I typed i, the lack of a matching variable in scope should be detected, and perhaps int type guess, letting me change it (but not omit it!). The conditional should check that splitKey exists in scope, and.Length should be provided as an option by my editor, and nonexistant members should be disallowed. Incrementing could be infered, and togglable.
Likewise, the if should build boxes where I can insert the actual conditional, and the action on each path. If I don't provide an else, it should be a phantom area where I can at any time provide it, but otherwise acts as if it didn't exist.
Frankly, an editor like that would make syntax errors impossible to write, because the code would validate on the fly, and prevent an attempt to build until it was corrected (using in scope variables, structure correct, etc). If you do this, you could then automate refactoring, because the editor would "understand" the code. I could invert a conditional, and it would become i != 0, while the two exeuction paths would swap places. I wouldn't be able to accidently delete a brace or parentheses. Arrays would be accessed via [], because I wouldn't be able to type splitKey() without it be corrected. Once typed, the [] would be inaccessable to normal edit commands.
The trick would be making it do all this and still allowing fluid touch typing to function. I can do a lot of this in emacs, but it doesn't protect the structures it auto-creates for me.
Then you look at structures like objects, and wonder why I can type inside created frameworks, or I can demolish them with the editor. The framework should remain until I right click that part of the object tree and select delete... not when I backspace too far.
Actually, I can see how that argument could be supported, at least in part. However, I suspect what would be a more effective mechanism is simultanious worldwide release, as was done with Matrix Revolutioins. It has the dual benefit of allowing you to charge the local going rate for at least the initial few weeks... and you can prevent people from realizing that your product is substandard and warning off the "delayed release" markets from purchasing it.
If your product is good, it should drive simultanious worldwide "instant gratification" purchases in local stores. If it is bad, at least you got the inital sell-through. This does come with much higher risk if your product is realy bad however, due to extra production costs.
If the cost of shipping around the world doesn't offset the price charged, then I see no reason why any organization should be allowed to demand a price change. Surely the cost of shipping that CD isn't small. Under the "globalization" of the economy, if you can't produce it locally for a reasonable price, people will import it.
Why is it that only corporations are supposed to benefit from globalization?
Case sensitivity is a relic of the long gone day when calling upper() was considered an extravagance by the designers of C. Being a low level language, many of the functions of the original AT&T version of C were as stupid as possible while still achieving the goals. Null termination of strings, (actually the entire string function set), and bare pointer arithmetic are other examples. It was considered "super assembly for OS writing".
Being such a bare bones, close to the metal language, case sensitivity made sense. However, since C was case sensitive, this sensitivity was used to partition CONSTANTS from variables and functions. Later in C++ we see Methods (initial cap) vs variableName (initial lower) became standard.
Many later languages modeled at least partially upon C, so it isn't surprising that they retained that sensitivity. However, at this point is is absurd: if we really want to differentiate object types, color, size and font and other options are available in a modern editor. However, if we really-really want case sensitive Methods, variables and CONSTANTS, why not have the editor enforce these rules? I do find the case rules make for more readable code, but I can in many languages write incorrect case and it will run, which defeats the purpose (it simply gives the obfuscated code writers one more weapon against us...)
Thank you for confirming that you are actually a troll that I got suckered by. I'm a complete idiot because I refuse to frequent crack sites? I wasn't "burned" by having my purchased software become inaccessable because I updated my hardware?
I didn't have the time to reverse engineer their protection schemes just to access some B grade games. I didn't say I *knew* there were in the registry, just that they were somewhere the new install didn't find. Do you work for Real? You seem to have the same tone as the techs that gave me hell back then...
RealArcade apparently stored the keys in the registry, or somewhere *not* accessable to my new system. And actually, Real's TOS said nothing about locking down to a processor, hard drive or anything else... but instead to the *subscriber*. Since the rest of my Real subscription transfered to my new machine, I see no reason why content which I was still licensed for to my subscription would not be available without repurchase.
However, you made the point I was trying to make: I will never again trust a "subscription" to a product that involves keys that are provided by the vendor, because they hold the keys to the kingdom, not the user. I do take great offense at the "utopian free-software" comment: where did I say I wanted anything for free? Perhaps this was a knee jerk "I'm on slashdot, this guy must not pay for software" type comment, but I run a consulting business and am meticulious about licensing because I license the software *I* develop and understand why piracy is bad. That's why I was offended by the Real support telling me I must be a software pirate if my keys were failing to work, instead of checking why my subscription worked for audio, but not for game content.
Is going to a store vital for me: no. However, I am exceptionally leery about buying any product over the internet that does not come with packaging, but does include some form of protection. This is because I have been burned thanks to RealArcade... I participated in the launch of RealArcade, and brought down about eight games from them. None of them are great, but a few were mildly amusing, and were perfect for my slightly aging machine that I was using at the time.
Fast forward about six months: I get a new computer to replace the aging machine. I transfer the hard drive as a slave to my new computer, and a few weekends in, decided to pull up one of my old games. The game failed to load. I pull down a new copy (onto the new hard drive) and of course it is still in demo mode. So I call Real and ask them to help me get the games running on my new computer... figuring that since I have my old drive in the new machine, I can either relink the keys, or get new ones for the demos I downloaded.
Fast forward a few days of dealing with clueless technical support, with the end result being that I have been told that I can't have new keys in various manners. Some simply said it was impossible to transfer the games to a new computers. Others accused me of being a pirate in no uncertain terms, despite my removal of the old hard drive from the old hardware. My entire real account was cancelled on my behalf (not just the arcade portion, but the premium content for Read Audio as well) and yet they billed me for 3 months subsequent to the cancellation.
In the long run, it just wasn't worth the battle to try to get my purchased content back. I did have my credit card company back out the entire Real subscription (which I had only had for three months prior to RealArcade) as well as the subsequent charges after the cancellation that were incorrectly applied.
So, do I find the store experience important? No in the least. However, physical media is critical to me, simply because it lessons the possibility of not being able to use my purchase due to tech support stupidity.
That said, I have had problems even with my physical purchases. I purchased a copy of The Operation Art of War, Elite Edition. Turns out that it is impossible to run this on any NT based OS, period. So I tried it on my old windows 98 box, but it turns out the old copy protection was incompatible with my drive. Techsupport refused to give any helpful suggestions, and refused to return the product. Of course, the store refuses to return opened product.
I still have the game (and a few others in similar state) that are not games that require any technology to run (how hard are hexes and die rolls?), but have crippling technology attached which prevent me from revisiting them, or in some cases, ever playing them at all. Now, some companies are choosing to do this deliberately: I have refused to update my Macromedia products, because the new versions protection. Any product with software keys that have to come from a vendor is going to be useless when that vendor goes away, and none of the vendors I have talked to have a plan for dealing with buyouts or failure.
Cheap joysticks held up about a week. Heavy joysticks maybe three or four weeks. Eventually, we had to consider them consumables of negligable value.
We had a full throttle, foot pedal, flightstick (CH equipment, very good quality). They were all destroyed by the "mature flight sim fans" in under a month. The foot pedals were first to go in a fit of stomping that cracked the bolts holding the pedals on. The stick was next when someone lost a dogfight and ripped the cord out of the base. The throttle held up surprising well, despite the "this must go to 110%" slams it received, finally dying when someone snapped the fastlook dpad off.
Because we apparently are entering into the New Roman Times. Surely any other font would fail to capture the feel of the new empire in the same way. For more information about the new empire, please see New American Century, which uses Times New Roman extensively.
I tried voice command with the Starfleet Academy game, and decided to revert to keyboard when it decided "one half impulse" = "shields down" repeatedly. Or "fire photons" = "all stop". Perhaps the recognition is better today, but that combined with my cell phone's continual "please repeat the name" on voice dial just don't give me a lot of faith in voice recognition.
I did get good recognition rates out of the Dragon Dictate program, or whatever it was called. I suspect stress changes voices enough to make it a harder challenge to recognize the same command when it was recorded originally in an unstressed environment.
I would think the lack of online gambling is a good thing: It used to be people could destroy their savings once a quarter on Vegas trips but now they can dump money down the drain at will thanks to the Internet gambling. I personally wouldn't trust these sites (which are not regulated like Vegas casio's are: not that I trust *them* that much) one bit. Online casino losing money today? Guess it's time to stop dealing aces to the players...
I can understand concern about a project growing beyond its root. I agree completely that if the database turns out to be something useful, then *at that point* (the point other users become involved) it should be expanded and set into at least a third normal form implementation. This is the point that concurrency issues, data lifespans, response time requirements and other hard questions have to be answered.
Having worked with businesses for the last 20 years as a programmer, the only things I can guarantee are: a) change and b) change to your changes.
I see a lot of people get hung up (analysis paralysis) trying to "do the right thing" in even the most throw away projects. My experience has shown that it is far better to throw a prototype or working prototype together in a day or two, and then use it as a launch board for discussion of the real project.
If someone wants a throw away (prototype) database, I would probably build it to third normal, just because it is a habit. It's pretty clear the poster has no idea what third normal is, or how to implement it. Because of that, I also assume many of the other requirements are not covered either. In that case, I wouldn't sweat making a throwaway, since the chances of the project proceeding are probably less than one in four anyway.
If I have taken anything away from working in the business environment for those two decades, it is the emphermal nature of business direction. On the other hand, other fields probably have more stable requirements, and would make the usability of throwaway projects much lower. Ironically, the very "expressing the truth" nature of fifth normal form makes it impractical in the real implementations, because you don't know the truth. (Nor can SQL handle the truth, which is why I find D4 facinating: it can). I have watched people spend weeks gathering requirements for a database, and have softy chuckled knowing that the "prototype" at the end of the week will have *more* changes to fragile structures than my two day bang out job, because the guy who spent a week interviewing people about requirements is so sure he "knows the truth" that he expresses it in a fully formed, rigid structure. My structures are poorly linked, fluid, and after being rejected, are much easier to mallet into the "true truth" than the tightly linked, fully constructed "false truth".
While I agree with a lot of what you are saying, it sounds like this guy is interested in making use of a card file, not a database. I'm a huge proponent of proper relational design (and keep an close eye on the D4 language's progress, since it corrects several flaws in the SQL language). However, there is a huge population of people who basically need an overblown card file to store some facts. Hypercard had an excellent system for doing so, and I find it odd that there are no semistructured databases similar to that available.
Asking yourself "what is truth" makes sense when you are setting relations in stone. I suspect this guy could get away with a semistructured database that dodges the bullet with flexibility and simplicity. Using a relational database to file recipes is like using a exotic sports car to drive across the street. Perhaps walking makes sense, sometimes.
I also take issue (ah the designer gets loose) that song title had better not be an attribute of a track because of covers. That statement is incomplete. Song titles can be the same, even if they are not covers, so the song title is nothing but a decoration as far as relationships. Even considering it brings peril. However, I doubt any user would be happy if they couldn't *search* upon titles. This common reasoning flaw is why I'm a huge proponent of non significant primary keys: often what appears to be useful in relationships turns out to be unreliable in the longer term.
Also, most MP3 databases only handle tracks. While attempting to handle songs, opus, introductions, etc, it would be best to handle those as a layer on top of the track table: that makes no changes to the track table, howevever. In that light, we have multiple truths, and they can be simultaniously expressed. Similar with albums: they are collections of CDs, meaning two layer, "CD" and "Album".
In regards to artist being an attribute of a track or song, if song is a collection of one or more tracks, I would be careful about not giving the flexability to store it at the track level: if the three sopranos sang three parts of a song, and they broke it into three tracks, I would lean towards relating tracks and artists, and having songs pull the aggrigate artist list from all tracks involved.
Down designer, down....
Amen. I have been a consultant in this industry since I was sixteen years old. Not because I was trying to cash in, but because this is what I'm good at. I have seen no diminishing demand for my services because I have a proven track record. I even have outsourced to India some work I didn't find interesting - I don't find it a threat, but a relief to be able to take the boring, redundent and less creative aspects and focus instead on the process of design, architecture and simply working with the customer to get a job done right. (Of course, after I get the code back, I generally then add it to my code generation libraries, so I don't outsource often, just when a large chunk of code needs to be hammered out that isn't of great interest to me.)
I would agree to a point that Java programmers could learn C++, but being a small consultant makes it hard to choose someone without my specific requirements. Really, my comment was not to say that C++ is a requirement I would always have. If I was looking for architect/designer level people, exact languages are much less critical than good analytical skills. The benefits of proper architecture can prevent the need for much low level optimization.
On the other hand, if it's my C++ guy who was hired to rewrite slow modules (say, the scheduler module, which has to crunch many alternatives in real time) when algorithm alone fails to peform, then I need someone who can make C++ sing, not just run the algorithm.
Actually, I would disagree. C++ comes with a lot of baggage that is complex to understand, and pointers cause a lot of danger that higher level languages don't have. You can screw up Lips, oCaml, Java, C#, VB.NET (all of which carry some complex baggage), but generally you can't bomb random memory addresses without deliberate effort. I prefer to restrict C++ to time critical areas, which occur less and less frequently, thanks to just in time compiling and efficent virtual machines. However, when I have C++ requirements, I surely don't want someone who thinks C++ is as easy as a high level language working on that part (well, unless they believe that because they rock with C++...)
Yes, C++ comes with libraries that mitigate the worse of C's bare metal mindset, but you have to know the language pretty well to know they exist and how to properly apply them.
While I totally agree that someone with a broad background can pick up C++ in time, if that is a *specific requirement* of the tasks the programmer will be handling, I would not take a VB programmer for the task.
Also, I would take a C++ programmer of a VB project. Why? Because the C++ programmer has a lower level understanding that can be applied to the "kind and safe" VB environment without breaking code. On the other hand, a VB only programmer is usually unaware of the complexities of pointers and memory management. Additionally, most VB programmers use Collections and Arrays as the be all and end all of data structures. Most C++ programmers have handled B-Trees and other modest data structures.
Of course, this paints with a broad brush, but if you want a job programming C++, surely these are issues that must be addressed in your resume. I am a small consultant with a small team of programmers. I don't have time to train a VB programmer to write C++, unfortunately. (I love teaching though... just can't afford to pay people to do it for them.)
As I pointed out on the other side of this thread... I *did* spell check this. With kedit. It will accept either spelling, although it is pretty clear inflexible is correct.
On the other hand, I have to appreciate the meta irony... after all, I did say I'm a poor speller. Now I have proved it. As a bonus, I know I need a better program to type my posts into...
You know what the funny thing is? I spell check my /. posts via kedit, and it *accepts* "inflexable" and "inflexible". I guess I better hire you to proofread my posts, since kedit spells as well as the average open source programmer.
Don't discount goofy names out of hand:
2 B@
http://wombat.doc.ic.ac.uk/foldoc/foldoc.cgi?C%
is for the C+@ language. I program in some pretty esoteric languages as a hobby (yes, I need a life, deal with it)... and I have been challenged on some of the names before. I wouldn't *list* it on a resume personally though...
Having been responsible for the interview process, I have to agree with 95% of Joel's comments. I also used e-mail as the principal method of communication, because it allowed me to drag and drop organize an otherwise unruly pile of paper.
While I never saw an application that said "hire me d00d" from Yahoo, as he seems to be quoting, I saw some pretty awful stuff. The fact of the matter is most jobs will generate far more interest in the position than it is possible to interview through, so a good resume is your only hope of getting to the phone interview in my book.
In my experience, 50% of all applications (or more) are either:
a) Unqualified: why are you wasting your time? If I ask for C++ experience, your VB skills are probably not going to help debug the memory leaks you create.
b) Illiterate: I'm a poor speller too, but I found "spell check" and a proofreader, why can't you?
c) Inflexable: my favorite category. "I work from home in California, and telecommute" isn't going to fill position in southern Arizona. I was shocked by the quantity of these in 1999, heyday of stupid applications.
I do however make some allowances for international applicants. Some of my best finds were people with 80% command of English, but 100% command of C++, architecture and design. I'm willing to work with a language barrier, so I thought he was a bit agressive in that area.
I have to agree. I used to be "hard core" about games: give me a challenge for my dollar. Now that I can sneak a half hour in on alternating days, if that, I just don't have time to perfect my skills.
... stupid traffic, suiciding AIs to rescue...
As an example of a game that rocked on the difficulty scale: Ratchet and Clank 2. If you ever bump into a difficult patch, go buy a new weapon or upgrade one of the existing ones, and things get easier. If you are rocking, you can keep going, if you are not rocking, the game hands you powerful toys to bring things back into alignment.
Contrast that with Jak II from the same developers. All I can say is "gah, who decided they hate me"
So what if it is less than selfless? With the American (and apparently from more recent data Europe is starting this tend) weights going out of control, anything that helps someone get started on weight loss is a good thing. The trick to weight loss is finding things you can live with: starving yourself only causes short term gains with long term rebounds that push you into even heavier territory. I personally dropped 25 pounds and went from a 28 to 23% bodyfat by:
#1 Finding exercise I would do. In my case, an indoor rockclimbing gym provides my workout, and a good puzzle for the mind as well. BTW, exercise itself doesn't cause weight loss, but will help you keep weight off and muscle helps you burn more calories even when at rest.
#2 Finding replacement foods. This means examining everything you eat. Replace the fast food hamburger with a 6" sub to start. Find a place with a salad bar. Get a "light" cooking book. Some of the stuff is horrible, but you will find a dish here, a dish there, that works.
#3 Change your routines. If you have a habit of snacking to give yourself a break, find something else to do during breaktime. I personally have a gameboy with puzzle games on it that can be played in 5-10 minutes. Makes for a great break without attacking the snack machine.
I applaud anyone who can figure a way to make a profit while bringing waistlines back under control. Weight induced illness is more likely than cancer to strike you if you get heavy, and can cause diabetic conditions, heart conditions and generally won't get you the girl/guy of your dreams. If playing DDR can get you healthy, high end DDR pads are cheaper than bypass surgery...
However, I seriously wonder why we continue to work in languages with complex topology with a text only interface. There have been a few half hearted attempts to develop alternative interfaces to programming, but they tend to dumb down while not really providing "power assist". Some new IDE's can do code folding, structure templating and such, but still really only provide a textual interface.
Now, it's pretty clear that at the lowest level, text is going to be where it is at... but I can also envision an editor where typing "if" doesn't just type { } else { } for me, but actually made them uneditable framework objects.
Take this code:
When I type for, the frame should be built. When I typed i, the lack of a matching variable in scope should be detected, and perhaps int type guess, letting me change it (but not omit it!). The conditional should check that splitKey exists in scope, and
Likewise, the if should build boxes where I can insert the actual conditional, and the action on each path. If I don't provide an else, it should be a phantom area where I can at any time provide it, but otherwise acts as if it didn't exist.
Frankly, an editor like that would make syntax errors impossible to write, because the code would validate on the fly, and prevent an attempt to build until it was corrected (using in scope variables, structure correct, etc). If you do this, you could then automate refactoring, because the editor would "understand" the code. I could invert a conditional, and it would become i != 0, while the two exeuction paths would swap places. I wouldn't be able to accidently delete a brace or parentheses. Arrays would be accessed via [], because I wouldn't be able to type splitKey() without it be corrected. Once typed, the [] would be inaccessable to normal edit commands.
The trick would be making it do all this and still allowing fluid touch typing to function. I can do a lot of this in emacs, but it doesn't protect the structures it auto-creates for me.
Then you look at structures like objects, and wonder why I can type inside created frameworks, or I can demolish them with the editor. The framework should remain until I right click that part of the object tree and select delete... not when I backspace too far.
Actually, I can see how that argument could be supported, at least in part. However, I suspect what would be a more effective mechanism is simultanious worldwide release, as was done with Matrix Revolutioins. It has the dual benefit of allowing you to charge the local going rate for at least the initial few weeks... and you can prevent people from realizing that your product is substandard and warning off the "delayed release" markets from purchasing it.
If your product is good, it should drive simultanious worldwide "instant gratification" purchases in local stores. If it is bad, at least you got the inital sell-through. This does come with much higher risk if your product is realy bad however, due to extra production costs.
If the cost of shipping around the world doesn't offset the price charged, then I see no reason why any organization should be allowed to demand a price change. Surely the cost of shipping that CD isn't small. Under the "globalization" of the economy, if you can't produce it locally for a reasonable price, people will import it.
Why is it that only corporations are supposed to benefit from globalization?
Case sensitivity is a relic of the long gone day when calling upper() was considered an extravagance by the designers of C. Being a low level language, many of the functions of the original AT&T version of C were as stupid as possible while still achieving the goals. Null termination of strings, (actually the entire string function set), and bare pointer arithmetic are other examples. It was considered "super assembly for OS writing".
Being such a bare bones, close to the metal language, case sensitivity made sense. However, since C was case sensitive, this sensitivity was used to partition CONSTANTS from variables and functions. Later in C++ we see Methods (initial cap) vs variableName (initial lower) became standard.
Many later languages modeled at least partially upon C, so it isn't surprising that they retained that sensitivity. However, at this point is is absurd: if we really want to differentiate object types, color, size and font and other options are available in a modern editor. However, if we really-really want case sensitive Methods, variables and CONSTANTS, why not have the editor enforce these rules? I do find the case rules make for more readable code, but I can in many languages write incorrect case and it will run, which defeats the purpose (it simply gives the obfuscated code writers one more weapon against us...)
nuf said.
Thank you for confirming that you are actually a troll that I got suckered by. I'm a complete idiot because I refuse to frequent crack sites? I wasn't "burned" by having my purchased software become inaccessable because I updated my hardware?
Right.
I didn't have the time to reverse engineer their protection schemes just to access some B grade games. I didn't say I *knew* there were in the registry, just that they were somewhere the new install didn't find. Do you work for Real? You seem to have the same tone as the techs that gave me hell back then...
RealArcade apparently stored the keys in the registry, or somewhere *not* accessable to my new system. And actually, Real's TOS said nothing about locking down to a processor, hard drive or anything else... but instead to the *subscriber*. Since the rest of my Real subscription transfered to my new machine, I see no reason why content which I was still licensed for to my subscription would not be available without repurchase.
However, you made the point I was trying to make: I will never again trust a "subscription" to a product that involves keys that are provided by the vendor, because they hold the keys to the kingdom, not the user. I do take great offense at the "utopian free-software" comment: where did I say I wanted anything for free? Perhaps this was a knee jerk "I'm on slashdot, this guy must not pay for software" type comment, but I run a consulting business and am meticulious about licensing because I license the software *I* develop and understand why piracy is bad. That's why I was offended by the Real support telling me I must be a software pirate if my keys were failing to work, instead of checking why my subscription worked for audio, but not for game content.
Is going to a store vital for me: no. However, I am exceptionally leery about buying any product over the internet that does not come with packaging, but does include some form of protection. This is because I have been burned thanks to RealArcade... I participated in the launch of RealArcade, and brought down about eight games from them. None of them are great, but a few were mildly amusing, and were perfect for my slightly aging machine that I was using at the time.
Fast forward about six months: I get a new computer to replace the aging machine. I transfer the hard drive as a slave to my new computer, and a few weekends in, decided to pull up one of my old games. The game failed to load. I pull down a new copy (onto the new hard drive) and of course it is still in demo mode. So I call Real and ask them to help me get the games running on my new computer... figuring that since I have my old drive in the new machine, I can either relink the keys, or get new ones for the demos I downloaded.
Fast forward a few days of dealing with clueless technical support, with the end result being that I have been told that I can't have new keys in various manners. Some simply said it was impossible to transfer the games to a new computers. Others accused me of being a pirate in no uncertain terms, despite my removal of the old hard drive from the old hardware. My entire real account was cancelled on my behalf (not just the arcade portion, but the premium content for Read Audio as well) and yet they billed me for 3 months subsequent to the cancellation.
In the long run, it just wasn't worth the battle to try to get my purchased content back. I did have my credit card company back out the entire Real subscription (which I had only had for three months prior to RealArcade) as well as the subsequent charges after the cancellation that were incorrectly applied.
So, do I find the store experience important? No in the least. However, physical media is critical to me, simply because it lessons the possibility of not being able to use my purchase due to tech support stupidity.
That said, I have had problems even with my physical purchases. I purchased a copy of The Operation Art of War, Elite Edition. Turns out that it is impossible to run this on any NT based OS, period. So I tried it on my old windows 98 box, but it turns out the old copy protection was incompatible with my drive. Techsupport refused to give any helpful suggestions, and refused to return the product. Of course, the store refuses to return opened product.
I still have the game (and a few others in similar state) that are not games that require any technology to run (how hard are hexes and die rolls?), but have crippling technology attached which prevent me from revisiting them, or in some cases, ever playing them at all. Now, some companies are choosing to do this deliberately: I have refused to update my Macromedia products, because the new versions protection. Any product with software keys that have to come from a vendor is going to be useless when that vendor goes away, and none of the vendors I have talked to have a plan for dealing with buyouts or failure.
Cheap joysticks held up about a week. Heavy joysticks maybe three or four weeks. Eventually, we had to consider them consumables of negligable value.
We had a full throttle, foot pedal, flightstick (CH equipment, very good quality). They were all destroyed by the "mature flight sim fans" in under a month. The foot pedals were first to go in a fit of stomping that cracked the bolts holding the pedals on. The stick was next when someone lost a dogfight and ripped the cord out of the base. The throttle held up surprising well, despite the "this must go to 110%" slams it received, finally dying when someone snapped the fastlook dpad off.
Not the way to make a profit, let me tell you...