first off, don't buy geek books as gifts unless you're/certain/ they will be well received. kinda like buying a set of pans for your mother.
anyhoo, on my list:
"information theory and statistics" by kullback "fundamentals of digital image processing" by a.k. jain "digital video processing" by a.m. tekalp "calculus: early transcendental functions" by larson, hostetler, & edwards "principles of data mining" by d. hand, h. mannila, & p. smyth "elements of statistical learning" by t. hastie, et. al
of course, that may well be a bit much for most;-)
something very similar happens on all the windows installations in the department at school. most of the professors have a pathological hatred of windows, but the people making grants insist on word for whatever reason...
i'm pretty sure he means caned. there was a pretty famous case a couple years back where an american kid (micheal something or other) littered and was sentenced to a caning. huge american indignation followed
i did this a lot with the algorithms class i ta'ed for. my personal favorite, though, were the students who essentially used some crazy pattern matching scheme to argue that their (totally wrong) answers looked x% like my solution and thus deserved x% credit.
i'm also biased: i've had to work with people who just can't grasp theory.
my biggest pet peeves: examples are not proofs and correlation does not imply causation. as far as i can see, the only way to break people of thinking like this is to make them take enough proof oriented classes and stats classes that you beat it out of them or convince them to major in something else.
i ended up going to http://www.gmu.edu/ which, when i applied, wasn't exactly well known for its cs program. on the other hand, it's/the/ up and coming university in the greater area. i'm just about to finish my m.s. c.s., so i've been applying for my first "real world" job. so far i've had a lot better response than friends who finished their undergrad degrees at far more prestigious universities. the differences:
* i had two years experience with a local firm. i started off as an intern and worked my ass off. i was recognized for my effort (including being recognized as most valuable employee) and the internship quickly turned into a part time associate software engineer position.
* i (almost) have a master's, my friends don't.
* my undergrad degree is far broader than the degree requirements suggest: i was one advanced calc sequence short of finishing a double major in applied math. as it was, i finished with minors in data analysis and math. the people i've interviewed with and spoken to at career fairs have consistently commented on the math minor. there seems to be a shortage of people who can do cs and math well. my friends who didn't develop this kind of latitude are now mostly webmonkeys or low level grunts.
* i've been very involved. i'm a member of the acm and participated in several icpc regionals (placing in the top 11 the last two years i competed). i was involved with the robotics club until ta-ing sucked away all my time and will to live.
* i've worked for the department as a t.a. (at the grad and undergrad levels) and as an r.a. if you can find a professor doing work on something you find interesting, ask and see if they'd like help. almost all the interviewers i've had were far more interested in the research stuff i did, even though my internship experience was far more relevant to what they were recruiting for. none of my friends had this kind of experience.
i'm not quite sure how these individual factors are affecting my prospects, but overall it seems that i'm better off than my friends with the fancy degrees (and equally fancy loans) from fancy universities are doing. i'm getting my foot in doors that my friends can't. now, whether or not i'll be able to step through the door is another question (haven't landed a job yet), so caveat lector and all that jazz.
... because i've switched all the machines i'm responsible for to using firefox precisely because it's n-times harder to get malware. not impossible mind, but a lot harder by default. perhaps inducing some blunt trauma with a clue-by-four might help...
the dc metro area is definitely picking up. northern virginia alone is seeing something like 11,500 new jobs soon (ibm just bought a big new building down the street that they're looking to file and all the big contractors are desperate to get enough people to staff the zillions of dollars in homeland security contracts that they have) so, all in all, dc metro area is looking pretty decent, or a lot more so than it used to. i've been getting a lot of positive response to my resume (but i'm hardly a typical case i'm 3 credits away from a master's in a.i.)
to summarize:
if you already have a clearance: dc metro area (including our lesser suburb, baltimore;-)) is basically a gold mine. there's a huge number of opportunities out here for people who already have or can get clearance (this means us citizens only). it's to the point that they have specialized job fairs which require clearance to get in. check out the washington post online (great job section) plus whatever other places you're interested in.
... the key to bottlenecks, as i've understood, are: 1) how many physical paths are there to disk, 2) how big are the buffers.
#1 can be fixed by adding more controllers/and/ more disks, #2 can be fixed by buying the right controllers. not/too/ too useful, but a start.
if you're/really/ concerned about performance (enough to spend cash on it), give someone like storagetek a call --- they've got this down to a fine art. quite probably waaay overkill for what you want to do, but it's a start.
if you have never taken a compiler class before or written a compiler on your own, i suggest the following:
while i encourage re-use, if your purpose is to learn how to write a compiler, don't extend someone else's. find a grammar for a language you're comfortable with (e.g. pascal) and start from there. you'll find that getting just plain pascal to compile properly will be quite a challenge. oo-ness just adds another layer of complexity to the compiler.
to aid your debugging, you'll want to spend some time thinking up good ways of a) visualizing your parse tree, b) representing your IL in a human readable format, c) representing the entire state of your interpreter in human readable format. these just by themselves can be very challenging projects.
acquire a copy of the dragon book. this is only a starting point, you may also want to peruse some of andrew appel's compiler books (such as this one or this one)
lex/flex and bison/yacc are rather antiquated, you may want to check out terence parr's antlr (formerly pccts) instead. this allows you to implement your compiler+interpreter in your language of choice, rather than being forced to use c. my compiler classes all required that we used lex/yacc, so that's what i did; however, i would have really liked to have the option of doing it all in java or c++.
how you setup your symbol table will have a large determining factor in your success. i've used trees of hashtables in the past quite successfully (each node in the tree corresponding to a lexical context such that all symbols visible in the current scope are on the path between the present node and the root). i expect that extending this to support an OO language shouldn't be too hard. e.g: augment nodes representing a type to include back pointers to parent types. you will have to modify search to do lookups as appropriate.
there are several "toy" grammars out there which allow you to do useful stuff (recursion, 'interesting' data structures [i.e. self referential], etc.) without wading through a lot of useless cruft (implementing huge amounts of runtime support, for example). i'd go with one of those. once you're comfortable that you can make one of these learning languages work, then try to hack one of your own.
this all said, good luck! i am by no means an expert on compiler construction (worked on a custom in-house scripting language as an intern a couple years back and had to take compiler classes to satisfy breadth requirements for my m.s. c.s.) but i do hope this is a little bit useful.
"Because parties represent core issues" is a patently false statement. let's examine the republican party, which is really a couple groups lumped into one. looking closer, we have "true conservatives" (like libertarians, only more sane), then we have the religious right and then we have more moderate people who have a mild conservative bent. the problem is that most of these people are lumped together under the title of "conservative" when most of them are not truly conservative on every political axis. let's take the issue of same sex marriage as another example. a true conservative will either say that it is a matter for the state to decide or argue that not even the state has the right to interfere in this matter. social conservatives (usually the religious right) will argue that it is absolutely the federal gov't responsibility to stop this abomination. then there are the moderates, many of whom fall into the "live and let live" category. i can find similar arguments for the democratic party, so i'm not really sure that i buy your argument that parties represent core issues.
re #2: a short history lesson: remember who put the taliban into power in the first place? i'm surprised that people forget so quickly that the bad karma generated in all the other cases where the us has attempted to install shining examples of democracy have (with the exception of japan) served only to destabalize and generally worsen the situation.
i really don't understand why it is that people vote for/parties/ rather than/issues/. to be totally blunt, what the hell has the rnc / dnc ever done for anyone who isn't a candidate? why is party loyalty such a huge deal? i really don't understand it. i had a conversation with someone on campus the other day and he said something to the effect of, "my family are all proud republicans. we've been that way for three generations now." so i asked him why he was going to vote republican and his response was, "why wouldn't i? that's what we've always done." that's not democracy in action, that's a sheepocracy exercising its idiocy.
try http://okcupid.com/, it's at least free and (in my experience at least) pretty decent at finding people. it's kinda quirky, kinda funny, and they at least explain their matching rationale. they start with a mbti-esque personality profile which takes a while to fill out. after that, you're free to answer as many questions as you want to. answering questions works like this: you choose 1) your answer, 2) what acceptable answers for your match would be, and 3) how important their answer is to you. this all gets mushed together and they come out with two scores. you choose if you want people ranked by how compatible you are as friends or as lovers/dating material. also, if you don't like the questions that are asked, you can ask some of your own.
i have not tried this with intel's fortran compiler, *but*, from what i've heard, the intel c/c++ compiler produces code that performs substantially better than gcc on an amd processor. does the code running on an amd perform comparably to code running on an "equivalent" (take that term to mean what you will) intel box? i have no idea, but *if* i remember correctly, i was seeing a good 15-20% increase over gcc on the stuff i was doing targeting a p4. since amd makes chips which are, in theory, binary compatible with p4s, it may be worth a shot. another thing to recommend the intel compilers: their native support of openmp. if you do go with a dual box, you can give the intel compiler hints about how to parallelize your code to take full advantage of all n processors (don't know if you'll have ht turned on or not). hope this helps at least a little bit.
hrm... something occurred to me. instead of having people vote for candidates, they vote on issues (this should be fairly simple to do) and then based on which positions they've taken on these issues (and the degree to which they're important to said voters) and then rank the candidates. of course, this could get to be very sticky, but it's an improvement...
first off, don't buy geek books as gifts unless you're /certain/ they will be well received. kinda like buying a set of pans for your mother.
;-)
anyhoo, on my list:
"information theory and statistics" by kullback
"fundamentals of digital image processing" by a.k. jain
"digital video processing" by a.m. tekalp
"calculus: early transcendental functions" by larson, hostetler, & edwards
"principles of data mining" by d. hand, h. mannila, & p. smyth
"elements of statistical learning" by t. hastie, et. al
of course, that may well be a bit much for most
for what i do, having access to the acm library is far more useful than safari (but then i'm a research scientist, your mileage may vary ;-))
... the /only/ thing? i can think of several:
/too/ obvious.
1) grounding
2) no telephone
3) no driving priveledges
4) no allowance
5) no working
there's also the obvious "unplug them from the router". maybe a little
us computer vision folks refer to that as occlusion / occluding features / etc.
guess it'd be nice if all the sciences spoke the same language (well, other than math)
i'm an r&d guy, the marketroids figure out the rest of the process ;-P
something very similar happens on all the windows installations in the department at school. most of the professors have a pathological hatred of windows, but the people making grants insist on word for whatever reason...
i'm pretty sure he means caned. there was a pretty famous case a couple years back where an american kid (micheal something or other) littered and was sentenced to a caning. huge american indignation followed
step 1: move all that stuff into cvs / source control system of your choice.
step 2: install cygwin on all the machines (http://sources.redhat.com/)
alternately: use ms's unix system services (go digging on the m$ website) theoretically this will give you a "real unix" running inside windows.
at least this way you don't have to spend as much effort porting your old tools.
... they're all busy being worked to death by e.a., et al. ;-)
i did this a lot with the algorithms class i ta'ed for. my personal favorite, though, were the students who essentially used some crazy pattern matching scheme to argue that their (totally wrong) answers looked x% like my solution and thus deserved x% credit.
i'm also biased: i've had to work with people who just can't grasp theory.
my biggest pet peeves: examples are not proofs and correlation does not imply causation. as far as i can see, the only way to break people of thinking like this is to make them take enough proof oriented classes and stats classes that you beat it out of them or convince them to major in something else.
i ended up going to http://www.gmu.edu/ which, when i applied, wasn't exactly well known for its cs program. on the other hand, it's /the/ up and coming university in the greater area. i'm just about to finish my m.s. c.s., so i've been applying for my first "real world" job. so far i've had a lot better response than friends who finished their undergrad degrees at far more prestigious universities. the differences:
* i had two years experience with a local firm. i started off as an intern and worked my ass off. i was recognized for my effort (including being recognized as most valuable employee) and the internship quickly turned into a part time associate software engineer position.
* i (almost) have a master's, my friends don't.
* my undergrad degree is far broader than the degree requirements suggest: i was one advanced calc sequence short of finishing a double major in applied math. as it was, i finished with minors in data analysis and math. the people i've interviewed with and spoken to at career fairs have consistently commented on the math minor. there seems to be a shortage of people who can do cs and math well. my friends who didn't develop this kind of latitude are now mostly webmonkeys or low level grunts.
* i've been very involved. i'm a member of the acm and participated in several icpc regionals (placing in the top 11 the last two years i competed). i was involved with the robotics club until ta-ing sucked away all my time and will to live.
* i've worked for the department as a t.a. (at the grad and undergrad levels) and as an r.a. if you can find a professor doing work on something you find interesting, ask and see if they'd like help. almost all the interviewers i've had were far more interested in the research stuff i did, even though my internship experience was far more relevant to what they were recruiting for. none of my friends had this kind of experience.
i'm not quite sure how these individual factors are affecting my prospects, but overall it seems that i'm better off than my friends with the fancy degrees (and equally fancy loans) from fancy universities are doing. i'm getting my foot in doors that my friends can't. now, whether or not i'll be able to step through the door is another question (haven't landed a job yet), so caveat lector and all that jazz.
... because i've switched all the machines i'm responsible for to using firefox precisely because it's n-times harder to get malware. not impossible mind, but a lot harder by default. perhaps inducing some blunt trauma with a clue-by-four might help...
the dc metro area is definitely picking up. northern virginia alone is seeing something like 11,500 new jobs soon (ibm just bought a big new building down the street that they're looking to file and all the big contractors are desperate to get enough people to staff the zillions of dollars in homeland security contracts that they have) so, all in all, dc metro area is looking pretty decent, or a lot more so than it used to. i've been getting a lot of positive response to my resume (but i'm hardly a typical case i'm 3 credits away from a master's in a.i.)
;-)) is basically a gold mine. there's a huge number of opportunities out here for people who already have or can get clearance (this means us citizens only). it's to the point that they have specialized job fairs which require clearance to get in. check out the washington post online (great job section) plus whatever other places you're interested in.
to summarize:
if you already have a clearance: dc metro area (including our lesser suburb, baltimore
... the key to bottlenecks, as i've understood, are: 1) how many physical paths are there to disk, 2) how big are the buffers.
/and/ more disks, #2 can be fixed by buying the right controllers. not /too/ too useful, but a start.
/really/ concerned about performance (enough to spend cash on it), give someone like storagetek a call --- they've got this down to a fine art. quite probably waaay overkill for what you want to do, but it's a start.
#1 can be fixed by adding more controllers
if you're
apparently antlr does python (first entry) too. i stick by my claim that lex/bison are really antiquated (you have to do some majorly crufty and poorly documented stuff to make bison output thread safe, for example). lalr is a powerful approach to parsing. it's by no means the only approach, or, for that matter, necessarily the best approach. antlr is capable of compiling a superset of the languages that lalr tools (specifically yacc/bison) are capable of ( see here). does the average joe care about the difference betwee ll(k) and lalr(k)? probably not. still, theoretically, antlr is a more powerful tool than yacc/bison
if you have never taken a compiler class before or written a compiler on your own, i suggest the following:
there are several "toy" grammars out there which allow you to do useful stuff (recursion, 'interesting' data structures [i.e. self referential], etc.) without wading through a lot of useless cruft (implementing huge amounts of runtime support, for example). i'd go with one of those. once you're comfortable that you can make one of these learning languages work, then try to hack one of your own.
this all said, good luck! i am by no means an expert on compiler construction (worked on a custom in-house scripting language as an intern a couple years back and had to take compiler classes to satisfy breadth requirements for my m.s. c.s.) but i do hope this is a little bit useful.
thank god what you have won't run --- main has to be:
public static void main(String[] argv)
"Because parties represent core issues" is a patently false statement. let's examine the republican party, which is really a couple groups lumped into one. looking closer, we have "true conservatives" (like libertarians, only more sane), then we have the religious right and then we have more moderate people who have a mild conservative bent. the problem is that most of these people are lumped together under the title of "conservative" when most of them are not truly conservative on every political axis. let's take the issue of same sex marriage as another example. a true conservative will either say that it is a matter for the state to decide or argue that not even the state has the right to interfere in this matter. social conservatives (usually the religious right) will argue that it is absolutely the federal gov't responsibility to stop this abomination. then there are the moderates, many of whom fall into the "live and let live" category. i can find similar arguments for the democratic party, so i'm not really sure that i buy your argument that parties represent core issues.
re #2: a short history lesson: remember who put the taliban into power in the first place? i'm surprised that people forget so quickly that the bad karma generated in all the other cases where the us has attempted to install shining examples of democracy have (with the exception of japan) served only to destabalize and generally worsen the situation.
i really don't understand why it is that people vote for /parties/ rather than /issues/. to be totally blunt, what the hell has the rnc / dnc ever done for anyone who isn't a candidate? why is party loyalty such a huge deal? i really don't understand it. i had a conversation with someone on campus the other day and he said something to the effect of, "my family are all proud republicans. we've been that way for three generations now." so i asked him why he was going to vote republican and his response was, "why wouldn't i? that's what we've always done." that's not democracy in action, that's a sheepocracy exercising its idiocy.
...since niklaus wirth defined pascal in 1971.
try http://okcupid.com/, it's at least free and (in my experience at least) pretty decent at finding people. it's kinda quirky, kinda funny, and they at least explain their matching rationale. they start with a mbti-esque personality profile which takes a while to fill out. after that, you're free to answer as many questions as you want to. answering questions works like this: you choose 1) your answer, 2) what acceptable answers for your match would be, and 3) how important their answer is to you. this all gets mushed together and they come out with two scores. you choose if you want people ranked by how compatible you are as friends or as lovers/dating material. also, if you don't like the questions that are asked, you can ask some of your own.
i have not tried this with intel's fortran compiler, *but*, from what i've heard, the intel c/c++ compiler produces code that performs substantially better than gcc on an amd processor. does the code running on an amd perform comparably to code running on an "equivalent" (take that term to mean what you will) intel box? i have no idea, but *if* i remember correctly, i was seeing a good 15-20% increase over gcc on the stuff i was doing targeting a p4. since amd makes chips which are, in theory, binary compatible with p4s, it may be worth a shot. another thing to recommend the intel compilers: their native support of openmp. if you do go with a dual box, you can give the intel compiler hints about how to parallelize your code to take full advantage of all n processors (don't know if you'll have ht turned on or not). hope this helps at least a little bit.
hrm... something occurred to me. instead of having people vote for candidates, they vote on issues (this should be fairly simple to do) and then based on which positions they've taken on these issues (and the degree to which they're important to said voters) and then rank the candidates. of course, this could get to be very sticky, but it's an improvement...