To me this seems like a complete rip off. $25 for 2 GB while the $30 plan was unlimited. Still let's pretend $25 for 2 GB is not a rip off. So then 1 GB should be $12.50 but instead you need to pay $15 for 200 MB. To me this is just ATT blatantly screwing you for data the same way they all blatantly screw you for text messages.
A text message is a very tiny piece of data, hundreds of them probably don't even break a megabyte. And with all the network updates/3g they should be even cheaper to deliver. Instead the price has been held constant by all the carriers. Clearly that is some type of anti trust violation. ATT used to allow free receiving of text messages, but after merging with cingular suddenly you pay to receive/get the messages. Now they offer texting plans. Basically it's a way to just rip you off out of money. Even the 200 MB data plan is more than enough to send thousand of texts, but instead of having a customer pay just $15 for light web and some text messages, now they can continue to fleece you for $30 between a texting plan and data plan....
I wish for the providers to be pipes, but more reasonably priced. Ie let's pretend $10 per GB is a good price. Then I want the $10 plan for 1 Gb, the $20 plan for 2 GB, etc... 200 MB plan for $2.... We can assume some overhead here and make the minimum plan $5 for 500 MB.... The reality is that ATT will never create that type of tiered usage because many of their customers would jump on them. Instead they'd rather rip you off. Also if you still believe ATT does not wan to screw the customer, then why doen't the $15 200 MB plan auto convert to the $25 for 2 GB plan on the overage? Because they want to fleece you with $75 per GB instead of the already too high $12.50 per GB from the $25 plan....
The worst part is that I was thinking of a smart phone. But ATT clearly wants to screw you. They have been dragging their feet deliberately with android, offering crippled devices so far. And that part ticks me off, but I was patiently waiting for a good android device (my wife has an iphone so it is a few bucks cheaper for both of us to use the same cell phone provider). Now they pull this crap. I would go to Verizon and get a Droid, but I suspect similar to the airlines when imposing a new fee, Verizon will soon be copying this.... T-Mobile seems to genuinely be more customer focused, but their network leaves something to be desired in terms of coverage... In reality ATT/Verizon are the two largest national carriers with networks that mostly work everywhere. I think Sprint is number 3 but even their network has coverage area issues, otherwise I'd be looking at that 4G phone (although as I understand 4G is in even less places than their 3G which is even less than their voice service). As far as 3G I think that Verizon has the biggest 3G network of all the carriers.
Anyway hopefully some day the US can be like Europe where all the phones are based on the same technology and we can jump providers whenever we want. If ATT pulls crap like this, you can do a mass exodus to Verizon. And if Verizon does it, then those who can will go to Sprint/T-Mobile. And the providers will be forced to compete on price. But until that happens you are screwed. To switch providers you need to switch phones mostly (even between Verizon/Sprint and T-Mobile/ATT if you want 3G). So even if you buy your own $500 phone or $700 phone, to switch after 2 months of shoddy service, you'd need to buy it again. Therefore it makes sense just to get the subsidized phone since you are locked in anyway and get your little discount (except on t-mobile where there is a discount if you have your own phone)....
They can get out of this by claiming weather or other factors out of their control.... Similarly they can use these excuses to get out of causing a missed connection....
Actually a really great alternative is to rent it at these movie rental kiosks that are now all over the place in supermarkets/wallmarts. $1.00 gets you a single night and even as a college student I could afford $1.00. Sure there's tax too which brings it to $1.07.... But for the price of one bought DVD I could see like 10 movies. And in reality how many movies are really worth seeing? I don't think I have seen 10 movies this year....
I watched the whole film. It was boring, it didn't seem like there was that good acting, and it didn't seem like there was much effort at a story. Also it didn't seem realistic. If you are a wild do what you want in the army guy, you are shot in battle, court marshaled, or demoted...
Avatar seemed like it spent more effort on acting, and a story. Even if the story was the same old force the native off their land to get the natural resources rehashed all over again. For me movies like "Up in the Air" had way better acting, and a way more original story. Or the one that won best foreign film. Still Avatar did have amazing special effects.
I suspect the hurt locker's win was more like the reason for going to Iraq. To "support the troops" and if you don't vote for this movie/to go to war, then you are with the terrorists....
I'm really glad I only paid $1.00 (well plus tax) from one of those video rental kiosks to see the movie, it was pretty bad.
I'm interested in an e-reader for textbooks because I have collected many from Undergrad and now Grad (Masters) that I am holding onto and they take up space. I don't highlight/fold my books because it drives me crazy when the book is damaged. Right now I like the Kindle e-ink technology for reading, it seems easier on my eyes than an LCD (I have used my dad's Kindle). I don't like the iPad that much, I have used it in the apple store but I don't like the iBook reading experience. Also I understand publishers are planning to make their own apps for some titles to help formatting.
What I want is a kindle with color (it doesn't need to be magazine quality) because text books have color diagrams/charts where the color is required for the understanding. At the very lease I need newspaper/textbook style color. Also I do need mathematical formulas as well because I do have Calculus Books (which I never use but want to hold onto anyway) and Discrete Math Books (once in a while...). For a text book the kindle screen (not the DX) is too small. I want to at least be able to see a full text book page with the images/text.
I haven't tried annotations/searching. But it's not a killer. Usually with computer science I know what I'm looking for and I can tell based on the chapter headings. So going to the table of contents to find the chapter and turning a few pages is no problem. I am anal about my books. If I buy a book and there is a mark/line/folded/ripped page/dent on the cover when I buy it, I will return it and get another one. It drives me crazy when I tear pages (which sometimes happen when flipping them). The Kindle would be great because I wouldn't have to worry about a damaged book. and the annotations might let me annotate whereas I would never do that to a physical book.
But it would hurt to not have the the physical book because sometimes I do remember content by its position in the book. But phrase search might be okay since I may be able to remember a phrase to find a page. Also if you could search on a topic and have it return references to multiple books in your collection so you could cross reference the material that would be cool.
The other thing I want the kindle for besides text books is programming books. It would be great to be able to select/copy/paste/e-mail the source code examples instead of typing them or fumbling with a website/cd. I would definitely buy all the reference books for the Programming Languages I use (ie Bjarne's C++, K+R C, The Camel Book) and definitely buy Code Complete. Many books are excellent references and it would be great to have them all searchable in one place.
As a Grad student, some of my classes are based on ACM papers. And if I was to pursue a PhD, I would be reading hundreds of papers. Whatever device a PhD students has would need to be able to read the scientific journal for that field. Ie ACM seems to publish many of the interesting Computer Science papers (I know not technically a journal), but I would need an e-reader to link with their digital library if it was going to be super useful to me were I going for a PhD. I had one class this semester where it was about 25 papers and no textbook (all from the ACM).
As a professional programmer, I need the various how to guides/tutorials for specific technologies/languages, programming language references, and the occasional textbook (especially algorithms).
College book stores seem to have increased their rip off price. I went to undergrad 1998-2002 and most of my books were 70-100 with the occasional $120 book (ie Probability/Statistics). The prices were not that much more than amazon on many of the books and I could justify the extra as a "convenience" fee. I also enjoyed walking through the bookstore and reading the other computer science books, I even bought interesting books from classes I didn't take.... Also for classes not in Mathematics/Science I would often buy used books. Quite often the new book would be 100, it would be bought back for $20, and sold used at like $50. The used books were a rip off but now they are worse....
In 2009 I began graduate school. Most of the books are a total rip off. Also the text books are now locked away so you need to present registration information in order to get the book for your class. I had one book that was $150 brand new, and the used version was $90. Meanwhile on amazon I could buy the book for $80 new.... I told the book store to keep the book and ordered it. The same happens for many of the books, amazon has the book $30 or $60 or even $100 cheaper. The used situation is even worse, they still buy back for $20 or maybe $25 if feeling generous, but now instead of selling at $40 or $50 they'll sell the same book at $90 or $100.... Even books I used as an undergrad were out of wack. I even visited my undergrad book store and found the prices similarly jacked up and the books all locked.
I'm not sure why they lock the books up though. Maybe the stores are losing business to Amazon/B&N so whereas before there would be tons of extra copies, now they are more cash strapped and can only afford to buy exactly the amount for each class (or maybe even less than the students in each class) and can't afford people not in the class buying the books? Or maybe somehow keeping the books locked up won't let people browse and realize they don't need the book, or that they can go get it on amazon? or maybe somehow locking it behind makes it more "official". I don't know....
But I do know that my graduate school and my undergrad school have jacked the prices up a lot. And whereas as an undergrad I would buy from the bookstore and take the $10 or $15 savings hit from Amazon, now I order from amazon even if I get the book a bit late. Even with standard shipping the Amazon price still wins by a lot...
For ATT there are no savings. And you can't port the ATT phone to T-Mobile and still get 3G. And Verizon/Sprint use a different technology.
For ATT you are always subsidizing a phone, there is no cheaper price for no contract. So by not having a phone you are throwing the subsidy dollars to waste. The only thing I can think of is finding the most subsidized phone, selling it on e-bay and then using the proceeds to buy the nexus one (in effect subsidizing one). T-Mobile does offer a discount for no contract so there it seems to make more economic sense to buy the Nexus unlocked and then save the money each month. After two years you will be ahead, and if you keep it longer then you make the phone an even better value.....
Level 1) If I read the summary correctly, you wrote some code before you came to your employer. If you GPLed that code, then the code written prior to your employ is yours to do with as you want. Unless you somehow signed something to give rights over to your employer.
Level 2) Any changes you created to the project while under the employ of your employer. These belong to him/her/it. You cannot distribute them without permission. If your employer does distribute the code, because of the GPLed libraries and stuff, the employer must provide source code. But if your employer does not distribute the code, then he/she/it is free to keep it a secret and not release it. These are the rights under the GPL, it mostly protects the rights of an entity that the software is distributed to. But without distribution it doesn't apply.
I'm definitely not a lawyer. But it seems to me your best options are the following:
1) negotiate to buy a license to the software. If you get your employee to distribute it to you somehow, then you can demand the source and you are free to do what you want with it (via the terms of the GPL the employer cannot revoke your right to modify the code if you have the program distributed to you).
2) if your employer ever creates a commercial product from your code, buy it and then demand the source code and you are free to do what you want.
If your employer ever makes a commercial product cheaply, buy a copy and then demand the source code, under the terms of the GPL
My problem is that the church of Jobs can decide to add new clauses to his app contract on a moment's notice. One day your app can be permitted and then the next it can be forbidden because of some new contract clause.
I don't know how some companies invest all the money/resources in creating an iPhone/iPad application only to have the possibility of having the app denied and losing all the money poured into developing a project.
My problem with his latest thing is that as a programmer I often make code generators in other languages. Python to generate Java/SQL, custom languages that are parsed by a C program. This is a very useful design technique as you raise the level of abstraction and then solve the problem on the level of the problem domain instead of dealing with machine details. I suspect that prior to this latest rule, there was no issue to using this useful programming technique. But because Steve Jobs is all petty against flash, he suddenly decided to completely ban the technique to ensure the church of Jobs' domination over the cult of flash. Now granted there is all sorts of speculation as to why he is anti flash (revenge for adobe's poor mac support, not wanting to open the floodgates of games over the web, poor performance of flash on a phone, wanting to promote HTML 5, etc...). But the bottom line is that I don't care. I do care that he is petty and invents arbitrary rules to enforce his will and doesn't give a shit about any collateral damage. His reality distortion field makes him like a maniac....
Anyway one huge business risk is when you are doing business in a country and they just arbitrarily start inventing rules/fees/taxes. Or they change existing ones. You spend the money to conform and then suddenly the rules change so you have to do it again, and again. Steve Jobs is like the evil dictator, arbitrarily changing the rules as he sees fit. No thanks.
It's almost like the open source community needs to get some type of entity going to accept patents. Then if an open source developer is sued, this entity uses its patent arsenal to go after the attacker. Also the open source devs need to start patenting everything. The patent game seems to be that everyone patents everything and no one can make anything without stepping on someone's patents. So by having enough patents you can't be sued, at best you can grant a patent license....
It sucks that you have to do that, but it seems like without your own patents you don't have a chance. If you start a company and one of the big guys doesn't like you cutting into their business, they can just sue you for patent infringement and as you have nothing either you'll have to pay or go out of business. But if there was an open source patent entity, either they wouldn't dare, or they would try to negotiate some type of license. And of course all licenses will be void if a company sues any open source developer.
At the end of the day the only shield for the open source community is really to amass enough patents from all the open source projects that no one even cares. It seems like the MPEG-LA group has enough patents that even alternate schemes will use some of them (probably due to over broad patents). But there must be some stuff that they left out. Then just make an open source implementation and patent that. And suddenly the MPEG-LA group is now sueable......
Most higher math courses in college are almost all formulas. In high school math you learned about algebra/geometry and in grade school you learned arithmetic. But once you get to college most of it is just re-using those skills with various formulas. There are two approaches to learning college math. 1. You understand every formula, the derivation, the proof, and where it came from. 2. You just memorize the formulas and how to use them. Both will lead to A's. I did a hybrid with understanding the core of the math classes but memorizing a bunch of the secondary formulas.....
Anyway Calculus is the study of limits (more or less). While you may not be doing integrals or computing derivatives all the time, the concept of limits does come in handy. What if you get some formula to model a population and then want to know what happens as the animals keep multiplying? So you would want to take the limit as n approaches infinity. In computer programming I often use limits to categorize a complicated function in Big O notations. Basically I ask the question, what happens as n approaches infinity. Also rates of change in finance/physics often use calculus. I would expect biology has rates of change. Mostly I don't do the calculus because people approximate the rates of change or use average rates as opposed to the instantaneous rate.
But the idea of derivatives is that you are looking at a rate of change between two points, and then using calculus you shrink the difference between those two points to be infinitely small to get an instantaneous rate of change. And in integrals the main idea is that you are computing the area under the curve. In order to do this, you chop the area into infinitely small pieces and then add them up. The main idea being that if you use small enough pieces, then even the curviest line has each piece looking like a tiny trapezoid. But conceptually if you take some curved line and divide it into tiny sections, you will see that it is almost like a bunch of little rectangles. And it is pretty easy to compute the area of a rectangle.
And the real value in calc is that computers can cut things into small pieces, evaluate functions, and then add them up. You have to watch rounding errors. But rather than using all the calc formulas, people who actually solve calc problems often use numeric rules to have a computer do the problem. Many integrals cannot be solved with the formula and integration rules you know. But through a computer, you could use Simpson's rule to basically divide the function into tiny tiny pieces, evaluate each piece, and add them all up and get an answer.
Mostly I didn't need calculus for statistics because for computer science the focus was on discrete events. But there was one section on continuous probability where you needed to do an integral. Basically the idea is that the probability distribution is a function and to evaluate the probability of an event, you sum the area of the function (which you use an integral to do). Most likely the integrals in that class will be more simple straight forward ones, so using an integral table and understanding how to evaluate a definite integral should be enough. The rest is basically all formulas. Discrete probability, conditional probability, rules for combining probabilities, counting rules (permutations/combinations), etc.. Then there will be probability distributions which will have formulas for the mean, standard deviation, etc.
Also statistics classes are often taking by business people, and they have a watered down simple calculus instead of the engineering level calc. Sometimes they get one or two semester calc courses while engineeres get 4 or more semesters of calc (or now as is common 3 semesters of higher credit calc courses....ie instead of 4 courses with 3 credits each you get 3 courses with 4 credits each.....). The business people often get one or two semesters of 3 credit calc courses. Basically it's just enough to cover differentiation and some applications and integration with some applications. The sequences/series/multi-variable calc/etc. is usually not done.
The best developers have their preferences... While they can pick up any programming language tool, some are definitely more fun than others. If given a choice, you're not going to want to do COBOL unless there is a HUGE pay increase for it... VB 6 as well is a pain in the butt to work with....
In my career I cannot escape from VB 6 completely because of VBA (and Excel Macros....). But I would never accept a position as a full time VB 6 programmer because it is such a pain in the butt to work with. Even if the next cutting edge application was going to be VB 6, I'd pass....
There are some features that everyone likes (namespaces, first class functions, garbage collection, etc..) and whether you pick C#, VB.NET, or Java (to a point) there isn't that much difference in capabilities. But if you pick C, then you're going to be working 3 or 4 times as hard to do the same stuff. If given a choice of building a business app in Java or C, 10 out of 10 times I would pick Java. I love C as a language, but for doing a business app with a fixed deadline, it is better to use Java and get it done sooner and to have more time for testing/debugging.
Still if there was a startup building the next cutting edge app in C, I'd question that. I would think at a start up building the next big thing, the most important thing is to get the app to market ASAP....and for that you want a language with as many built in libraries as possible. There are a lot of libraries for C, but not built into the language so you have to evaluate them and make sure they play nice together and that takes time. Meanwhile Java has a huge standard library. Need to zip a file, no problem. Need a GUI, no problem.... And for windows, I might question Java over.NET for a consumer application since.NET seems to run much faster for windows and be able to more easily interface with COM objects.
Anyway my point is that sure you can pick up any imperative language once you know how to program one. Functional languages may require more study. And most developers can build the next big thing in any Turing complete language. But all languages are not equal.... Some are easier to use than others. And some developers if given multiple positions will look at language choice. And some will also turn down the next big thing due to the language. No one wants to use an antiquated language that no one has heard of. I once interviewed at a brokerage using their own custom programming language fresh out of school. I didn't get the job, but later when another one opened up and they considered me, I told them I wasn't interested. Basically if your only job is working on some custom language, it's going to make it hard to find another job because HR likes to hire you for a job doing the same thing you did in your last job, or at least some of the same things... And in companies where you are paid on how to get the software out, if someone insists you write windows entirely in assembly in a year, run hard... In fact if they insist on anything written in assembly that is not relatively simple run...... There is some common sense here. While sure Java/C#/VB.NET are not that different and maybe there it doesn't matter so much. The difference between C and these other languages, assembly, etc. does matter. C++ is somewhere in between. With the Boost and the STL it can be very similar to Java. Or if you write it c-like it can be similar to C. And of course LISP/Scheme/Haskell/ML/F# are all another can of worms. The lower level languages are harder to write/debug and will require more time. The higher level languages are easier to write/debug and will require less time, but for a performance sensitive app, may result in a failure. You usually won't want to work on the next big thing in fail because then you will be back to looking for a job. It is better to work on the next big thing and succeed and cash out big....
The only reason I am interested at all in the iPad is the iBooks store. The device is the same order of magnitude in price as the Kindle-DX, and it seems like the iPad may have way more publishers creating books (not to mention that Amazon has a kindle app out for it already anyway...). My library at home is out of control, so if I can get all the fiction books I read on a single device and eat up digital space instead of bookcase space, so much the better. The technical books would be even better. Many books include color illustrations that help in understanding the material, and the iPad can handle this as well. So I see no reason that it couldn't work for technical books as well as fiction. Things like Programming Languages, Algorithms, and Mathematics books....
Also I trust that if apple decides to get out of the DRM business, either it will unlock everything, or it will tell me some known workaround to disable it. Their reputation is too important to just say "screw you ha ha you paid for your books and now they are useless".... And the greatest thing that could happen is that Apple is responsible for killing eBook DRM the way it killed a lot of music DRM.
But still at the end of the day publishers and recording studios should fear... It's not the pirates that are the problems, it is artists finding ways to reach their audience directly without needing publishers/record labels. No amount of DRM will fix that either.....
That's exactly what happened in 2002 when I was looking for a job. All the "entry level jobs" were sucked up by experienced people willing to work for less. Not only that, but some "entry level jobs" were posted demanding 5 years experience in language x, 5 years experience in language y, 3 years experience in language z, etc." Obviously the "entry level" job postings were tailored to attract these more experienced people that are unemployed...even though the salary would be an entry level salary at like 30,000 or 35,000.
Anyway I think the last laugh went to me because many of these more experienced guys jumped ship as soon as the economy improved. Whereas if there was room for advancement a real college student may have stuck around and worked for a few more years. Although most companies I have worked for treat IT like a disposable commodity. You can always toss out an IT worker and get another one and plug him in. Any knowledge of the company doesn't matter in IT. In that case the companies don't care about high turnover even though they should. Also many of them are quite content to hire you and keep you doing the same job year after year. And to try to keep your salary as low as possible inventing different excuses. In that case often it pays to switch companies and get another 10,000 or 15,000 dollars.
At a start up where I worked, and also at my current job where the teams are small, that is the way that is favored and rewarded with bonuses. Sure you could spend a few days designing a really advanced system architecture and then making everything latch onto that system. But with the extra time your boss will be pissed. Or you could slap it together and get it to work. The sooner the better. That's what gets you money/bonuses even though it is harder to maintain later....
Anyway unfortunately due to jobs like that I never learned the "right" way to architect/modularize something. It's true I can read books, but there is no substitute for practicing 40+ hours per week..
I would say that's the problem with the hiring process. I worked for a company (sadly as a DBA:() where some programmers who have been there for years were absolute idiots. They could whip code, in the required format, but they couldn't understand what it meant. Ie someone was supposed to wrap something in a database transaction. They had a class and used it as class.do operation. So they create a database connection, wrap it in a transaction, and then are like class.do operation and it doesn't do anything. I looked over their shoulder for one minute and realized that nowhere were they somehow attaching the database connection with class so that class was probably using its own connection. Anyway......you get all kinds of people....
There seem to be people who memorize all the syntax of a language and a standard library. On interviews (which they can get because their previous work experience was in a job similar to the new job, so HR favors their resume) they can answer all sorts of Trivia on the libraries (of say C# or Java). But then when they program, if you give them a task that falls outside of a normal pattern forget it... Then there are more fundamentalists like me. I know the various programming constructs and can usually do almost whatever I want. But I don't know everything about the libraries. I need a C# or Java library reference to program in them. But even without a library, I can implement most things. Unfortunately I don't get much of the interview trivia so it is harder for me to pass. But since most of my jobs have been SQL Development jobs, I don't even get a chance at the interview trivia because most HR departments want you to get a new job exactly like your old job because it is lower interest. It makes it hard to do something different or to grow.
I meant good luck due to the price. Most companies I have worked for (including a giant real estate firm) see Oracle as so expensive that even a single instance is tightly locked down and only for mission critical things. They also tend to use other databases for less sensitive things...ie Microsoft SQL Server, Sybase, etc.. Now I work for one of the most successful asset managers, and even they only use Oracle for their financials/HR and the rest they use sybase for. A single instance running on a single machine is super expensive. A cluster is even more expensive than that.
Even my college has Oracle so locked down that if you don't have a class that requires Oracle, you don't get access. And they lock you out as soon as the semester ends. Meanwhile MySQL you can have all the access you want.
Many of the NoSQL sources scale better than a normal database and are available cheap. Oracle costs a fortune, and if you want to run Oracle on a cluster good luck. They also don't let you publish benchmarks without their permission. But most people I know who use Oracle claim it totally beats everything else (without further clarification). DB2 includes a cluster edition that is also quite good. It uses a shared nothing architecture. But none of these solutions are free. Also teradata is also cited as a good parallel database. If you are a start-up and your choice is a NoSQL solution that is almost free or 100,000+ for some commercial parallel database, which do you go to?
But no matter what you will consume resources with a relationship database on ensuring consistency (which many times is what you want but not 100% of the time). Amazon's Dynamo works by not caring so much about consistency and trading consistency for availability of the overall service. For a shopping cart it is fine, but you wouldn't want to do your credit card processing using it. Google's GFS is optimized to do the file operations that google does the most. However there was an article in the ACM not that long ago comparing Map Reduce (Hadoop's implementation) against two parallel databases, and it lost. OF course the Parallel Databases were all not free....and hadoop is....
So overall I'd say the decision comes down to price mostly (as it does with most startups). If you can make do with one server than sure do PostgreSQL (or mySQL...although they always tried to force licensing for commercial products even though it is GPL...). If you need a cluster, both have clustering solutions, but as far as I can tell they are not as good as the commercial Parallel databases. If you have lots of money then sure go with Oracle, it seems through word of mouth Oracle is the best for both parallel and stand alone in terms of performance. DB2 was good enough for a former job. They had terabytes in the mid 1990's using about 20 servers. Now that the hardware is much better I'm sure it scales even better.... But if money is a consideration, then go with an open source noSQL solution. A lot of people now swear by Cassandra, I haven't had a chance to check it out yet.
That's where I originally saw this trick, in some list of common interview questions. Anyway I wouldn't have figured it out on my own...
But none of my employers have been disappointed in my work...Although maybe in an embedded system saving the RAM from an extra variable might matter. But I'm not sure a single integer would make any difference in the grand scheme of things....
As an undergrad, one of the schools I went to tried to sell either a Mathematics dual major or a minor to the computer science students... The argument was that mathematics classes aren't necessarily going to be useful in what you do, there are many jobs where solving a differential equation does not matter.... But that by solving the math problems you learn to pay attention to the details and to analyze things breaking complex processes into pieces. The physics teacher used the same argument for physics saying it makes you better pay attention to detail and problem solve.
Anyway I don't know if any of that is true or not. I had a mathematics major friend who claimed that by locking himself away for a few years and solving some proof, somehow it would magically increase his analytic skills and make him more employable. I don't know about that...
I have a math minor, I'm not sure it helps that much. I have a "normal" programming job. And looking on the various job sites, most programming jobs seem to be linking some type of data to a database, either processing it, creating a web front end for it, etc... basic corporate development. Mostly it doesn't require more than high school algebra on the math skills. I see a lot of people considered "good programmers" who don't even understand Big O notation. But it's good enough for most stuff. Many of them intuitively know that a hash table is fast for lookups, and a sorted list is good if you need fast lookups and an order even though they don't know BIG O notation. In my jobs, the only really "advanced" math skill I pulled out was topological sorting for dependencies because I made a calculation engine. Also once I saw some code for a bisection method, which was mislabeled newton's method and obviously cut and pasted online. But an awful lot of the numerical methods have the formulas posted online with directions, so it seems like even the occasional numeric method is no problem. Most people's business reports are full of averages and percent increases which are all easy to do...
I would add that the logic is easy. I mean even as an 8th grader I could understand the and/or/xor/not. The only thing that I really picked up from a math class was DeMorgan's laws (I kind of knew them by thinking through the problems...but not the name of the law or that you could apply it generically to any expression without thinking) and I have actually used them on occasion (I also picked up disjunctive/conjunctive normal form but I don't use those in programming....). But actually I found that programming made the logic portion of discrete math super easy for me when I got to it because I wasn't really learning much new stuff. Also even boolean Algebra was easy because A+B = A OR B and A*B = A AND B which mapped back to programming....
But anyway I also witnessed people struggle with logic and truth tables in college. But as long as you understand AND/OR/NOT and how things map to them, you can easily enumerate out the possibilities for a truth table, and simplify most expressions. DeMorgan's law is also useful for simplifying expressions sometimes, but mostly it doesn't matter. You whether you use De Morgan's law or not, the expression will work.
The important thing to remember is that Algorithms often take a long time to get right. Even something as simple to us now as binary search took years for a correct implementation to appear. The rule should be do the simplest thing first and then if it is too slow optimize.
Programs are written more to be read by humans. That's why languages like Python/Ruby/Perl/Ruby/ASP.NET/Java are all becoming more favored than C. They are easier to write and easier to read (Perl is debatable...but if done right it is readable..). For example, if someone used:
a = a xor b
b = a xor b
a = a xor b
to swap two integers instead of the more common way of temp = a; a = b; b = temp; I'd probably strangle them.... There is an easy way to do it that performs well, so there is no need to go to "advanced" tricks.
Anyway the more clever the code is made, often the more assumptions it makes. And then when something breaks you run into trouble. For example, maybe you have a list and the simplest thing is to linear search it via an iterator and the performance is fine. Now maybe someone decides to prematurely optimize it using a hash table to look things up. They define the size of the hash table and figure it won't grow bigger than that. Then it does and the code crashes. Or they write an expandable hash table but then end up with bugs in the memory allocation code. The sequential search would have been easier....
Anyway time = money. Quite often after investigating a bug, I won't be allowed to fix it because it is too expensive (if I touch the code, we end up owning it, and if the vendor corrects the code, they charge support time on our contract...), so they instead prefer to work around it.
Well some stuff is sue happy but other stuff doctors should be sued over. Mostly it is sue happy. I recall a court case on jury duty (thank god I was dismissed) where the defendant didn't like the way a doctor adjusted her muscle so she was suing.
It really depends though, if a doctor causes a mistake that makes someone disabled for the rest of their life, then you have to sue (due to no health care among other things) in order to have money to treat the condition and for the person to live without needing to work. Should this ever be more than 10 million (probably not).
If a doctor leaves his instrument inside you and then takes them out without any ill will, then probably you should just sue and get medical bills only, and any lost work due to recovering from the second surgery. And there should be some penalty for the doctor to encourage him to be more careful. Whether this is some type of sanction/suspension/fine levied directly against the doctor who knows.... Now the doctor gets sued and the insurance pays out...so it makes no difference to the doctor. And even good doctors have to pay out a fortune for insurance....
It really depends, but I don't think anyone should be getting 100 million out of pain in suffering... Now if a mistake from a doctor causes a condition that will take 100 million in medical treatment over the course of someone's life, then maybe they need 110 million (money for medical treatment and 10 million in lost lifetime wages....). I don't know.
Totally eliminating the ability to sue would result in people having no recourse from medical mistakes. A medical mistake can ruin your lifetime earnings (today I would think it is around 3 or 4 million for the average person, but I'm not sure) and cause huge medical bills both of which a victim needs to be compensated for. Also a doctor needs to have sanctions directly from him. Whether it is a fine into a fund to handle medical mal practice, or a payment directly to the victim who knows. But the current situation where the insurance pays out doesn't affect doctors at all...they have to pay for insurance regardless...
To me this seems like a complete rip off. $25 for 2 GB while the $30 plan was unlimited. Still let's pretend $25 for 2 GB is not a rip off. So then 1 GB should be $12.50 but instead you need to pay $15 for 200 MB. To me this is just ATT blatantly screwing you for data the same way they all blatantly screw you for text messages.
A text message is a very tiny piece of data, hundreds of them probably don't even break a megabyte. And with all the network updates/3g they should be even cheaper to deliver. Instead the price has been held constant by all the carriers. Clearly that is some type of anti trust violation. ATT used to allow free receiving of text messages, but after merging with cingular suddenly you pay to receive/get the messages. Now they offer texting plans. Basically it's a way to just rip you off out of money. Even the 200 MB data plan is more than enough to send thousand of texts, but instead of having a customer pay just $15 for light web and some text messages, now they can continue to fleece you for $30 between a texting plan and data plan....
I wish for the providers to be pipes, but more reasonably priced. Ie let's pretend $10 per GB is a good price. Then I want the $10 plan for 1 Gb, the $20 plan for 2 GB, etc... 200 MB plan for $2.... We can assume some overhead here and make the minimum plan $5 for 500 MB.... The reality is that ATT will never create that type of tiered usage because many of their customers would jump on them. Instead they'd rather rip you off. Also if you still believe ATT does not wan to screw the customer, then why doen't the $15 200 MB plan auto convert to the $25 for 2 GB plan on the overage? Because they want to fleece you with $75 per GB instead of the already too high $12.50 per GB from the $25 plan....
The worst part is that I was thinking of a smart phone. But ATT clearly wants to screw you. They have been dragging their feet deliberately with android, offering crippled devices so far. And that part ticks me off, but I was patiently waiting for a good android device (my wife has an iphone so it is a few bucks cheaper for both of us to use the same cell phone provider). Now they pull this crap. I would go to Verizon and get a Droid, but I suspect similar to the airlines when imposing a new fee, Verizon will soon be copying this.... T-Mobile seems to genuinely be more customer focused, but their network leaves something to be desired in terms of coverage... In reality ATT/Verizon are the two largest national carriers with networks that mostly work everywhere. I think Sprint is number 3 but even their network has coverage area issues, otherwise I'd be looking at that 4G phone (although as I understand 4G is in even less places than their 3G which is even less than their voice service). As far as 3G I think that Verizon has the biggest 3G network of all the carriers.
Anyway hopefully some day the US can be like Europe where all the phones are based on the same technology and we can jump providers whenever we want. If ATT pulls crap like this, you can do a mass exodus to Verizon. And if Verizon does it, then those who can will go to Sprint/T-Mobile. And the providers will be forced to compete on price. But until that happens you are screwed. To switch providers you need to switch phones mostly (even between Verizon/Sprint and T-Mobile/ATT if you want 3G). So even if you buy your own $500 phone or $700 phone, to switch after 2 months of shoddy service, you'd need to buy it again. Therefore it makes sense just to get the subsidized phone since you are locked in anyway and get your little discount (except on t-mobile where there is a discount if you have your own phone)....
They can get out of this by claiming weather or other factors out of their control.... Similarly they can use these excuses to get out of causing a missed connection....
Except that if you want 3G you are. ATT 3G and T-Mobile 3G are two different Nexus one phones....
But people are not objective and scientists are people.
Actually a really great alternative is to rent it at these movie rental kiosks that are now all over the place in supermarkets/wallmarts. $1.00 gets you a single night and even as a college student I could afford $1.00. Sure there's tax too which brings it to $1.07.... But for the price of one bought DVD I could see like 10 movies. And in reality how many movies are really worth seeing? I don't think I have seen 10 movies this year....
I watched the whole film. It was boring, it didn't seem like there was that good acting, and it didn't seem like there was much effort at a story. Also it didn't seem realistic. If you are a wild do what you want in the army guy, you are shot in battle, court marshaled, or demoted...
Avatar seemed like it spent more effort on acting, and a story. Even if the story was the same old force the native off their land to get the natural resources rehashed all over again. For me movies like "Up in the Air" had way better acting, and a way more original story. Or the one that won best foreign film. Still Avatar did have amazing special effects.
I suspect the hurt locker's win was more like the reason for going to Iraq. To "support the troops" and if you don't vote for this movie/to go to war, then you are with the terrorists....
I'm really glad I only paid $1.00 (well plus tax) from one of those video rental kiosks to see the movie, it was pretty bad.
I'm interested in an e-reader for textbooks because I have collected many from Undergrad and now Grad (Masters) that I am holding onto and they take up space. I don't highlight/fold my books because it drives me crazy when the book is damaged. Right now I like the Kindle e-ink technology for reading, it seems easier on my eyes than an LCD (I have used my dad's Kindle). I don't like the iPad that much, I have used it in the apple store but I don't like the iBook reading experience. Also I understand publishers are planning to make their own apps for some titles to help formatting.
What I want is a kindle with color (it doesn't need to be magazine quality) because text books have color diagrams/charts where the color is required for the understanding. At the very lease I need newspaper/textbook style color. Also I do need mathematical formulas as well because I do have Calculus Books (which I never use but want to hold onto anyway) and Discrete Math Books (once in a while...). For a text book the kindle screen (not the DX) is too small. I want to at least be able to see a full text book page with the images/text.
I haven't tried annotations/searching. But it's not a killer. Usually with computer science I know what I'm looking for and I can tell based on the chapter headings. So going to the table of contents to find the chapter and turning a few pages is no problem. I am anal about my books. If I buy a book and there is a mark/line/folded/ripped page/dent on the cover when I buy it, I will return it and get another one. It drives me crazy when I tear pages (which sometimes happen when flipping them). The Kindle would be great because I wouldn't have to worry about a damaged book. and the annotations might let me annotate whereas I would never do that to a physical book.
But it would hurt to not have the the physical book because sometimes I do remember content by its position in the book. But phrase search might be okay since I may be able to remember a phrase to find a page. Also if you could search on a topic and have it return references to multiple books in your collection so you could cross reference the material that would be cool.
The other thing I want the kindle for besides text books is programming books. It would be great to be able to select/copy/paste/e-mail the source code examples instead of typing them or fumbling with a website/cd. I would definitely buy all the reference books for the Programming Languages I use (ie Bjarne's C++, K+R C, The Camel Book) and definitely buy Code Complete. Many books are excellent references and it would be great to have them all searchable in one place.
As a Grad student, some of my classes are based on ACM papers. And if I was to pursue a PhD, I would be reading hundreds of papers. Whatever device a PhD students has would need to be able to read the scientific journal for that field. Ie ACM seems to publish many of the interesting Computer Science papers (I know not technically a journal), but I would need an e-reader to link with their digital library if it was going to be super useful to me were I going for a PhD. I had one class this semester where it was about 25 papers and no textbook (all from the ACM).
As a professional programmer, I need the various how to guides/tutorials for specific technologies/languages, programming language references, and the occasional textbook (especially algorithms).
College book stores seem to have increased their rip off price. I went to undergrad 1998-2002 and most of my books were 70-100 with the occasional $120 book (ie Probability/Statistics). The prices were not that much more than amazon on many of the books and I could justify the extra as a "convenience" fee. I also enjoyed walking through the bookstore and reading the other computer science books, I even bought interesting books from classes I didn't take.... Also for classes not in Mathematics/Science I would often buy used books. Quite often the new book would be 100, it would be bought back for $20, and sold used at like $50. The used books were a rip off but now they are worse....
In 2009 I began graduate school. Most of the books are a total rip off. Also the text books are now locked away so you need to present registration information in order to get the book for your class. I had one book that was $150 brand new, and the used version was $90. Meanwhile on amazon I could buy the book for $80 new.... I told the book store to keep the book and ordered it. The same happens for many of the books, amazon has the book $30 or $60 or even $100 cheaper. The used situation is even worse, they still buy back for $20 or maybe $25 if feeling generous, but now instead of selling at $40 or $50 they'll sell the same book at $90 or $100.... Even books I used as an undergrad were out of wack. I even visited my undergrad book store and found the prices similarly jacked up and the books all locked.
I'm not sure why they lock the books up though. Maybe the stores are losing business to Amazon/B&N so whereas before there would be tons of extra copies, now they are more cash strapped and can only afford to buy exactly the amount for each class (or maybe even less than the students in each class) and can't afford people not in the class buying the books? Or maybe somehow keeping the books locked up won't let people browse and realize they don't need the book, or that they can go get it on amazon? or maybe somehow locking it behind makes it more "official". I don't know....
But I do know that my graduate school and my undergrad school have jacked the prices up a lot. And whereas as an undergrad I would buy from the bookstore and take the $10 or $15 savings hit from Amazon, now I order from amazon even if I get the book a bit late. Even with standard shipping the Amazon price still wins by a lot...
For ATT there are no savings. And you can't port the ATT phone to T-Mobile and still get 3G. And Verizon/Sprint use a different technology.
For ATT you are always subsidizing a phone, there is no cheaper price for no contract. So by not having a phone you are throwing the subsidy dollars to waste. The only thing I can think of is finding the most subsidized phone, selling it on e-bay and then using the proceeds to buy the nexus one (in effect subsidizing one). T-Mobile does offer a discount for no contract so there it seems to make more economic sense to buy the Nexus unlocked and then save the money each month. After two years you will be ahead, and if you keep it longer then you make the phone an even better value.....
Level 1) If I read the summary correctly, you wrote some code before you came to your employer. If you GPLed that code, then the code written prior to your employ is yours to do with as you want. Unless you somehow signed something to give rights over to your employer.
Level 2) Any changes you created to the project while under the employ of your employer. These belong to him/her/it. You cannot distribute them without permission. If your employer does distribute the code, because of the GPLed libraries and stuff, the employer must provide source code. But if your employer does not distribute the code, then he/she/it is free to keep it a secret and not release it. These are the rights under the GPL, it mostly protects the rights of an entity that the software is distributed to. But without distribution it doesn't apply.
I'm definitely not a lawyer. But it seems to me your best options are the following:
1) negotiate to buy a license to the software. If you get your employee to distribute it to you somehow, then you can demand the source and you are free to do what you want with it (via the terms of the GPL the employer cannot revoke your right to modify the code if you have the program distributed to you).
2) if your employer ever creates a commercial product from your code, buy it and then demand the source code and you are free to do what you want. If your employer ever makes a commercial product cheaply, buy a copy and then demand the source code, under the terms of the GPL
My problem is that the church of Jobs can decide to add new clauses to his app contract on a moment's notice. One day your app can be permitted and then the next it can be forbidden because of some new contract clause.
I don't know how some companies invest all the money/resources in creating an iPhone/iPad application only to have the possibility of having the app denied and losing all the money poured into developing a project.
My problem with his latest thing is that as a programmer I often make code generators in other languages. Python to generate Java/SQL, custom languages that are parsed by a C program. This is a very useful design technique as you raise the level of abstraction and then solve the problem on the level of the problem domain instead of dealing with machine details. I suspect that prior to this latest rule, there was no issue to using this useful programming technique. But because Steve Jobs is all petty against flash, he suddenly decided to completely ban the technique to ensure the church of Jobs' domination over the cult of flash. Now granted there is all sorts of speculation as to why he is anti flash (revenge for adobe's poor mac support, not wanting to open the floodgates of games over the web, poor performance of flash on a phone, wanting to promote HTML 5, etc...). But the bottom line is that I don't care. I do care that he is petty and invents arbitrary rules to enforce his will and doesn't give a shit about any collateral damage. His reality distortion field makes him like a maniac....
Anyway one huge business risk is when you are doing business in a country and they just arbitrarily start inventing rules/fees/taxes. Or they change existing ones. You spend the money to conform and then suddenly the rules change so you have to do it again, and again. Steve Jobs is like the evil dictator, arbitrarily changing the rules as he sees fit. No thanks.
It's almost like the open source community needs to get some type of entity going to accept patents. Then if an open source developer is sued, this entity uses its patent arsenal to go after the attacker. Also the open source devs need to start patenting everything. The patent game seems to be that everyone patents everything and no one can make anything without stepping on someone's patents. So by having enough patents you can't be sued, at best you can grant a patent license....
It sucks that you have to do that, but it seems like without your own patents you don't have a chance. If you start a company and one of the big guys doesn't like you cutting into their business, they can just sue you for patent infringement and as you have nothing either you'll have to pay or go out of business. But if there was an open source patent entity, either they wouldn't dare, or they would try to negotiate some type of license. And of course all licenses will be void if a company sues any open source developer.
At the end of the day the only shield for the open source community is really to amass enough patents from all the open source projects that no one even cares. It seems like the MPEG-LA group has enough patents that even alternate schemes will use some of them (probably due to over broad patents). But there must be some stuff that they left out. Then just make an open source implementation and patent that. And suddenly the MPEG-LA group is now sueable......
Most higher math courses in college are almost all formulas. In high school math you learned about algebra/geometry and in grade school you learned arithmetic. But once you get to college most of it is just re-using those skills with various formulas. There are two approaches to learning college math. 1. You understand every formula, the derivation, the proof, and where it came from. 2. You just memorize the formulas and how to use them. Both will lead to A's. I did a hybrid with understanding the core of the math classes but memorizing a bunch of the secondary formulas.....
Anyway Calculus is the study of limits (more or less). While you may not be doing integrals or computing derivatives all the time, the concept of limits does come in handy. What if you get some formula to model a population and then want to know what happens as the animals keep multiplying? So you would want to take the limit as n approaches infinity. In computer programming I often use limits to categorize a complicated function in Big O notations. Basically I ask the question, what happens as n approaches infinity. Also rates of change in finance/physics often use calculus. I would expect biology has rates of change. Mostly I don't do the calculus because people approximate the rates of change or use average rates as opposed to the instantaneous rate.
But the idea of derivatives is that you are looking at a rate of change between two points, and then using calculus you shrink the difference between those two points to be infinitely small to get an instantaneous rate of change. And in integrals the main idea is that you are computing the area under the curve. In order to do this, you chop the area into infinitely small pieces and then add them up. The main idea being that if you use small enough pieces, then even the curviest line has each piece looking like a tiny trapezoid. But conceptually if you take some curved line and divide it into tiny sections, you will see that it is almost like a bunch of little rectangles. And it is pretty easy to compute the area of a rectangle.
And the real value in calc is that computers can cut things into small pieces, evaluate functions, and then add them up. You have to watch rounding errors. But rather than using all the calc formulas, people who actually solve calc problems often use numeric rules to have a computer do the problem. Many integrals cannot be solved with the formula and integration rules you know. But through a computer, you could use Simpson's rule to basically divide the function into tiny tiny pieces, evaluate each piece, and add them all up and get an answer.
Mostly I didn't need calculus for statistics because for computer science the focus was on discrete events. But there was one section on continuous probability where you needed to do an integral. Basically the idea is that the probability distribution is a function and to evaluate the probability of an event, you sum the area of the function (which you use an integral to do). Most likely the integrals in that class will be more simple straight forward ones, so using an integral table and understanding how to evaluate a definite integral should be enough. The rest is basically all formulas. Discrete probability, conditional probability, rules for combining probabilities, counting rules (permutations/combinations), etc.. Then there will be probability distributions which will have formulas for the mean, standard deviation, etc.
Also statistics classes are often taking by business people, and they have a watered down simple calculus instead of the engineering level calc. Sometimes they get one or two semester calc courses while engineeres get 4 or more semesters of calc (or now as is common 3 semesters of higher credit calc courses....ie instead of 4 courses with 3 credits each you get 3 courses with 4 credits each.....). The business people often get one or two semesters of 3 credit calc courses. Basically it's just enough to cover differentiation and some applications and integration with some applications. The sequences/series/multi-variable calc/etc. is usually not done.
The best developers have their preferences... While they can pick up any programming language tool, some are definitely more fun than others. If given a choice, you're not going to want to do COBOL unless there is a HUGE pay increase for it... VB 6 as well is a pain in the butt to work with....
.NET for a consumer application since .NET seems to run much faster for windows and be able to more easily interface with COM objects.
In my career I cannot escape from VB 6 completely because of VBA (and Excel Macros....). But I would never accept a position as a full time VB 6 programmer because it is such a pain in the butt to work with. Even if the next cutting edge application was going to be VB 6, I'd pass....
There are some features that everyone likes (namespaces, first class functions, garbage collection, etc..) and whether you pick C#, VB.NET, or Java (to a point) there isn't that much difference in capabilities. But if you pick C, then you're going to be working 3 or 4 times as hard to do the same stuff. If given a choice of building a business app in Java or C, 10 out of 10 times I would pick Java. I love C as a language, but for doing a business app with a fixed deadline, it is better to use Java and get it done sooner and to have more time for testing/debugging.
Still if there was a startup building the next cutting edge app in C, I'd question that. I would think at a start up building the next big thing, the most important thing is to get the app to market ASAP....and for that you want a language with as many built in libraries as possible. There are a lot of libraries for C, but not built into the language so you have to evaluate them and make sure they play nice together and that takes time. Meanwhile Java has a huge standard library. Need to zip a file, no problem. Need a GUI, no problem.... And for windows, I might question Java over
Anyway my point is that sure you can pick up any imperative language once you know how to program one. Functional languages may require more study. And most developers can build the next big thing in any Turing complete language. But all languages are not equal.... Some are easier to use than others. And some developers if given multiple positions will look at language choice. And some will also turn down the next big thing due to the language. No one wants to use an antiquated language that no one has heard of. I once interviewed at a brokerage using their own custom programming language fresh out of school. I didn't get the job, but later when another one opened up and they considered me, I told them I wasn't interested. Basically if your only job is working on some custom language, it's going to make it hard to find another job because HR likes to hire you for a job doing the same thing you did in your last job, or at least some of the same things... And in companies where you are paid on how to get the software out, if someone insists you write windows entirely in assembly in a year, run hard... In fact if they insist on anything written in assembly that is not relatively simple run...... There is some common sense here. While sure Java/C#/VB.NET are not that different and maybe there it doesn't matter so much. The difference between C and these other languages, assembly, etc. does matter. C++ is somewhere in between. With the Boost and the STL it can be very similar to Java. Or if you write it c-like it can be similar to C. And of course LISP/Scheme/Haskell/ML/F# are all another can of worms. The lower level languages are harder to write/debug and will require more time. The higher level languages are easier to write/debug and will require less time, but for a performance sensitive app, may result in a failure. You usually won't want to work on the next big thing in fail because then you will be back to looking for a job. It is better to work on the next big thing and succeed and cash out big....
The only reason I am interested at all in the iPad is the iBooks store. The device is the same order of magnitude in price as the Kindle-DX, and it seems like the iPad may have way more publishers creating books (not to mention that Amazon has a kindle app out for it already anyway...). My library at home is out of control, so if I can get all the fiction books I read on a single device and eat up digital space instead of bookcase space, so much the better. The technical books would be even better. Many books include color illustrations that help in understanding the material, and the iPad can handle this as well. So I see no reason that it couldn't work for technical books as well as fiction. Things like Programming Languages, Algorithms, and Mathematics books....
Also I trust that if apple decides to get out of the DRM business, either it will unlock everything, or it will tell me some known workaround to disable it. Their reputation is too important to just say "screw you ha ha you paid for your books and now they are useless".... And the greatest thing that could happen is that Apple is responsible for killing eBook DRM the way it killed a lot of music DRM.
But still at the end of the day publishers and recording studios should fear... It's not the pirates that are the problems, it is artists finding ways to reach their audience directly without needing publishers/record labels. No amount of DRM will fix that either.....
That's exactly what happened in 2002 when I was looking for a job. All the "entry level jobs" were sucked up by experienced people willing to work for less. Not only that, but some "entry level jobs" were posted demanding 5 years experience in language x, 5 years experience in language y, 3 years experience in language z, etc." Obviously the "entry level" job postings were tailored to attract these more experienced people that are unemployed...even though the salary would be an entry level salary at like 30,000 or 35,000.
Anyway I think the last laugh went to me because many of these more experienced guys jumped ship as soon as the economy improved. Whereas if there was room for advancement a real college student may have stuck around and worked for a few more years. Although most companies I have worked for treat IT like a disposable commodity. You can always toss out an IT worker and get another one and plug him in. Any knowledge of the company doesn't matter in IT. In that case the companies don't care about high turnover even though they should. Also many of them are quite content to hire you and keep you doing the same job year after year. And to try to keep your salary as low as possible inventing different excuses. In that case often it pays to switch companies and get another 10,000 or 15,000 dollars.
At a start up where I worked, and also at my current job where the teams are small, that is the way that is favored and rewarded with bonuses. Sure you could spend a few days designing a really advanced system architecture and then making everything latch onto that system. But with the extra time your boss will be pissed. Or you could slap it together and get it to work. The sooner the better. That's what gets you money/bonuses even though it is harder to maintain later....
Anyway unfortunately due to jobs like that I never learned the "right" way to architect/modularize something. It's true I can read books, but there is no substitute for practicing 40+ hours per week..
I would say that's the problem with the hiring process. I worked for a company (sadly as a DBA :() where some programmers who have been there for years were absolute idiots. They could whip code, in the required format, but they couldn't understand what it meant. Ie someone was supposed to wrap something in a database transaction. They had a class and used it as class.do operation. So they create a database connection, wrap it in a transaction, and then are like class.do operation and it doesn't do anything. I looked over their shoulder for one minute and realized that nowhere were they somehow attaching the database connection with class so that class was probably using its own connection. Anyway......you get all kinds of people....
There seem to be people who memorize all the syntax of a language and a standard library. On interviews (which they can get because their previous work experience was in a job similar to the new job, so HR favors their resume) they can answer all sorts of Trivia on the libraries (of say C# or Java). But then when they program, if you give them a task that falls outside of a normal pattern forget it... Then there are more fundamentalists like me. I know the various programming constructs and can usually do almost whatever I want. But I don't know everything about the libraries. I need a C# or Java library reference to program in them. But even without a library, I can implement most things. Unfortunately I don't get much of the interview trivia so it is harder for me to pass. But since most of my jobs have been SQL Development jobs, I don't even get a chance at the interview trivia because most HR departments want you to get a new job exactly like your old job because it is lower interest. It makes it hard to do something different or to grow.
I meant good luck due to the price. Most companies I have worked for (including a giant real estate firm) see Oracle as so expensive that even a single instance is tightly locked down and only for mission critical things. They also tend to use other databases for less sensitive things...ie Microsoft SQL Server, Sybase, etc.. Now I work for one of the most successful asset managers, and even they only use Oracle for their financials/HR and the rest they use sybase for. A single instance running on a single machine is super expensive. A cluster is even more expensive than that.
Even my college has Oracle so locked down that if you don't have a class that requires Oracle, you don't get access. And they lock you out as soon as the semester ends. Meanwhile MySQL you can have all the access you want.
Many of the NoSQL sources scale better than a normal database and are available cheap. Oracle costs a fortune, and if you want to run Oracle on a cluster good luck. They also don't let you publish benchmarks without their permission. But most people I know who use Oracle claim it totally beats everything else (without further clarification). DB2 includes a cluster edition that is also quite good. It uses a shared nothing architecture. But none of these solutions are free. Also teradata is also cited as a good parallel database. If you are a start-up and your choice is a NoSQL solution that is almost free or 100,000+ for some commercial parallel database, which do you go to?
But no matter what you will consume resources with a relationship database on ensuring consistency (which many times is what you want but not 100% of the time). Amazon's Dynamo works by not caring so much about consistency and trading consistency for availability of the overall service. For a shopping cart it is fine, but you wouldn't want to do your credit card processing using it. Google's GFS is optimized to do the file operations that google does the most. However there was an article in the ACM not that long ago comparing Map Reduce (Hadoop's implementation) against two parallel databases, and it lost. OF course the Parallel Databases were all not free....and hadoop is....
So overall I'd say the decision comes down to price mostly (as it does with most startups). If you can make do with one server than sure do PostgreSQL (or mySQL...although they always tried to force licensing for commercial products even though it is GPL...). If you need a cluster, both have clustering solutions, but as far as I can tell they are not as good as the commercial Parallel databases. If you have lots of money then sure go with Oracle, it seems through word of mouth Oracle is the best for both parallel and stand alone in terms of performance. DB2 was good enough for a former job. They had terabytes in the mid 1990's using about 20 servers. Now that the hardware is much better I'm sure it scales even better.... But if money is a consideration, then go with an open source noSQL solution. A lot of people now swear by Cassandra, I haven't had a chance to check it out yet.
That's where I originally saw this trick, in some list of common interview questions. Anyway I wouldn't have figured it out on my own...
But none of my employers have been disappointed in my work...Although maybe in an embedded system saving the RAM from an extra variable might matter. But I'm not sure a single integer would make any difference in the grand scheme of things....
As an undergrad, one of the schools I went to tried to sell either a Mathematics dual major or a minor to the computer science students... The argument was that mathematics classes aren't necessarily going to be useful in what you do, there are many jobs where solving a differential equation does not matter.... But that by solving the math problems you learn to pay attention to the details and to analyze things breaking complex processes into pieces. The physics teacher used the same argument for physics saying it makes you better pay attention to detail and problem solve.
Anyway I don't know if any of that is true or not. I had a mathematics major friend who claimed that by locking himself away for a few years and solving some proof, somehow it would magically increase his analytic skills and make him more employable. I don't know about that...
I have a math minor, I'm not sure it helps that much. I have a "normal" programming job. And looking on the various job sites, most programming jobs seem to be linking some type of data to a database, either processing it, creating a web front end for it, etc... basic corporate development. Mostly it doesn't require more than high school algebra on the math skills. I see a lot of people considered "good programmers" who don't even understand Big O notation. But it's good enough for most stuff. Many of them intuitively know that a hash table is fast for lookups, and a sorted list is good if you need fast lookups and an order even though they don't know BIG O notation. In my jobs, the only really "advanced" math skill I pulled out was topological sorting for dependencies because I made a calculation engine. Also once I saw some code for a bisection method, which was mislabeled newton's method and obviously cut and pasted online. But an awful lot of the numerical methods have the formulas posted online with directions, so it seems like even the occasional numeric method is no problem. Most people's business reports are full of averages and percent increases which are all easy to do...
I would add that the logic is easy. I mean even as an 8th grader I could understand the and/or/xor/not. The only thing that I really picked up from a math class was DeMorgan's laws (I kind of knew them by thinking through the problems...but not the name of the law or that you could apply it generically to any expression without thinking) and I have actually used them on occasion (I also picked up disjunctive/conjunctive normal form but I don't use those in programming....). But actually I found that programming made the logic portion of discrete math super easy for me when I got to it because I wasn't really learning much new stuff. Also even boolean Algebra was easy because A+B = A OR B and A*B = A AND B which mapped back to programming....
But anyway I also witnessed people struggle with logic and truth tables in college. But as long as you understand AND/OR/NOT and how things map to them, you can easily enumerate out the possibilities for a truth table, and simplify most expressions. DeMorgan's law is also useful for simplifying expressions sometimes, but mostly it doesn't matter. You whether you use De Morgan's law or not, the expression will work.
The important thing to remember is that Algorithms often take a long time to get right. Even something as simple to us now as binary search took years for a correct implementation to appear. The rule should be do the simplest thing first and then if it is too slow optimize.
Programs are written more to be read by humans. That's why languages like Python/Ruby/Perl/Ruby/ASP.NET/Java are all becoming more favored than C. They are easier to write and easier to read (Perl is debatable...but if done right it is readable..). For example, if someone used:
a = a xor b
b = a xor b
a = a xor b
to swap two integers instead of the more common way of temp = a; a = b; b = temp; I'd probably strangle them.... There is an easy way to do it that performs well, so there is no need to go to "advanced" tricks.
Anyway the more clever the code is made, often the more assumptions it makes. And then when something breaks you run into trouble. For example, maybe you have a list and the simplest thing is to linear search it via an iterator and the performance is fine. Now maybe someone decides to prematurely optimize it using a hash table to look things up. They define the size of the hash table and figure it won't grow bigger than that. Then it does and the code crashes. Or they write an expandable hash table but then end up with bugs in the memory allocation code. The sequential search would have been easier....
Anyway time = money. Quite often after investigating a bug, I won't be allowed to fix it because it is too expensive (if I touch the code, we end up owning it, and if the vendor corrects the code, they charge support time on our contract...), so they instead prefer to work around it.
Well some stuff is sue happy but other stuff doctors should be sued over. Mostly it is sue happy. I recall a court case on jury duty (thank god I was dismissed) where the defendant didn't like the way a doctor adjusted her muscle so she was suing.
It really depends though, if a doctor causes a mistake that makes someone disabled for the rest of their life, then you have to sue (due to no health care among other things) in order to have money to treat the condition and for the person to live without needing to work. Should this ever be more than 10 million (probably not).
If a doctor leaves his instrument inside you and then takes them out without any ill will, then probably you should just sue and get medical bills only, and any lost work due to recovering from the second surgery. And there should be some penalty for the doctor to encourage him to be more careful. Whether this is some type of sanction/suspension/fine levied directly against the doctor who knows.... Now the doctor gets sued and the insurance pays out...so it makes no difference to the doctor. And even good doctors have to pay out a fortune for insurance....
It really depends, but I don't think anyone should be getting 100 million out of pain in suffering... Now if a mistake from a doctor causes a condition that will take 100 million in medical treatment over the course of someone's life, then maybe they need 110 million (money for medical treatment and 10 million in lost lifetime wages....). I don't know.
Totally eliminating the ability to sue would result in people having no recourse from medical mistakes. A medical mistake can ruin your lifetime earnings (today I would think it is around 3 or 4 million for the average person, but I'm not sure) and cause huge medical bills both of which a victim needs to be compensated for. Also a doctor needs to have sanctions directly from him. Whether it is a fine into a fund to handle medical mal practice, or a payment directly to the victim who knows. But the current situation where the insurance pays out doesn't affect doctors at all...they have to pay for insurance regardless...