Please don't get the wrong impression from this thread. I've been searching for programming jobs lately and the vast majority of them are the sort of thing the blog post is talking about: databases, business rules, and user interface, where the UI is mostly web these days. Note how the posters in this thread who say higher math doesn't get much use are speaking from personal experience, and those promoting it are talking in the abstract. Yes, there are jobs where you need to know advanced stats, linear algebra and calculus, but it's really the minority of programming jobs. And even then stuff like physics simulations are likely to be filled by someone with physics expertise who can also program, rather than "pure" programmers who know calculus. (Bioinformatics may be another story.)
My CS department in college required three semesters of calculus and two of physics. I'd done enough real-world programming by then to know it wouldn't make a better programmer. I did okay, but they certainly weren't my favorite courses. And y'know, I've never gotten paid to use any of that knowledge. I once had a discussion with a coworker about polynomial and exponential functions, but that was so he could draw a particular shape of curve in the UI. Calc and linear algebra have been essentially for learning computer graphics, and I recently got a hand-derive a function to interpolate smooth motion (calculate displacement as the integral of a quadratic velocity curve). But I haven't succeeded in getting anybody to pay me for that stuff.
The best way to find out if you're a decent programmer is to write a lot of programs. It really does seem to be a skill that you either have or you don't, to the extent that people from non-technical backgrounds will wind up falling into programming positions. I know a pretty good developer whose degree is in theater, and great one who dropped out of a biology PhD program. (Though the latter guy may have decent math skills, I dunno.)
So please don't discount a CS degree if that's what you really want. They may have some tough math requirements, but CS curricula are not very in touch with the real world. Even most academic computer science is discrete math, which is quite a bit different than calculus and may be more your sort of thing. That said, I'm not sure any of that will be useful for you if what you really want to do is system administration. (I'm not familiar with the formalities of that job market but it seems to me that the best sysadmins are self-taught, to an even greater degree than programmers.) But if you're considering a career in software development and only switching to sysadmin work because of math, you've got the wrong impression of software development.
Go out and do some open source work if you want a sense of real world programming. And maybe consider a software engineering degree. I'm skeptical of how many software engineering programs are really in tune with reality, but at least they'd probably have less pointless math requirements.
hGetContents is only *technically* typesafe
on
Haskell 2010 Announced
·
· Score: 2, Informative
As the parser needs more data, the run-time system will cause hGetContents to read another block. So, here we have an example of a pure function that's indirectly triggering IO, and it's doing it all without violating the constraints of the type system.
Actually hGetContents cheats by using unsafeInterleaveIO. It's a cool hack, but lazy IO is an inherently risk business. For instance, if your program later wrote back changes to your scene file, the result is undefined. There's no guarantee of when the program is done reading the file. If you keep this in mind it's no problem, but if all IO worked this way you'd go insane. (Also consider the problem of error handling if there's a disk error.)
f by "data" you mean data in files under, say, Resources in the app bundle, yes, it can be shared. If by "data" you mean the data segments in the executable, no, it's not shared - a fat binary is just a bunch of Mach-O binaries with a special header wrapped around them, and each Mach-O binary has a full set of text/data/etc. segments.
That's how I used to think it worked too, but then I had to modify a universal binary by hand one day. Turns out that the compiler tools are smarter than that.
My recollection is that the layout is something like this (for a PPC32/x86 binary):
1. Universal header
2. PPC32 Mach-O header
3. PowerPC code segment
4. x86 Mach-O header
5. x86 code segment
6. Data segments
Both architectures get positive offsets to refer their data, so they work just fine. Sure the PowerPC Mach-O "file" has a bunch of useless crap in the middle of it, but the Mach-O loader doesn't notice since those byte ranges aren't mentioned in the PowerPC header. Pretty clever.
You can confirm this by running strings(1) on a Universal binary and seeing that there's only one copy of the string constants.
The last two states I've lived in had a section of their income tax forms for paying out-of-state sales tax. If you wanted to itemize everything you bought that year, you could. But I imagine most people pick the option of paying a small flat tax and only itemizing very large purchases. Either way, it's a required section of the state's income tax return. (Though you could of course claim to have made no such purchases.)
Yeah, working for a big corporation can suck at times because to really get ahead there you have to do OYOT stuff, but that's something that society's most productive - and essential - members will ALWAYS do.
Tell that to the guy who wrote Stickies. Apple asserts ownership over any coding you do while working for them, even on your own time.
The idea is that you'd only bother with a manual count if one of the candidates demands it. Which would mostly happen on close elections, or when the electronic vote count was at odds with what exit polls showed (or some other reason for suspicion existed). I suppose there'd still be the opportunity to fix only elections where an upset occurred, since no one would bother to contest them. So ideally a random sampling of elections should re-counted to keep everyone honest. Presidential elections would almost always have to be checked since the stakes are so high.
That is to say, you're adding the an auditing ability, so the basic rules of auditing apply. As for electronic voting systems without any voter-verifiable paper trail, that's just insanity.
I've been using a Mac user since System 6, and never knew about the command-drag behavior. Of course now that I do know about it, I can't actually use it because of this bug. But, um, theoretically speaking it sure would be handy.
The study in question is Shanghai Jiao Tong University's Academic Ranking of World Universities. The Wikipedia page notes it's been cited by The Economist, and that the authors have presented the methodology in international academic forums. I first heard of the study when a European university I was looking applying to cited it.
It does look like Google provided this more as an online service, albeit an indefinite one. So your analogy is apt. Though only providing refunds as store credit is a little skeezy.
Movies (and music, and software) are traditionally considered products, not services. Nowadays there are plenty of folks willing to sell you subscriptions to these things, but Google gave the option to buy these videos outright, with no time limitations. And the customers would have been able to watch them indefinitely, or resell them, or loan them to friends, except for the artificial restrictions of the DRM. That's the main problem with DRM: it limits the concept of "ownership" to be whatever the seller chooses, even if that's more restrictive than what the law allows. Apple's changed the rules on FairPlay before, so not are they limiting your rights, they're doing it after the fact.
I'm very encouraged that things seem to be turning around, though. Five years ago, I'd have never guessed major labels would be selling unprotected tracks.
Laissez-Faire capitalism is in one sense the most free because it puts least restriction on the players in the market. It's sort the of BSD approach to running an economy. But that form of capitalism isn't stable. It inevitably seems to lead to an imbalance, as the rich and powerful leverage their existing success to give themselves an advantage in gaining more money and power.
Thus, during the 20th century, we moved over to a regulated system, that tries to use the law to enforce principles of political freedom. We sacrificed freedom of action for the developers (corporations and lobbyists) to preserve certain rights of the users (consumers and workers). This represents a GNU-style of "free" market.
From this analysis, we can conclude once and for all that the GPL is superior. Join us now, hackers, and you'll be free!
See our progress log for more info on the Mac port. If I'm lucky, I might be able get the cross-platform multiplayer working this week, which is what's holding up the (private) beta release.
I'm kind of surprised it doesn't work in Bootcamp.
When GSM service was introduced to the US, the normal frequency bands had already been assigned, so the FCC gave out two new ones. You need a tri-band or quad-band GSM phone if you want to it work both in the US and the rest of the world. Though some Latin American countries have the infrastructure for both.
My computer only has 256Mb's of RAM to run bloated IDE's on I know of a local programming consultancy that deliberately gives its developers RAM-starved workstations. They bill by the hour, so the more time everyone waits for their IDE to page in, the more money the firm makes.
On the other hand, my company's money comes from direct-to-consumer sales, much like Joel's does. I think this makes for a much nicer work environment.
Yes, you would be arrested because sex with anyone under 18 for money in Thailand is illegal and the U.S. and Thailand have legal extradition. In the leaflet that came with my passport it says:
US citizens who travel abroad to engage in illegal activities, such as drug trafficking, child exploitation, and human trafficking, may be subject to arrest and prosecution upon their return to the United States.
This sounds like an attempt to keep people like Gary Glitter from falling through the cracks, and as long as they restrict it to those sort of crimes, I'm fine with it.
It is not the job of corporations to do shit about freedom... Here I disagree. I don't expect McDonald's to start lobbying over NSA wiretaps or somesuch. But corporations have the same morally responsibilities as anyone else when it comes to the areas they are involved in. I agree that they rarely do so, and it's ultimately up to the people and their governments to keep things in check. That does not absolve the executives from responsibility for their decisions. They have a responsibility to their investors, but they have greater responsibilities as well. You get a lot of leeway to make business decisions before you run the risk of shareholder lawsuits.
...real encyclopedias have teams of experts and editors factchecking everything
My experience in the work world leads me to believe this probably isn't true. Sure the encyclopedia companies try to project that image, but you know that sometimes it's just some poor intern who gets shafted on a Friday. "Asok, send me the updated Wombats entry before you leave today." We know Wikipedia's faults because their process is more transparent.
Well maybe that what they'll use it for, but it's not what it's useful for. I used to work with a woman who had done this sort of research, although it might have been with EEG, which has better temporal resolution. The idea was to ask the subject questions (e.g. "do you know this woman?"), and try to detect a recognition response. Apparently, this could be done fairly reliably, and was difficult to fool. But this was on regular subjects, probably college students, so they didn't have any training at resisting interrogation. And the technique is no good for open-ended questions like "did you kill Mr. Smith?"
Personally I oppose this on the grounds of privacy. The government shouldn't be able to look into my brain, period. Sure I can think of movie-plot scenarios where this would be a good idea, but I think it'd be hard to set firm limits if it gets used at all.
Character #2665, "BLACK HEART SUIT". I don't think Unicode's general enough for you to use it as a combiner, though. But a Unicode-savvy version of LaTeX probably can. Keep that in mind the next time you want to annoy your math professor.
Like say, those of us who went into the field 'cause we liked it. If I wanted to be a manager, I'd have gone to business school in the first place. I hate when people just automatically assume that if you're successful, you'll inevitably end up in management. It's even in TFA: "The time period one spends as a programmer is becoming compressed." Like it's just a natural stepping-stone.
I'm a programmer, I'm proud of it, and I'm glad I can make a living at it. The head research programmer at my last job was 40, and still hacking Scheme and C. I hope that's where I'll be when I'm 40. Maybe it won't be possible, but if I have to go back to school to retrain, the last thing I'm getting is an MBA. I'm gonna look around for another career I like.
Say you're applying some filters in Photoshop. And say each pixel requires a whole bunch of CPU instructions to calculate. Then you might have what's called a CPU-bound task. But you know your new MacBook has an upgradable processor socket, so you try swapping in a faster one, and indeed your filters finish faster. Good, you say. Let's try an even faster CPU. And you stick in a really high end chip, but now you don't get any more improvement.
What's going on? Each pixel is still taking the same number of cycles, but those cycles are flying by so fast that the memory bus can't move pixel data in and out fast enough. So the CPU is idling part of the time waiting data to process. The point at which this happens depends on the task. Maybe your Folding@Home client will still be CPU bound with even the fastest process.
Now say you've created a bunch of images, and your boss wants them as JPEGS, instead of PNGs like he told you last week. So you run a batch conversion. These are big files, and your JPEG encoder is really fast, so now it's the hard disk that's the bottleneck. Your conversion won't run any faster on a multi-Opteron server, unless it's got a faster disk. And of course, everyone's familiar with the network being the bottleneck.
Does that make more sense? I guess my point is that upgrading a component will only make things faster if it's the bottleneck. And bottleneck component will be different for different tasks.
The text of the bills says that "A Minister of the Crown may by order make provision for... reforming legislation..." The commentary seems to suggest that this means forcing an immediate vote of the full House of Commons. Is that correct? I guess I don't know what an "order" is in this context.
Any Brits wish to enlighten an ignorant American on your legal terminology?
Please don't get the wrong impression from this thread. I've been searching for programming jobs lately and the vast majority of them are the sort of thing the blog post is talking about: databases, business rules, and user interface, where the UI is mostly web these days. Note how the posters in this thread who say higher math doesn't get much use are speaking from personal experience, and those promoting it are talking in the abstract. Yes, there are jobs where you need to know advanced stats, linear algebra and calculus, but it's really the minority of programming jobs. And even then stuff like physics simulations are likely to be filled by someone with physics expertise who can also program, rather than "pure" programmers who know calculus. (Bioinformatics may be another story.)
My CS department in college required three semesters of calculus and two of physics. I'd done enough real-world programming by then to know it wouldn't make a better programmer. I did okay, but they certainly weren't my favorite courses. And y'know, I've never gotten paid to use any of that knowledge. I once had a discussion with a coworker about polynomial and exponential functions, but that was so he could draw a particular shape of curve in the UI. Calc and linear algebra have been essentially for learning computer graphics, and I recently got a hand-derive a function to interpolate smooth motion (calculate displacement as the integral of a quadratic velocity curve). But I haven't succeeded in getting anybody to pay me for that stuff.
The best way to find out if you're a decent programmer is to write a lot of programs. It really does seem to be a skill that you either have or you don't, to the extent that people from non-technical backgrounds will wind up falling into programming positions. I know a pretty good developer whose degree is in theater, and great one who dropped out of a biology PhD program. (Though the latter guy may have decent math skills, I dunno.)
So please don't discount a CS degree if that's what you really want. They may have some tough math requirements, but CS curricula are not very in touch with the real world. Even most academic computer science is discrete math, which is quite a bit different than calculus and may be more your sort of thing. That said, I'm not sure any of that will be useful for you if what you really want to do is system administration. (I'm not familiar with the formalities of that job market but it seems to me that the best sysadmins are self-taught, to an even greater degree than programmers.) But if you're considering a career in software development and only switching to sysadmin work because of math, you've got the wrong impression of software development.
Go out and do some open source work if you want a sense of real world programming. And maybe consider a software engineering degree. I'm skeptical of how many software engineering programs are really in tune with reality, but at least they'd probably have less pointless math requirements.
Actually hGetContents cheats by using unsafeInterleaveIO. It's a cool hack, but lazy IO is an inherently risk business. For instance, if your program later wrote back changes to your scene file, the result is undefined. There's no guarantee of when the program is done reading the file. If you keep this in mind it's no problem, but if all IO worked this way you'd go insane. (Also consider the problem of error handling if there's a disk error.)
f by "data" you mean data in files under, say, Resources in the app bundle, yes, it can be shared. If by "data" you mean the data segments in the executable, no, it's not shared - a fat binary is just a bunch of Mach-O binaries with a special header wrapped around them, and each Mach-O binary has a full set of text/data/etc. segments.
That's how I used to think it worked too, but then I had to modify a universal binary by hand one day. Turns out that the compiler tools are smarter than that.
My recollection is that the layout is something like this (for a PPC32/x86 binary):
Both architectures get positive offsets to refer their data, so they work just fine. Sure the PowerPC Mach-O "file" has a bunch of useless crap in the middle of it, but the Mach-O loader doesn't notice since those byte ranges aren't mentioned in the PowerPC header. Pretty clever.
You can confirm this by running strings(1) on a Universal binary and seeing that there's only one copy of the string constants.
The last two states I've lived in had a section of their income tax forms for paying out-of-state sales tax. If you wanted to itemize everything you bought that year, you could. But I imagine most people pick the option of paying a small flat tax and only itemizing very large purchases. Either way, it's a required section of the state's income tax return. (Though you could of course claim to have made no such purchases.)
Yeah, working for a big corporation can suck at times because to really get ahead there you have to do OYOT stuff, but that's something that society's most productive - and essential - members will ALWAYS do.
Tell that to the guy who wrote Stickies. Apple asserts ownership over any coding you do while working for them, even on your own time.
The idea is that you'd only bother with a manual count if one of the candidates demands it. Which would mostly happen on close elections, or when the electronic vote count was at odds with what exit polls showed (or some other reason for suspicion existed). I suppose there'd still be the opportunity to fix only elections where an upset occurred, since no one would bother to contest them. So ideally a random sampling of elections should re-counted to keep everyone honest. Presidential elections would almost always have to be checked since the stakes are so high.
That is to say, you're adding the an auditing ability, so the basic rules of auditing apply. As for electronic voting systems without any voter-verifiable paper trail, that's just insanity.
I've been using a Mac user since System 6, and never knew about the command-drag behavior. Of course now that I do know about it, I can't actually use it because of this bug. But, um, theoretically speaking it sure would be handy.
The study in question is Shanghai Jiao Tong University's Academic Ranking of World Universities. The Wikipedia page notes it's been cited by The Economist, and that the authors have presented the methodology in international academic forums. I first heard of the study when a European university I was looking applying to cited it.
It does look like Google provided this more as an online service, albeit an indefinite one. So your analogy is apt. Though only providing refunds as store credit is a little skeezy.
Movies (and music, and software) are traditionally considered products, not services. Nowadays there are plenty of folks willing to sell you subscriptions to these things, but Google gave the option to buy these videos outright, with no time limitations. And the customers would have been able to watch them indefinitely, or resell them, or loan them to friends, except for the artificial restrictions of the DRM. That's the main problem with DRM: it limits the concept of "ownership" to be whatever the seller chooses, even if that's more restrictive than what the law allows. Apple's changed the rules on FairPlay before, so not are they limiting your rights, they're doing it after the fact.
I'm very encouraged that things seem to be turning around, though. Five years ago, I'd have never guessed major labels would be selling unprotected tracks.
I thought it was NYC to San Francisco, and only for burritos.
Laissez-Faire capitalism is in one sense the most free because it puts least restriction on the players in the market. It's sort the of BSD approach to running an economy. But that form of capitalism isn't stable. It inevitably seems to lead to an imbalance, as the rich and powerful leverage their existing success to give themselves an advantage in gaining more money and power.
Thus, during the 20th century, we moved over to a regulated system, that tries to use the law to enforce principles of political freedom. We sacrificed freedom of action for the developers (corporations and lobbyists) to preserve certain rights of the users (consumers and workers). This represents a GNU-style of "free" market.
From this analysis, we can conclude once and for all that the GPL is superior. Join us now, hackers, and you'll be free!
Defcon does use hardware-accelerated audio. But you'd need to take that up with Introversion; my only involvement is with the Mac port.
See our progress log for more info on the Mac port. If I'm lucky, I might be able get the cross-platform multiplayer working this week, which is what's holding up the (private) beta release.
I'm kind of surprised it doesn't work in Bootcamp.
When GSM service was introduced to the US, the normal frequency bands had already been assigned, so the FCC gave out two new ones. You need a tri-band or quad-band GSM phone if you want to it work both in the US and the rest of the world. Though some Latin American countries have the infrastructure for both.
Usually though, aesthetics wins over balance and I just re-use the smiley's paren for the close. (I may be a programmer, but I'm a Mac programmer :)
I know of a local programming consultancy that deliberately gives its developers RAM-starved workstations. They bill by the hour, so the more time everyone waits for their IDE to page in, the more money the firm makes.
On the other hand, my company's money comes from direct-to-consumer sales, much like Joel's does. I think this makes for a much nicer work environment.
In the leaflet that came with my passport it says:
This sounds like an attempt to keep people like Gary Glitter from falling through the cracks, and as long as they restrict it to those sort of crimes, I'm fine with it.
It is not the job of corporations to do shit about freedom...
Here I disagree. I don't expect McDonald's to start lobbying over NSA wiretaps or somesuch. But corporations have the same morally responsibilities as anyone else when it comes to the areas they are involved in. I agree that they rarely do so, and it's ultimately up to the people and their governments to keep things in check. That does not absolve the executives from responsibility for their decisions. They have a responsibility to their investors, but they have greater responsibilities as well. You get a lot of leeway to make business decisions before you run the risk of shareholder lawsuits.
Personally I oppose this on the grounds of privacy. The government shouldn't be able to look into my brain, period. Sure I can think of movie-plot scenarios where this would be a good idea, but I think it'd be hard to set firm limits if it gets used at all.
Character #2665, "BLACK HEART SUIT". I don't think Unicode's general enough for you to use it as a combiner, though. But a Unicode-savvy version of LaTeX probably can. Keep that in mind the next time you want to annoy your math professor.
I'm a programmer, I'm proud of it, and I'm glad I can make a living at it. The head research programmer at my last job was 40, and still hacking Scheme and C. I hope that's where I'll be when I'm 40. Maybe it won't be possible, but if I have to go back to school to retrain, the last thing I'm getting is an MBA. I'm gonna look around for another career I like.
Yeah, I guess I did get a little carried away there. Hopefully it helped somebody, though.
Say you're applying some filters in Photoshop. And say each pixel requires a whole bunch of CPU instructions to calculate. Then you might have what's called a CPU-bound task. But you know your new MacBook has an upgradable processor socket, so you try swapping in a faster one, and indeed your filters finish faster. Good, you say. Let's try an even faster CPU. And you stick in a really high end chip, but now you don't get any more improvement.
What's going on? Each pixel is still taking the same number of cycles, but those cycles are flying by so fast that the memory bus can't move pixel data in and out fast enough. So the CPU is idling part of the time waiting data to process. The point at which this happens depends on the task. Maybe your Folding@Home client will still be CPU bound with even the fastest process.
Now say you've created a bunch of images, and your boss wants them as JPEGS, instead of PNGs like he told you last week. So you run a batch conversion. These are big files, and your JPEG encoder is really fast, so now it's the hard disk that's the bottleneck. Your conversion won't run any faster on a multi-Opteron server, unless it's got a faster disk. And of course, everyone's familiar with the network being the bottleneck.
Does that make more sense? I guess my point is that upgrading a component will only make things faster if it's the bottleneck. And bottleneck component will be different for different tasks.
The text of the bills says that "A Minister of the Crown may by order make provision for ... reforming legislation..." The commentary seems to suggest that this means forcing an immediate vote of the full House of Commons. Is that correct? I guess I don't know what an "order" is in this context.
Any Brits wish to enlighten an ignorant American on your legal terminology?