I was a web app developer once. I'd say there are two good ways of working around browser bugs when working on the front end. One is to use a library on which someone else spent the time fixing the special cases. The other is to have as little in the front end JS as possible -- just enough to get new info from the back end and display it without munging it in the client too much. Oh, and avoid any MS browser for any part of the site to which the general public doesn't absolutely need access.
Now I'm looking into getting back into a non-development IT role or going back to school for something not so much related to computers. I'm kind of burned out on the industry churn.
When I develop something at home because it interests me, sometimes it needs a good deal of math and sometimes it doesn't. If it does, I usually ask for some help. I know some basic matrix algebra, some simple statistics like standard deviations, and some elementary functions of calculus.
I can still do quadratics in my head, but I was never that interested in math even though I didn't have any particular difficulty with it. I'm more of a language guy. My standard college entrance exams point that out quite nicely. I did enjoy word problems and geometric proofs, though. That's part of why I enjoyed programming at first. It's all word problems, as far as the mind can see.
Maybe if I had more math background I'd still be really interested in the field, but simulations and games have always been more fun to run than to write for me. Accounting, for me, sucks big sweaty donkey balls, and so would writing accounting software. I really enjoy writing software to help people communicate, like my old dial-up BBS, telnet BBSes, talkers, forum software, business/client relations sites, NFP websites, and stuff like that. I really hate many web clients, though, as most think $1200 per year for a phone book ad is more reasonable than $2400 just once for a site that actually tells their customers something and can even close a sale without tying up a salesperson. People balk at spending per year for a web presence what they spend a month on billboards. That's why there's so much shitty web code out there, and so many burned-out web programmers. The good clients are out there, but good luck finding enough to keep a shop open. The hard math in independent web shops is figuring out how much money you'll be able to draw month to month.
I'm still thinking about doing my own online store or some niche-target blog/forum with ad support. I just am really sick of dealing with writing and customizing software for other people's businesses. In the meantime, though, I think I'm going to see if another career path might suit me better. Maybe law, or hell maybe construction. That pays well enough for my modest needs and I won't have to worry about non-competes or intellectual property issues if I develop something in my spare time.
The key word in your post is "simple". Business software is a broad category which includes financial forecasting, statistics for the marketing department (real marketing is more than advertising and PR, after all), product defect estimations, and a whole bunch more stuff that requires more than arithmetic.
The question, remember, wasn't how much math was necessary to get a job somewhere doing some kind of software development. The question posed was whether, considering the types of programming there are, whether higher math skills will be necessary to do "truly interesting work" in the field of software development field in the near future.
Do you consider your work "truly interesting"? If you do, good for you. The world will always need people to do it, so you may as well enjoy it if you can. Lots of other people wouldn't call it interesting work, at least not by comparison with the state of the art in large grid applications.
Again, that key and subjective term "interesting" rears its ugly head. Is writing another office suite really "interesting"? The answer depends on who's answering. Is writing code for the newest, sleekest phone's new embedded OS and wringing out that extra 0.003% of performance in the kernel's paging code interesting? It probably is to most CS and EE types.
The fact is, people who use software development as a tool for communications and commerce often have a different idea of "interesting" from people who write the software everyone builds their stack above. The guys writing models of EM radiation they should be seeing from distant galaxies, testing those models with real-world data, then looking for different wavelengths because they're not finding what they expected have an entirely different use for the computer from eBay, Microsoft, Nokia, or Novell. They're probably not interested too much in military cryptanalysis, but both the physicists and the cryptanalysts are using some serious math. The guys at Motorola, Nokia, et al might be using some serious math, too. You can be sure the folks at Google, AMD, Intel, nVidia, IBM, TSMC, and the like are.
Not many people do work with data sets that size. However, some people only consider their work "interesting" when they are on the cutting edge of their field. It's one of those words for something subjective that people regularly take for objective. It also happens to be central to the orignal question. If the poster of the question has a different set of interests than the author of the cited article, then he could easily find that there is work interesting to him which doesn't require math more advanced than basic high-school algebra (and often quite a bit less).
If digging through old log files looking for certain flag strings is "interesting" to someone, then they don't need much math for that. If they want to keep simple statistics on those strings, that's a little more. If they want to chart the deviations of the proximity of two different strings across multiple files, they're going to need more. If they want to figure the trajectory of a rocket-propelled space vehicle as it enters and leaves the gravity well of a gas giant, then seventh-grade math just isn't going to get them started. Lots of people would agree that working at Los Alamos or the JPL on really tough problems is the more interesting type of programming. Some people would be shocked to find out that others actually enjoy writing CRUD applications, device drivers, and log analyzers.
Hell, some people enjoy writing accounting applications, or even enjoy being accountants and using it! Accounting does involve quite a bit of math, BTW, and not always just arithmetic. A mathematician or a physicist would be hard-pressed to do proper financial planning and corporate auditing like a CPA can for clients, though. There's a lot of domain knowledge about best practices, laws, regulations, and government incentives that an accountant needs to know.
Some math is necessary for all programmers. Higher math is necessary when it's domain knowledge. Lots of work with computers is in graphics, simulations, modelling, encryption, and other fields that absolutely need math for their very basis. Other work requires advanced math for the sheer scale of the problems, because at some point throwing more expensive hardware at a problem just won't scale it vertically.
To get a good, fast horizontal scaling someone needs to understand how to make the code work in parallel by some means. The front-end programmer of a vastly parallel system might not need to know quite how the back-end works. The guy who develops the back-end sure needs to, though, and probably so does the guy who supports the front-end developer in using the back-end services. Many, and I think most, CS-types would consider the back-end the interesting part of a parallel system. That's the part that needs the advanced math -- the interesting part, just as the article states.
CS is a subset of mathematics. Programming involves very little CS, though, unless you're working on an unsolved or especially thorny problem. Boolean logic, arithmetic, and very basic algebra can get a programmer very far in certain domains. Lots of programming domains involve higher math as part of the domain knowledge, though. I'd let someone without calculus write me a USB driver for some new device without hesitation. A good log analyzer doesn't take much mathematics and can be really useful.
I'd really like the Census Bureau, NASA, the publisher of my accounting software, the game developer providing the 3D and physics engines for my new games, the utility company, the IRS, the guy recreating a car accident with simulation software for court, and the guys modeling the effects of the fertilizer plant upstream on my town's drinking water to have programmers who know more mathematics than is necessary for a log analyzer program.
I think when people say that all "interesting" programs require higher mathematics, what they generally mean is that any program which is interesting to sit down and write does. Interest is a subjective thing, but there are certainly people who are interested in complex problems. Most complex problems in programming require lots of mathematics. Complex problems can exist in design and usability of applications which are fairly straightforward to actually implement after they are designed.
If someone wants to develop software which doesn't require a lot of mathematics, there are certainly opportunities to do that. They may not be as interesting as those opportunities that do require lots of mathematics. A job that's boring is still a job. Whether someone wants to put up with a boring job is another issue.
That's all not to mention rather more mundane uses like figuring a bill at a restaurant, figuring the tip from the bill, paying your taxes, or figuring out how many gallons of water your utility needs to provide for X number of households when the weather dictates Y average consumption per household. Three of those have nothing to do with physics, and one is only a degenerate case of almost being related to physics (as in you can't create extra water in the main line by some trick of multiplication).
Encryption is used for more than credit card numbers. In many parts of the world, it is used to secure one's communications from a corrupt and autocratic government. If only people who have something to hide hide it, then it's easy to tell who's got something to hide. People who wear jackboots and carry clubs don't decrypt your data. They beat you until you tell them what you sent.
If you have no problem using only clear channels until you need to avoid ID theft or wire fraud, then nobody's suggesting you, personally, must use encryption for anything else. Others place a different level of value on their privacy, and it's okay if they want to encrypt everything they do.
If you only encrypt the important things, then anything encrypted is known to be important. It's also easier to miss encrypting something that really is important if you only encrypt things part of the time.
The overhead of HTTPS is a drawback. That's especially true of the dedicated IPv4 address which is really an outdated security measure anyway. It's been possible to have multiple IPs on the same shared hosting server for a very long time now. Dedicating an IP to a site that's under the same file system and server instance isn't real security at all. Maybe guaranteeing that a site stays on the same IP is helpful (although there's some room to debate that) but saying that site A is on IP X and has to staty there for the certificate to be valid isn't the same as saying that site B must then be on some IP other than X. That's a problem of HTTPS and the current certificate systems, though. It's something to consider when your chosen protocols are HTTP or HTTPS, but if the dedicated address issue was cleared up many more people would consider HTTPS for more traffic than uses it today. The loss of third-party caching (which losing is as often or more often a feature than a problem), the encryption overhead, and such just aren't enough to deter many people from using HTTPS.
The horrible situation the browsers are in of such a stark contrast between totally trusting certain CAs (more often than not including the government of the PR of China) and completely disrespecting private CAs doesn't help. A simple and straightforward "this is encrypted and publicly trusted" vs. "this is encrypted and is signed by someone we don't know to be trusted" vs. "this is not encrypted" three-state interface makes more sense to me than "trust this" and "you are almost certainly the victim of a scam if you use this certificate".
They could just as easily release a proprietary binary-only patch to your BSD code, a proprietary-licensed patch with available source code, or a GPL patch to your BSD project. In any of those cases, you'd lose ownership of thbeir improvments. With the GPL, you'd not own their improvements (and legally you wouldn't "own" it under BSD anyway, although you'd have broader control of it). With the GPL, however, you'd always have the right to use and improve on the imrpovements to your work, but only under the GPL. It's a tradeoff of one set of freedoms for another.
Lots of GPL projects require that copyrights be assigned to the project team in order for code to be released in the mainstream project. That doesn't keep people form maintaining patch sets or making forks, but it does mean the project team can do lots of things with the code. Some offer a contract stating that the copyrights are held jointly with the team, and some require a full transfer. Some maintain a requirement that the project team always keep a GPL license, but there's no legal reason you'd have to offer that. Once you own the copyrights, you'd be free to relicense the project from that point however you want. Old releases would still carry the old license, just like with BSD.
At no point do you legally "own" the code some other person releases updating your codebase under the BSD. You get a license to do with it what you will just as much as any other BSD-licensed code, but the copyright holder still owns it. They can release it under as many licenses as they wish.
With the GPL, you can also release a program under two or more licenses as long as you hold the copyrights. Perl is dual-licensed under the GPL and the Artistic License. MySQL for years has been both commercially proprietary and GPL.
Many people find the LGPL more palatable than the GPL. It's less restrictive on those who want to improve your project, but protects the future openness a particular portion of the combinled project more than the BSD license does. It is basically the GPL for an identifiable separate module of a program, whether that's a library, the main code, the interface module, or whatever. It requires that updates to that protected portion are released under the LGPL, but it allows that portion to be used in a program which also contains code under other licenses. There is a lot of talk about "libraries" in the text of the license, but that's just because it was originally designed for libraries. "Library" is defined much more liberally in the license than you'd normally talk about as a library with other developers (including, in version 2,1, "or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License"). LGPL 3 is an addendum of additonal, relaxed terms for the GPL3. The FSF discourages the LGPL in favor of the GPL, but they still promote the LGPL as a choice for people who have ruled out the GPL.
Keep in mind that before ubiquitous web access, projects were sometimes lost to time. Hell, they still are. A BSD-licensed work that's rolled into a proprietary one isn't hurt just as you say -- unless the original project folds and the only remaining copies of the code are in the proprietary project. The GPL really did help that situation.
The GPL also really helps encourage commercial developers to release their imrpovements and sometimes their own original creations as open source, because they know their competitors can't lock it up and improve it only internally (well, they can for internal use only, but not to make their own improvements in a closed-source copy and redistribute it).
The whole idea that you can't have freedom by limiting freedom is just silly. If you don't limit my right to kill you for what you say, then you can't have free speech. Freedom is only ever absolute when only a few people are free and oppressing everyone else. Freedom in the modern Western sense means precisely maximizing the freedom of all the commoners.
The BSD and the GPL are both very valid ways to protect certain freedoms. They just protect different sets of them. The BSD protects the freedoms of the immediate next developer very well. The GPL protects the freedoms of the original developer (nothing out for free that gets locked up) and developers after the immediate next developer (the guy who users the second guy's imrpovements, because they are not proprietary and closed) by limiting the freedom of the guy who might want to close the source. Which is more important depends on one's point of view, and may even differ according to project.
The problem between BSD and GPL tends to be that GPL folks take BSD code and make it GPL-only. This exercises a freedom the BSD folk say they cherish, but it irks them that they lose another freedom. That freedom is to take new changes back into the core project. It's a bit funny to think that the GPL is guaranteeing that very same freedom being taken from the BSD folks from the start, but only to software projects licensed under the GPL from the start. The proper way to handle this is probably for the GPL folks who borrow BSD code to go ahead and release under the GPL, but also to submit their changes back to the original project as BSD-licensed.
Having a copy that can be locked up in a proprietary project later doesn't hurt the GPL folks a bit if they are also guaranteeing that there's always a copy that can't be locked up that way. They lose a slight competitive advantage by writing code the proprietary software shops might possibly use, but that's the price for using BSD-licensed code as a starting point. There's no proprietary lock-in of the code so long as there's also the GPL version. Proprietary mprovements might be made to the BSD version including the GPL developers' improvments that don't get back into the GPL version, but if it's that important the GPL version should have started from scratch with all-GPL code.
Respect the BSD license and the BSD project when borrowing code written under the BSD, even if your code is normally GPL. Then the BSD developers won't bitch and moan about losing a freedom their license was written specifically not to guarantee them in favor of the freedom of others to lock their code away in a different license.
So that's why InstallShield, Wise Installation Studio, and so many other installation systems are all over pretty much every Windows system! Thanks! I was starting to think that when a developer paid hundreds or thousands of dollars per seat for an installer system that meant it wasn't a standard part of the OS, but you've cleared that up for me.
Sure, get the custom-programmed code that requires the input and output of a mainframe rewritten to a $1000 server. The cost should only be a few million. That'd only buy a few new IBM mainframes that would run the existing code faster and more reliably than the old mainframe without any code changes.
Actually, as AC already pointed out, the idea that you'd need to rewrite anything is incorrect. One could for added speed, but the IBM mainframe line runs the code for every IBM mainframe for the last few decades without changes. There are reasons people buy them, you know.
If they are easier, as the article actually says they should be, to manufacture, then hopefully yields will be higher. Time not spent making parts for the bin could then be used for extra litho time if necessary.
If it's an HP AIO, it will work with Mandriva. It will probably work with OpenSuse, Fedora, or other big-name distros. If it's a recentish HP AIO like a PhotoSmart and has the JetDirect hardware built in, the scanner can actually be accessed via the device's web interface if you can't get SANE to read it right away for some odd reason.
You might want to consider adding Mandriva to that list. OOTB, a number of different browsers can be ready for YouTube, Flickr, etc. Not to mention games like Spring, Second Life, Quake 3, and PySol. Kopete or Pidgin for IM. HP printer drivers, including for networked printers -- even supporting the scanners on multi-function devices through JetDirect connections. Burning software, torrent software, graphics software, and many of those other things moderately skilled PC users have come to expect just work out of the box on several distros. Mandriva is one of those.
Using Windows is very easy so long as you don't expect to install it with decent hardware support OOTB or with decent security OOTB. It's so easy to use that within an hour online, it's often being used by someone the owner never intended.;-)
Chromium on Linux uses the NSS DB. The NSS DB on Mandriva 2010 for example trusts both CNNIC and Entrust, at least on my installation I'm using right now.
So do (typically) cURL, OpenLDAP, and a bunch of other packages that aren't even browsers.
Have any guess what packages generally update the NSS DB on a Linux distro? Well, NSS is a Mozilla project, but the recent versions don't have hardcoded trusted roots. Distros are free to update the list, and you're free to manage it yourself using NSS tools. However, there is a preloaded list of certs from Mozilla.
So, long and short of it, Mozilla controls a lot more cert lists than just Firefox.
...as foretold in the song about freedom of expression by the guys calling themselves "Men Without Hats".
S... A... F... E... T... Y... Safety... Dance...
The flip side of the "Safety Dance" single was named "Security". The 12" maxi single included a song called "I Got The Message" along with "Antarctica". "Antarctica" was the only other song on the extended dance mix 12" promo.
The song "Safety Dance" (as titled on the band's apparent homepage) itself was about being allowed to express oneself and the resistance to heavy-handed repression of that expression.
It doesn't need to be 50-60k of code. It just happens to be that way because the developers get into the habit of using the same big JS library for everything. It's understandable, really, because that keeps development time down.
When it becomes a problem, though, the UI and class libraries can be broken out into smaller bits and pieces. There's no need to have animation, server-side file browsing, sorting, and a lot more in an upload progress bar. All the progress bar really needs on the client side is a request for a document, as it's really simple to calculate an upload status from the server side.
The only parts of your JS library you really need loaded client-side all the time are the cross-browser compatibility bits to account for stupid browsers with stupid implementations of the DOM or the HTTPRequest object.
This is one place where some companies could make their customers happier with just some minor tweaking to how they load their JS libs onto the client side and how fancy they get in rendering what are really basic UI updates.
The objective view is the one taken by the shareholders. They don't give a rat's ass about engineering pride so long as the site pulls the same revenues with lower expenses. An 80% reduction in frontend servers for a company using tens of thousands of servers for one guy's yearly pay sounds like a good investment. Even if it's only for a couple of years while they do a top-to-bottom rewrite, it might just pay for a good portion of that rewrite you'd like.
Out of the first 76,633 users, I'm the only person with my plugin selection and my available fonts.
Using Midori for the browser and Mandriva for the OS was a good start, obviously. The User-Agent string doesn't mention the distro name, though. It just says it's under X on Linux on an i686. One in every 25544.33 people (so two others) submitted to the test with Midori on Linux.
Having commercially-licensed fonts that don't come bundled with any OS helps, and how many people have identical sets of plugins?
When I'm really so worried about privacy, I'll be sure to use a browser that reports exactly what a stock XP or Win7 system would report. There's nothing in the world that forces your browser to tell the whole truth about what it can do.
Android is available on both GSM and CDMA phones. You don't have to have a GSM carrier to get a phone running Android.
HTC Hero, HTC Drois Eris, Motorola Droid, and the Samsung Moment are all CDMA Android phones.
I understand most of the CDMA Android phones are locked to specific carriers, and that could be an issue. If your carrier can't get a phone, that's a problem between the manufacturer and the carrier. It's not a CDMA vs. GSM issue that a particular carrier is refusing to secure your OS of choice.
I don't know about "local" carriers. There are plenty of regional carriers like US Cellular and carriers that resell access to other networks like Virgin Mobile. A solid regional carrier with nationwide free roaming can be a good thing.
That said, I want to point out that US Cellular's equipment replacement insurance absolutely bites balls. It's $6 month, $50 deductible, and you have 12 days or so to evaluate the refurbished phone and battery their contract partner (the insurance is actually through a partner, but they chose the partner) sends you to RMA it without being charged again.
I was a web app developer once. I'd say there are two good ways of working around browser bugs when working on the front end. One is to use a library on which someone else spent the time fixing the special cases. The other is to have as little in the front end JS as possible -- just enough to get new info from the back end and display it without munging it in the client too much. Oh, and avoid any MS browser for any part of the site to which the general public doesn't absolutely need access.
Now I'm looking into getting back into a non-development IT role or going back to school for something not so much related to computers. I'm kind of burned out on the industry churn.
When I develop something at home because it interests me, sometimes it needs a good deal of math and sometimes it doesn't. If it does, I usually ask for some help. I know some basic matrix algebra, some simple statistics like standard deviations, and some elementary functions of calculus.
I can still do quadratics in my head, but I was never that interested in math even though I didn't have any particular difficulty with it. I'm more of a language guy. My standard college entrance exams point that out quite nicely. I did enjoy word problems and geometric proofs, though. That's part of why I enjoyed programming at first. It's all word problems, as far as the mind can see.
Maybe if I had more math background I'd still be really interested in the field, but simulations and games have always been more fun to run than to write for me. Accounting, for me, sucks big sweaty donkey balls, and so would writing accounting software. I really enjoy writing software to help people communicate, like my old dial-up BBS, telnet BBSes, talkers, forum software, business/client relations sites, NFP websites, and stuff like that. I really hate many web clients, though, as most think $1200 per year for a phone book ad is more reasonable than $2400 just once for a site that actually tells their customers something and can even close a sale without tying up a salesperson. People balk at spending per year for a web presence what they spend a month on billboards. That's why there's so much shitty web code out there, and so many burned-out web programmers. The good clients are out there, but good luck finding enough to keep a shop open. The hard math in independent web shops is figuring out how much money you'll be able to draw month to month.
I'm still thinking about doing my own online store or some niche-target blog/forum with ad support. I just am really sick of dealing with writing and customizing software for other people's businesses. In the meantime, though, I think I'm going to see if another career path might suit me better. Maybe law, or hell maybe construction. That pays well enough for my modest needs and I won't have to worry about non-competes or intellectual property issues if I develop something in my spare time.
The key word in your post is "simple". Business software is a broad category which includes financial forecasting, statistics for the marketing department (real marketing is more than advertising and PR, after all), product defect estimations, and a whole bunch more stuff that requires more than arithmetic.
The question, remember, wasn't how much math was necessary to get a job somewhere doing some kind of software development. The question posed was whether, considering the types of programming there are, whether higher math skills will be necessary to do "truly interesting work" in the field of software development field in the near future.
Do you consider your work "truly interesting"? If you do, good for you. The world will always need people to do it, so you may as well enjoy it if you can. Lots of other people wouldn't call it interesting work, at least not by comparison with the state of the art in large grid applications.
Again, that key and subjective term "interesting" rears its ugly head. Is writing another office suite really "interesting"? The answer depends on who's answering. Is writing code for the newest, sleekest phone's new embedded OS and wringing out that extra 0.003% of performance in the kernel's paging code interesting? It probably is to most CS and EE types.
The fact is, people who use software development as a tool for communications and commerce often have a different idea of "interesting" from people who write the software everyone builds their stack above. The guys writing models of EM radiation they should be seeing from distant galaxies, testing those models with real-world data, then looking for different wavelengths because they're not finding what they expected have an entirely different use for the computer from eBay, Microsoft, Nokia, or Novell. They're probably not interested too much in military cryptanalysis, but both the physicists and the cryptanalysts are using some serious math. The guys at Motorola, Nokia, et al might be using some serious math, too. You can be sure the folks at Google, AMD, Intel, nVidia, IBM, TSMC, and the like are.
Not many people do work with data sets that size. However, some people only consider their work "interesting" when they are on the cutting edge of their field. It's one of those words for something subjective that people regularly take for objective. It also happens to be central to the orignal question. If the poster of the question has a different set of interests than the author of the cited article, then he could easily find that there is work interesting to him which doesn't require math more advanced than basic high-school algebra (and often quite a bit less).
If digging through old log files looking for certain flag strings is "interesting" to someone, then they don't need much math for that. If they want to keep simple statistics on those strings, that's a little more. If they want to chart the deviations of the proximity of two different strings across multiple files, they're going to need more. If they want to figure the trajectory of a rocket-propelled space vehicle as it enters and leaves the gravity well of a gas giant, then seventh-grade math just isn't going to get them started. Lots of people would agree that working at Los Alamos or the JPL on really tough problems is the more interesting type of programming. Some people would be shocked to find out that others actually enjoy writing CRUD applications, device drivers, and log analyzers.
Hell, some people enjoy writing accounting applications, or even enjoy being accountants and using it! Accounting does involve quite a bit of math, BTW, and not always just arithmetic. A mathematician or a physicist would be hard-pressed to do proper financial planning and corporate auditing like a CPA can for clients, though. There's a lot of domain knowledge about best practices, laws, regulations, and government incentives that an accountant needs to know.
Some math is necessary for all programmers. Higher math is necessary when it's domain knowledge. Lots of work with computers is in graphics, simulations, modelling, encryption, and other fields that absolutely need math for their very basis. Other work requires advanced math for the sheer scale of the problems, because at some point throwing more expensive hardware at a problem just won't scale it vertically.
To get a good, fast horizontal scaling someone needs to understand how to make the code work in parallel by some means. The front-end programmer of a vastly parallel system might not need to know quite how the back-end works. The guy who develops the back-end sure needs to, though, and probably so does the guy who supports the front-end developer in using the back-end services. Many, and I think most, CS-types would consider the back-end the interesting part of a parallel system. That's the part that needs the advanced math -- the interesting part, just as the article states.
CS is a subset of mathematics. Programming involves very little CS, though, unless you're working on an unsolved or especially thorny problem. Boolean logic, arithmetic, and very basic algebra can get a programmer very far in certain domains. Lots of programming domains involve higher math as part of the domain knowledge, though. I'd let someone without calculus write me a USB driver for some new device without hesitation. A good log analyzer doesn't take much mathematics and can be really useful.
I'd really like the Census Bureau, NASA, the publisher of my accounting software, the game developer providing the 3D and physics engines for my new games, the utility company, the IRS, the guy recreating a car accident with simulation software for court, and the guys modeling the effects of the fertilizer plant upstream on my town's drinking water to have programmers who know more mathematics than is necessary for a log analyzer program.
I think when people say that all "interesting" programs require higher mathematics, what they generally mean is that any program which is interesting to sit down and write does. Interest is a subjective thing, but there are certainly people who are interested in complex problems. Most complex problems in programming require lots of mathematics. Complex problems can exist in design and usability of applications which are fairly straightforward to actually implement after they are designed.
If someone wants to develop software which doesn't require a lot of mathematics, there are certainly opportunities to do that. They may not be as interesting as those opportunities that do require lots of mathematics. A job that's boring is still a job. Whether someone wants to put up with a boring job is another issue.
That's all not to mention rather more mundane uses like figuring a bill at a restaurant, figuring the tip from the bill, paying your taxes, or figuring out how many gallons of water your utility needs to provide for X number of households when the weather dictates Y average consumption per household. Three of those have nothing to do with physics, and one is only a degenerate case of almost being related to physics (as in you can't create extra water in the main line by some trick of multiplication).
Encryption is used for more than credit card numbers. In many parts of the world, it is used to secure one's communications from a corrupt and autocratic government. If only people who have something to hide hide it, then it's easy to tell who's got something to hide. People who wear jackboots and carry clubs don't decrypt your data. They beat you until you tell them what you sent.
If you have no problem using only clear channels until you need to avoid ID theft or wire fraud, then nobody's suggesting you, personally, must use encryption for anything else. Others place a different level of value on their privacy, and it's okay if they want to encrypt everything they do.
If you only encrypt the important things, then anything encrypted is known to be important. It's also easier to miss encrypting something that really is important if you only encrypt things part of the time.
The overhead of HTTPS is a drawback. That's especially true of the dedicated IPv4 address which is really an outdated security measure anyway. It's been possible to have multiple IPs on the same shared hosting server for a very long time now. Dedicating an IP to a site that's under the same file system and server instance isn't real security at all. Maybe guaranteeing that a site stays on the same IP is helpful (although there's some room to debate that) but saying that site A is on IP X and has to staty there for the certificate to be valid isn't the same as saying that site B must then be on some IP other than X. That's a problem of HTTPS and the current certificate systems, though. It's something to consider when your chosen protocols are HTTP or HTTPS, but if the dedicated address issue was cleared up many more people would consider HTTPS for more traffic than uses it today. The loss of third-party caching (which losing is as often or more often a feature than a problem), the encryption overhead, and such just aren't enough to deter many people from using HTTPS.
The horrible situation the browsers are in of such a stark contrast between totally trusting certain CAs (more often than not including the government of the PR of China) and completely disrespecting private CAs doesn't help. A simple and straightforward "this is encrypted and publicly trusted" vs. "this is encrypted and is signed by someone we don't know to be trusted" vs. "this is not encrypted" three-state interface makes more sense to me than "trust this" and "you are almost certainly the victim of a scam if you use this certificate".
They could just as easily release a proprietary binary-only patch to your BSD code, a proprietary-licensed patch with available source code, or a GPL patch to your BSD project. In any of those cases, you'd lose ownership of thbeir improvments. With the GPL, you'd not own their improvements (and legally you wouldn't "own" it under BSD anyway, although you'd have broader control of it). With the GPL, however, you'd always have the right to use and improve on the imrpovements to your work, but only under the GPL. It's a tradeoff of one set of freedoms for another.
Lots of GPL projects require that copyrights be assigned to the project team in order for code to be released in the mainstream project. That doesn't keep people form maintaining patch sets or making forks, but it does mean the project team can do lots of things with the code. Some offer a contract stating that the copyrights are held jointly with the team, and some require a full transfer. Some maintain a requirement that the project team always keep a GPL license, but there's no legal reason you'd have to offer that. Once you own the copyrights, you'd be free to relicense the project from that point however you want. Old releases would still carry the old license, just like with BSD.
At no point do you legally "own" the code some other person releases updating your codebase under the BSD. You get a license to do with it what you will just as much as any other BSD-licensed code, but the copyright holder still owns it. They can release it under as many licenses as they wish.
With the GPL, you can also release a program under two or more licenses as long as you hold the copyrights. Perl is dual-licensed under the GPL and the Artistic License. MySQL for years has been both commercially proprietary and GPL.
Many people find the LGPL more palatable than the GPL. It's less restrictive on those who want to improve your project, but protects the future openness a particular portion of the combinled project more than the BSD license does. It is basically the GPL for an identifiable separate module of a program, whether that's a library, the main code, the interface module, or whatever. It requires that updates to that protected portion are released under the LGPL, but it allows that portion to be used in a program which also contains code under other licenses. There is a lot of talk about "libraries" in the text of the license, but that's just because it was originally designed for libraries. "Library" is defined much more liberally in the license than you'd normally talk about as a library with other developers (including, in version 2,1, "or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License"). LGPL 3 is an addendum of additonal, relaxed terms for the GPL3. The FSF discourages the LGPL in favor of the GPL, but they still promote the LGPL as a choice for people who have ruled out the GPL.
Keep in mind that before ubiquitous web access, projects were sometimes lost to time. Hell, they still are. A BSD-licensed work that's rolled into a proprietary one isn't hurt just as you say -- unless the original project folds and the only remaining copies of the code are in the proprietary project. The GPL really did help that situation.
The GPL also really helps encourage commercial developers to release their imrpovements and sometimes their own original creations as open source, because they know their competitors can't lock it up and improve it only internally (well, they can for internal use only, but not to make their own improvements in a closed-source copy and redistribute it).
The whole idea that you can't have freedom by limiting freedom is just silly. If you don't limit my right to kill you for what you say, then you can't have free speech. Freedom is only ever absolute when only a few people are free and oppressing everyone else. Freedom in the modern Western sense means precisely maximizing the freedom of all the commoners.
The BSD and the GPL are both very valid ways to protect certain freedoms. They just protect different sets of them. The BSD protects the freedoms of the immediate next developer very well. The GPL protects the freedoms of the original developer (nothing out for free that gets locked up) and developers after the immediate next developer (the guy who users the second guy's imrpovements, because they are not proprietary and closed) by limiting the freedom of the guy who might want to close the source. Which is more important depends on one's point of view, and may even differ according to project.
The problem between BSD and GPL tends to be that GPL folks take BSD code and make it GPL-only. This exercises a freedom the BSD folk say they cherish, but it irks them that they lose another freedom. That freedom is to take new changes back into the core project. It's a bit funny to think that the GPL is guaranteeing that very same freedom being taken from the BSD folks from the start, but only to software projects licensed under the GPL from the start. The proper way to handle this is probably for the GPL folks who borrow BSD code to go ahead and release under the GPL, but also to submit their changes back to the original project as BSD-licensed.
Having a copy that can be locked up in a proprietary project later doesn't hurt the GPL folks a bit if they are also guaranteeing that there's always a copy that can't be locked up that way. They lose a slight competitive advantage by writing code the proprietary software shops might possibly use, but that's the price for using BSD-licensed code as a starting point. There's no proprietary lock-in of the code so long as there's also the GPL version. Proprietary mprovements might be made to the BSD version including the GPL developers' improvments that don't get back into the GPL version, but if it's that important the GPL version should have started from scratch with all-GPL code.
Respect the BSD license and the BSD project when borrowing code written under the BSD, even if your code is normally GPL. Then the BSD developers won't bitch and moan about losing a freedom their license was written specifically not to guarantee them in favor of the freedom of others to lock their code away in a different license.
So that's why InstallShield, Wise Installation Studio, and so many other installation systems are all over pretty much every Windows system! Thanks! I was starting to think that when a developer paid hundreds or thousands of dollars per seat for an installer system that meant it wasn't a standard part of the OS, but you've cleared that up for me.
Sure, get the custom-programmed code that requires the input and output of a mainframe rewritten to a $1000 server. The cost should only be a few million. That'd only buy a few new IBM mainframes that would run the existing code faster and more reliably than the old mainframe without any code changes.
Actually, as AC already pointed out, the idea that you'd need to rewrite anything is incorrect. One could for added speed, but the IBM mainframe line runs the code for every IBM mainframe for the last few decades without changes. There are reasons people buy them, you know.
If they are easier, as the article actually says they should be, to manufacture, then hopefully yields will be higher. Time not spent making parts for the bin could then be used for extra litho time if necessary.
If it's an HP AIO, it will work with Mandriva. It will probably work with OpenSuse, Fedora, or other big-name distros. If it's a recentish HP AIO like a PhotoSmart and has the JetDirect hardware built in, the scanner can actually be accessed via the device's web interface if you can't get SANE to read it right away for some odd reason.
You might want to consider adding Mandriva to that list. OOTB, a number of different browsers can be ready for YouTube, Flickr, etc. Not to mention games like Spring, Second Life, Quake 3, and PySol. Kopete or Pidgin for IM. HP printer drivers, including for networked printers -- even supporting the scanners on multi-function devices through JetDirect connections. Burning software, torrent software, graphics software, and many of those other things moderately skilled PC users have come to expect just work out of the box on several distros. Mandriva is one of those.
Using Windows is very easy so long as you don't expect to install it with decent hardware support OOTB or with decent security OOTB. It's so easy to use that within an hour online, it's often being used by someone the owner never intended. ;-)
Chromium on Linux uses the NSS DB. The NSS DB on Mandriva 2010 for example trusts both CNNIC and Entrust, at least on my installation I'm using right now.
So do (typically) cURL, OpenLDAP, and a bunch of other packages that aren't even browsers.
Have any guess what packages generally update the NSS DB on a Linux distro? Well, NSS is a Mozilla project, but the recent versions don't have hardcoded trusted roots. Distros are free to update the list, and you're free to manage it yourself using NSS tools. However, there is a preloaded list of certs from Mozilla.
So, long and short of it, Mozilla controls a lot more cert lists than just Firefox.
...as foretold in the song about freedom of expression by the guys calling themselves "Men Without Hats".
S... A... F... E... T... Y...
Safety... Dance...
The flip side of the "Safety Dance" single was named "Security". The 12" maxi single included a song called "I Got The Message" along with "Antarctica". "Antarctica" was the only other song on the extended dance mix 12" promo.
The song "Safety Dance" (as titled on the band's apparent homepage) itself was about being allowed to express oneself and the resistance to heavy-handed repression of that expression.
HHOS. See the wikipedia entry for the song for the song for even more info.
Thanks, Illinois-Quebecois synth-pop 80's wonders!
It doesn't need to be 50-60k of code. It just happens to be that way because the developers get into the habit of using the same big JS library for everything. It's understandable, really, because that keeps development time down.
When it becomes a problem, though, the UI and class libraries can be broken out into smaller bits and pieces. There's no need to have animation, server-side file browsing, sorting, and a lot more in an upload progress bar. All the progress bar really needs on the client side is a request for a document, as it's really simple to calculate an upload status from the server side.
The only parts of your JS library you really need loaded client-side all the time are the cross-browser compatibility bits to account for stupid browsers with stupid implementations of the DOM or the HTTPRequest object.
This is one place where some companies could make their customers happier with just some minor tweaking to how they load their JS libs onto the client side and how fancy they get in rendering what are really basic UI updates.
The objective view is the one taken by the shareholders. They don't give a rat's ass about engineering pride so long as the site pulls the same revenues with lower expenses. An 80% reduction in frontend servers for a company using tens of thousands of servers for one guy's yearly pay sounds like a good investment. Even if it's only for a couple of years while they do a top-to-bottom rewrite, it might just pay for a good portion of that rewrite you'd like.
Out of the first 76,633 users, I'm the only person with my plugin selection and my available fonts.
Using Midori for the browser and Mandriva for the OS was a good start, obviously. The User-Agent string doesn't mention the distro name, though. It just says it's under X on Linux on an i686. One in every 25544.33 people (so two others) submitted to the test with Midori on Linux.
Having commercially-licensed fonts that don't come bundled with any OS helps, and how many people have identical sets of plugins?
When I'm really so worried about privacy, I'll be sure to use a browser that reports exactly what a stock XP or Win7 system would report. There's nothing in the world that forces your browser to tell the whole truth about what it can do.
Android is available on both GSM and CDMA phones. You don't have to have a GSM carrier to get a phone running Android.
HTC Hero, HTC Drois Eris, Motorola Droid, and the Samsung Moment are all CDMA Android phones.
I understand most of the CDMA Android phones are locked to specific carriers, and that could be an issue. If your carrier can't get a phone, that's a problem between the manufacturer and the carrier. It's not a CDMA vs. GSM issue that a particular carrier is refusing to secure your OS of choice.
I don't know about "local" carriers. There are plenty of regional carriers like US Cellular and carriers that resell access to other networks like Virgin Mobile. A solid regional carrier with nationwide free roaming can be a good thing.
That said, I want to point out that US Cellular's equipment replacement insurance absolutely bites balls. It's $6 month, $50 deductible, and you have 12 days or so to evaluate the refurbished phone and battery their contract partner (the insurance is actually through a partner, but they chose the partner) sends you to RMA it without being charged again.
It'd probably be best if switching to CDMA to keep the current phone and just reactivate it if going back overseas. Otherwise, I think you're spot on.