Figuring I suppose that if the next generation is uneducated they will be cheaper to employ.
Assuming a giant conspiracy is rarely the correct answer.
I suspect that it's simply a side effect of a society's path towards modernisation.
First, lets go back to the fundamental problem: I, as a professional programmer with a CS degree, would make 3-5x more income doing work in the industry than I would as a teacher. This isn't even skipping the side-benefits of a teaching career such as long holidays, I get more free time as a consultant or contractor than I would as a teacher and still make truckloads more money. This is typical around the western world, and not just in computer science, but many other areas as well.
It wasn't always so! Not so long ago, roughly around the time my grandparents were teaching classes, they were in a "respected profession" that made them one of the best incomes in their home town.
So what changed? Well, progress did. Essentially, the problem is that most other jobs became more productive, often at a staggering rate. A machinist today can make more widgets with better quality than he could a hundred years ago because of automation and better tools. A factory makes more products. A manager managing workers oversees more productivity. A programmer can work on computers millions of times faster than the first computers, using abstract high-level languages that are vastly more productive to use than assembler was.
All of this has translated into increased income (due to increased productivity) for just about everyone, except teachers, because education has remained largely stagnant in terms of productivity for centuries now. Class sizes are still "optimal" at roughly 30 students per teacher. There is no way to teach certain material to average students before they're old enough, so the process can't be sped up either. The kids get one year older in exactly one year, like they always have! No new technologies have come about either to enable a typical high-school teacher to effectively teach even 300 students, let alone thousands.
Of course, that's not entirely true: new technologies for teaching more efficiently have come about, they just don't look anything at all like a typical classroom, because that has insurmountable scalability problems. Instead, things like the Khan Academy, wiki text books, Wikipedia itself, and the like are slowly starting to make progress towards more efficient and scalable education.
However, none of that translates to increased teacher pay, which is not unusual, because even though it looks like an intellectual profession, in terms of productivity it behaves a lot more like manual labour. A good teacher can teach better, but not more. This is the problem, not some giant conspiracy. The market prices manual labour with low wages, because automation is more efficient and produces more value.
I'm not clear on exactly what the difference is between a hypervisor+para-API and a normal OS.
Essentially, traditional operating systems mix several vaguely related things into a single system:
1) The "core" of an operating system: resource management, device drivers, isolation, time sharing 2) Useful "libraries" or APIs: advanced networking features, security such as access control and authorization, filesystems, etc...
The reality is that the two should have been split from the beginning, not merged into one giant monster, because different applications need different things, and the rest is just a maintenance and security nightmare just because it's present in the kernel or in privileged system services.
For example, some databases like Oracle can directly format a block device and treat it as a "file" in the database. No operating filesystem required, that's just overhead. Similarly, cross platform products need to have a portable set of libraries (#2), but don't typically care about drivers and whatnot. Hence, many products ignore the built-in libraries of the operating system, and roll their own anyway, which means whatever is in the OS is just wasted.
What hypervisors bring to the table is that they correctly split out #1 and #2, each optimised for its own thing. The "core" becomes the hypervisor kernel, and "2" becomes the guest virtual machine's operating system. This is why well written hypervisors such as VMware ESXi tend to be crazy robust. They have one job to do, and they do it well. The problem is that the client virtual machines are still using legacy operating systems with both #1 and #2 instead of just #2, which is redundant. This Erlang project is a simplified OS that lets the hypervisor do its thing, and then only loads what Erlang needs inside the guest, and nothing else. Hence the fast startup times and I'm guessing good efficiency.
In this kind of split environment, the guest "OS" would typically run a single "application" per virtual machine, which is already typical anyway, but by making that assumption from the beginning, a bunch of simplifications can be made: everything can run in ring 0, there's no need for access control lists, serial ports, display drivers, or any of that junk. Just a basic filesystem, basic IP-only networking, and network-based security such as SAML or Kerberos.
Essentially, in an idealised hypervisor-based computing world, most code that's currently part of Linux or Windows would move into user-mode libraries that ship with compilers, and the "operating system" would be essentially a modern version of DOS: something trivial to start processes, then get out of the way.
Why would I care if Facebook is tracking on every internet page?... What a terrible tragedy it is that people want to sell me things that I think I'd like!
That's not all they use the information for. Several companies have been caught altering prices based on tracking information.
For example, web flight booking sites will raise their prices automatically if you return to the site later.
Many websites automatically jack up prices if they detect that you're from Australia.
Amazon was caught adding small offsets to the prices of items for different customers, and then analysing behaviour to set prices. I can imagine a Facebook-tracking integrated system that detects if you have "expensive tastes" based on what you "Like" in Facebook, and automatically jacking up prices sky-high, assuming you're rich and willing -- nay -- eager to spend more.
Don't be fooled: tracking is not for your benefit. It's for someone else's profit, which aligns with your own interests only coincidentally.
Write a generic ETL app. Quite useful. Might be many out there, though. Probably few good free ones..
That's actually a very good idea, because I've found the exact opposite of your suspicion: there's few out there and they're all bad!
The kind of insanity I see regularly:
* Visual programming languages, which are known to be inefficient and just all-round bad. They promise a lot, but fail to deliver. * Poor re-use or re-factoring of common tasks, such as consistent handling of groups of columns from disparate sources. * Poor parallelism. I suspect that there's no ETL tool out there that can parse a CSV file in parallel. It's hard, because all but the first thread has to "hold" its results and potentially back-track. There are organizations out there that import multi-gigabyte text files! * Poor adherence to standards. For example, SQL Server 2008 R2 and earlier don't support the CSV standard. No joke! * Poor scaffolding or get-started-quick importing. Lots of ETL tools make you drag & drop at least each table once. Performing an "upsert" merge (or similar) between a database and a subset involving many tables is almost always months of fiddly work. God help you if you need to perform more complex merges...
Essentially, writing an advanced ETL tool in a high-level and safe language like C# or Java wouldn't be too hard, and would be useful to a lot of people. There's also great tools out there now for developing new Domain Specific Languages (DSLs), which would allow a full-fledged ETL language to be developed quickly.
Lots of good programming practice in a project like that: parallelism, databases, and parsers. Yet, it's easy to get started, and even a very simple version might be useful for some things!
I travel for work, just like millions of other business people.
I would like to play games on airplanes. I'd like to while away the spare hours in a hotel room with games.
Unfortunately, few planes have WiFi, and even if they do it's usually too unreliable for online DRM. Worse are hotels, which charge exorbitant fees for internet access, often on the order of $10 per hour, particularly in some countries like New Zealand where there are ZERO free access points, and hotels seem to make their profit entirely from overcharging for access.
Game publishers basically tell people like me: don't buy our games -- even our single player games -- because you can't check in with us every 5 seconds, so you must be some sort of dirty pirate.
I like to observe the ineptitude of governments around the world in driving IPv6 adoption and compare it with their similarly inept response to Global Warming.
In both cases, a slow but steady change is going to cause inevitable disaster. Foresight and planning is required, and government incentives or lawmaking is basically a must, because in both cases no individual benefits from saving the world, so why spend the money?
The difference is that the IP address shortage is a trivial problem to foresee and solve. It's like a toy version of Global Warming. A mock disaster to test the government's mettle. For example, unlike Global Warming, the IP address shortage is trivially predicted. We knew what month the last block was going to run out something like two years ahead of time! It's simple maths. There's no theory. There's no complex feedback cycles. There's no doubt. We have a fixed, unchangeable amount of something, we're using it faster and faster, there's still a huge number of potential users. It's going to run out.
Similarly, the fix is also trivial compared to Global Warming. Had, say, the EU made a new law that all imported electronics that can be connected to the Internet have mandatory IPv6 support enabled by default, that alone would have been sufficient. That's it. A piece of legislation, requiring some talking and a few pieces of paper. The cost of some electronics might have gone up an average of 50c or somesuch, but the problem would have been solved practically overnight! No manufacturer with a global market could afford to neglect IPv6 support. Common software platforms would have resulted in IPv6 everywhere, for everyone, because of one change in one law in one place.
Instead, what do we get? Half-solutions like NAT. Various groups with no teeth that can "encourage" and "assist" the adoption of IPv6. Piecemeal adoption that means that nobody can go IPv6-only any time soon. Meetings with "industry experts", half of which work for corporations that still have an IPv4-only Internet presence. Conferences. Studies. Wastes of time and money.
I bet 90% of legislators around the world haven't even heard of IPv6, or still don't know what it's all about.
Meanwhile, think about it: in the Western world and increasingly everywhere else, Internet access is now basically an "essential human right", much like clean drinking water, transport, electricity, or health care. I mean seriously, would YOU buy a house in a location where you could get water and electricity, but not the Internet? Exactly.
Now go back to the legislators. This -- now essential -- service is breaking in a trivially predictable way, and they haven't even fucking bothered to do the simplest things to actually fix the problem.
Instead what we're going to see is parasitic rent-seeking: the value of IPv4 addresses will skyrocket. Full, bi-directional Internet access will become a privilege, concentrated into the hands of corporations. Their investments in addresses will appreciate over time, hence predictably they will have a vested interest in maintaining and growing this wealth. Expect to see dirty tactics and corruption used to block IPv6 adoption to prevent a devaluation of IPv4 address "property". This might get bad enough that IPv6 will never be adopted, because there will be significant pressure against it!
Now think about how much worse Global Warming is going to be! It's far off into the future. Decades at least until serious effects are felt anywhere. The science is complex, and difficult for laymen to understand. There are already vested interests to deny it, to the tune of trillions of dollars. The fix -- if any -- wouldn't be 50c per purchase, it might be more like 50%!
Why the fuck do we keep voting these people into power?
Not only does my Linux installation boot in under 30 seconds (SSD drives are great for that)
So, you compare Linux on an SSD to Windows on a mechanical drive -- seriously?
I should have just voted you down for spouting something so stupid, but you touched on something interesting without realizing it:
Most of the programs I use in Linux have functional Windows equivalents, but using Windows feels like trying to run in a dream.
This is more meaningful, but not for the reason you think.
Your problem, like all Linux users who try Windows, is that you don't follow the rule that "When in Rome, do as the Romans do".
Almost certainly, you tried some replica of your Linux toolchain: Cygwin, Bash, Perl, Python, PHP, or whatever, and you were "not surprised" that "Windows was slow" running software... designed for Linux. Meanwhile, Windows runs just fine running software designed for its architecture, but you probably never gave any of that a serious try. Visual Studio starts in a fraction of a second for me, complies practically instantly, and I've seen IIS put out 1100 dynamic web pages per second on my laptop, so I don't think it's all that slow. I've heard people complain that MS Word is "bloated", but it takes 200ms of CPU time to start. Bloated? I think not.
There are many subtle architectural reasons for this. Things like: "new process" is cheap on Linux, and used for what most programmers would call "threading", but on Windows it is a heavyweight activity that's not intended to be fast. Instead, "new thread" is the fast operation. Software has to be written to start few processes and many threads to perform well on Windows. It's only very recently that Linux got good support for high performance threads, so practically no Linux software is written like this. Every damned thing starts a new process for everything. Linux scripts treat "new process" as if it was lightweight enough to replace "call procedure". Meanwhile, Windows PowerShell starts a single process which calls functions directly from dynamically linked DLLs. That's because it's designed for Windows, unlike Bash.
Please, just shut up, and try Windows 7 x64 on a real machine with an SSD, run software on it designed for it, and only then come back and tell me that's it is slow.
That's much lower than the Hubble cost, which was a much simpler telescope.
Interestingly, the Hubble cost $2.5B to develop and had a total operating cost of $10B, but the original estimate was $400M, which is similar to your $500M figure.
It's likely that what happened in both cases is a symptom of big government contract negotiations: bid insanely low to win the contract, and then keep adding "cost overruns" until you get the actual amount of money required.
The fact that you don't see it means that you really have no idea how much money that is. Thats about 4 times as much money as it took to develop the space shuttle...
You have your numbers wrong and you're also forgetting about inflation! The JWST program will cost a fraction of the Shuttle's development costs! The Space Shuttle cost $6.744 billion to develop, but that's in 1971 dollars -- today, that would be $38.5 billion dollars, according to "usinflationcalculator.com".
Don't forget that the JWST is a seriously high-tech device, with many entirely new or never-before-tried technologies required. Much of the cost is R&D, not manufacturing or assembly. In contrast, the shuttle program had relatively little R&D, followed by a much more expensive construction and operation phase. The total cost of the space shuttle program is about $200B in 2012 dollars.
Computers have surpassed that level a loooooong time ago
Doubtful.
The computational requirements for simulating the human brain have been severely, even hilariously, underestimated in the past. To quote Wikipedia: One estimate puts the human brain at about 100 billion neurons and 100 trillion synapses.
That's... a lot.
First off, a lot of people think that 1 FLOP = 1 Neuron, which is not even close. The active points are the synapses, of which there are about a thousand per neuron! Each may receive an impulse over ten times a second, and involve dozens of parameters, such as the recent history of firings, neurotransmitter levels, hormone levels, membrane potentials, etc... A very conservative estimate would be that a single neuron, receiving impulses at around 10 Hz on 1000 synapses would require on the order of 1 megaflop to simulate. That's ONE neuron. Now multiply that by 100 billion, and you get a picture of what's required: about 100 petaflops, minimum. Storage is nothing to sneeze at either. Assuming a mere 50 single-precision floating point values per synapse to store all simulation state, you're looking at almost 18 petabytes of memory! That's over $100M for the memory sticks alone, even with a deep bulk-purchase discount. Unlike most server or HPC workloads those 18 petabytes would have to completely read out, processed, and possibly updated again at least ten times a second.
Second, consider that the first simulations won't be very optimized. We still don't really know what's relevant, and what can be simplified away. Hence, I suspect that the first attempts will be much less efficient, and may require 10x or even 100x as much computer power compared to later attempts. For example, neurons don't just fire impulses, they also grow and change shape. I don't think there's even a good model for how that works in the complex 3D environment of the brain!
We are getting closer, but expect to wait at least a decade or two before people start talking seriously about a full human brain simulation.
Linux box, install VMWorkstation (VSX or VSPhere is waaaay too expensive unless you run a server farm/data center)
Wrong solution. You don't use a workstation hypervisor for servers when there are free server hypervisors out there.
There's a free edition of ESXi, a free Citrix XenServer, and lots of places with Windows Server licenses are probably already licensed for Hyper-V, even if they don't realize it.
All of those are far superior to running a desktop program on top of a full install of Linux!
I had a similar experience when I was asked to evaluate Hyper-V as a potential replacement for VMware ESX server. The installer failed because I didn't use the en-US keyboard.
I laughed, didn't even bother trying to fix the problem, and told my boss that there's no way in hell we're trusting our infrastructure to a hypervisor that depends on the keyboard layout to function. That's a blatant sign of shoddy engineering.
Here's another example for you: Windows Server 2008 R2 will not run a PowerShell script from a network share by default. So, here's the process:
- The error message will tell you to enable script execution. - Run "Set-ExecutionPolicy Unrestricted -Force" - Run the script again. It runs, but only after a "safety" prompt. This breaks your unattended workflow. No helpful tip this time. - Much googling later, it turns out that it's IE's Enhanced Security Crap. - Turn IE ESC off for Administrators. - Still the same warning. - Much googling later, you discover that downloaded script files are tagged with a hidden stream to mark them as potentially unsafe. - Open the properties of the file, and click "Unblock". - Still the same warning. - Did you use ".com" as the suffix of your domain's FQDN? Oops, Windows now thinks that it's the "Internet", instead of the "Intranet", even though it's the same FQDN as the machine's own domain! Apparently that simple check was too hard to do, but looking for a bunch of variants of ".com" suffixes was easy. - Go to the Tools menu of Internet Fucking Explorer, and add the name of the file server to the Intranet list. Obviously. Because that's the first place I'd look to make my console scripts work. O_o - At this point, your script will work... for that user, and nobody else. - Sigh, now to track down the setting in Group Policy, so it can be pushed out to all the servers. - Unless the script needs to run before the machine is joined to the domain. - Oh fuck it...
I suspect that one of the many root causes of this kind of shoddy engineering is that the "well trodden path" for Microsoft Engineers is a machine that's already joined to the Microsoft domain, with pre-prepared policies applied to it. They just don't use or test other scenarios enough. They don't work on non-domain machines. They don't work with keyboards other than en-US. They don't test scripts downloaded from the Internet, because when they developed PowerShell, there weren't any yet!
The few 17 inch models they make have keyboards from 15 inch laptops, the same as everybody else.
If the left arrow isn't to the right of the enter-key, then it's a squeezed layout, not a real 101-key layout.
Find me a photo of a current-model 17 inch laptop that has a proper layout. Isolated ESC key, extra gap between numbers and function keys, function keys grouped into sets of four, separate arrow keys, and full sized dedicated ins,del,etc... keys.
Putting your money where your mouth is, trumps whining on a blog every time.
Except there is NOWHERE for my money to go. I can't vote with my wallet, because every vendor makes the exact same fucking thing, without the slightest variation. This a total failure of the free market.
Sure, finally, after years of stagnation, Apple made a single laptop model that has a screen resolution higher than 1920x1200.
Fine.
Now find me a 17" laptop that has a keyboard that drops the numeric keypad so that it can have standard 101-key spacing for the rest of the keyboard.
There is no such thing. It does not exist. There is no laptop manufacturer on the whole planet that will sell me a 17" laptop that has a keyboard designed with keys like a traditional keyboard. Without exception, they all squeeze in a numeric keypad I never use, and re-use keyboards designed for 15" laptops in their 17" models. None of the usual extra-wide gaps are present, so I can't touch-type properly. I have trouble hitting the ESC key, the function keys, the arrow keys, and ins/del/pg-up/pg-dn, none of which are EVER in the standard positions. Often those keys are half-sized too, for extra frustration.
I've said this before on Slashdot in the vain hope that that somebody from a laptop hardware vendor still frequents this Internet backwater: I will pay a $500 price premium for a laptop with a proper keyboard. However, I'm certain that this won't ever happen. We're all just consumers watching 1080p "content". Not a single programmer has ever had to use a laptop. Fuck them, and their money. That's the attitude I've been sensing from the OEMs. I don't expect it to change any time soon.
If it was at all possible, I'd start my own laptop company, and make a line of "Pro" laptops for the type of people who type with more than one finger at a time. It would have clicky keys, a 4K display, a water-resistant chassis, an externally accessible hot-swap SATA drive bay, and an 10Gbps SFP port on the back. In certain industries, it would be the only model anybody would want to buy, irrespective of cost.
The problem with laptop and desktop LCDs, is that they adhere to the 1080p TV display spec, probably to shave cents of some controller somewhere, or to share a production line. Apparently it's vital that the hundreds of millions of computer displays made each year have everything in common with the non-existent 15" TV market, or whatever the fuck.
Luckily, there's a lot of progress on making 4K resolution the new standard for video, which means that it should trickle "down" to computer displays. Despite the name, the new standard will have 3840 x 2160 resolution, but that is still notably higher than what Linus is asking for, providing 183 dpi even on a 24" display!
If you can't wait, there's going to be affordable 4K TVs appearing soon with HDMI input. Just replace the monitor on you desk with a TV mounted on the wall behind your desk. You'll probably need a new video card, but the good thing is that most OS-es now hardware accelerate desktop composition, so the result should be silky smooth. You might even be able to get 120Hz going, but don't hold your breath: display connectors haven't caught up with the required bandwidth. Your 3D card might be able to generate a 48-bit 8.3 megapixel image at 120Hz, but that's almost 50 Gbps, and there is no PC video standard that will carry that.
Next, the operating system vendors need to get their heads out of their asses and finish implementing proper multi-resolution support instead of the half-assed job they've been getting away with for decades because of the persistent assumption that higher-resolution = bigger-surface-area!
Oh good, advice from a Slashdot armchair physician.
Unfortunately, what you don't know can quite literally kill you: the influenza virus can do more damage to young healthy people than the infirm, and some strains infect over 30% of the population, irrespective vitamin pills or yoga classes.
Read up on the 1918 flu pandemic and then cytokine storms to gain a glimmer of understanding into why research into a flu vaccine is more important than almost any public safety measure you can think of. Short of nuclear war, there's not a lot of things that are likely to wipe out a significant fraction of the human race, but the flu is one of them. We're practically overdue for a strain deadly enough to kill more people in a year than WWI and WWII combined.
I'd like to see you try to keep your attitude towards healthy living as the best defense against a viral plague when the government starts hauling away the bodies of your neighbors by the truckload.
Unable to explain to me why Cisco was so much better
There are some advantages to going "All Cisco", similar to the advantages of going "All Microsoft" or whatever:
- Huge pool of highly trained talent to pick from. Cisco certified people are easy to get, at both the low end and the high end. - Good consistency in their products. Excluding their most exotic stuff and the cheapest consumer stuff, pretty much everything Cisco makes uses IOS or is IOS compatible to a degree that you can't tell the difference. You learn it once, and that's it, you know all their products. - Complete product line. You can start with an entry level firewall and router, and upgrade to multi-terabit telco grade routers without ever having to throw out your knowledge or tools and start over. If it's a digital cable that you can plug into a router, Cisco almost certainly sells a module for it. If they don't, someone sells a compatible one.
From what I've seen, their competitors try to undercut them on price, often successfully, but then the IT department needs two or three vendors to meet all their networking needs. For example, Cisco sells blade-chassis IO modules (integrated switches), and even VMware vSphere "virtual switches"! If you have VMware on HP Blades (very common), then you either go Cisco, or live with the inconsistency. A lot of vendors will sell switches and routers, but not firewalls, VPN concentrators, WAN accelerators, or something. Suddenly, you need IT guys trained ina bunch of vendors' network equipment, you need three different management and monitoring tools, and your op-ex is through the roof. When you call support with a problem, the vendors will all point at each other, and meanwhile your links are down and your users are screaming at you.
On the other hand, $100M seems a bit much, even for Cisco. Sounds like they put a half-assed effort into the bid, and didn't pick the most cost-effective devices or just didn't give the right educational discount or something.
Facebook and Google seem pretty lacking in the big names
They're special, and aren't even remotely representative of a typical business. The way they build infrastructure has more in common with supercomputer design than business data centre design. For example, Google was using 100 Mbit switches when everyone else was starting the upgrade to 10 Gbit!
Seriously, what the fuck are you doing that depends on the exact way that tabs are displayed by other people!? Why would it possibly be that important? Just how fragile is your workflow that it's broken by someone else's display metrics?
Maybe you need to take a long hard look at your toolchain, then throw it outside in a heap and set fire to it.
I've been using whitespace-insensitive diff and merge tools since the 90s, and I reformatters since 2001 to solve even the largest formatting inconsistencies. There is never a reason for any programming task to be "broken" by the use of tabs, spaces, or any combination with any configuration. The tools to fix any conceivable problem have been around for over a decade.
If you're finding you're writing regular expressions looking for a specific number of space-equivalents made up from tab characters, just stop. Re-think your career in programming, and considering going into the secretaries typing pool. You'd fit right in, because many of them also still haven't figured out that a tab is not the same thing as 'n spaces'.
Next, you'll be complaining that people are putting spaces in their file names...
You don't get to see Microsoft's development versions and you don't get to see Microsoft's bug database.
You're looking in the wrong place!
They're called features, and they're on the technet website for all the world to see.
Like how in older Windows versions, disks would be auto-mounted, and NTFS didn't have native active/active capability. In other words, if you made the slightest mistake in your FC zoning, then you could kiss your multi-terabyte cluster volume goodbye.
Bad code is bad code whether it is old or new, but with new code you're much more likely to be able to use new tools, which are generally speaking vastly better than old tools.
For example, with.NET you can use Visual Studio and with Java you can use IntelliJ IDEA. Both of them will give you powerful refactoring capabilities and help you navigate unfamiliar code. It's not just IDEs either, there are huge tool chains built around the new stuff, like static analysis and runtime capture such as IntelliTrace. Both of those do wonders for finding hidden issues in someone else's code. Even with C/C++ code you sometimes hit a wall with very old code bases that newer tools can't process.
I once had to support an application written in Clipper for 16-bit DOS with modules written in a dialect of C so old that practically nothing could compile it. There is nothing out there to assist with that crap. You basically get a choice of your favourite text editor, and you should consider yourself lucky if you get syntax highlighting and stack traces after a crash!
Meanwhile, I've solved issues in compiled binary code using Visual Studio. For example, I used the Concurrency Visualizer to figure out why iTunes hangs on my computer for hours. Turns out that one of its threads get stuck in a loop waiting for a synchronization primitive shared with the Bonjour service. I uninstalled Bonjour, and hey presto, problem solved! Solving issues like that in minutes instead of days or weeks is why I avoid anything written in languages other than Java or C# like the plague.
The.NET Framework and VB/C# in particular are a bit strange in that they have much better perceived performance on a desktop compared to Java, the closest equivalent, but actually have very poor performance. Java is something like 2x faster in benchmarks!
This is because unlike Java, Microsoft has a sane startup sequence for applications. The.NET framework shares DLLs, shares pre-JIT-ed uncompressed native code, etc... In contrast, Java lives in an isolated bubble world and repeats every single step of the launch sequence every time, for every application, no matter what. It unzips JAR files every time, for example, which is crazy slow. It interprets instead of JITs during the first pass, which is crazy slow. It never caches anything. It never shares anything between processes, including the entire Java runtime itself.
On the other hand, Java wins benchmarks because its JIT generates a whole bunch of fancy optimisations, sometimes even with runtime profiler-based optimisation. Meanwhile, there's a section in the C# manual somewhere that states something along the lines of "The C# compiler does not perform optimisations. If this is required, use C++/CLR". Similarly, the.NET JIT is not as good as the Java JIT, and doesn't do anywhere near as many optimisations. The.NET Framework manual states somewhere that "optimisations should be performed by the high-level language compiler". Err... what the fuck?
The result is that.NET apps written in VB or C# are much more responsive than Java apps, but lose benchmarks. On a 3GHz Intel CPU, this just doesn't matter any more for typical GUI apps, or even some games. On a phone, Java's advantages are much more important. The JRE is permanently loaded, so most of the startup performance issues are gone. Some phones reduce startup times by sharing various things, which Java on the PC doesn't. Some phones pre-JIT Java apps. This is why Android can run a Java-derived language and get great performance.
The state of.NET performance was good-enough for a 1.0 release on high-performance PCs, but Microsoft dropped the ball by not continuing to optimise it to have better throughput for high-performance server applications and low-powered embedded applications like phones and tablets.
ClearType increases that apparent resolution in one direction only by about a factor of two. In theory it sounds like it should increase resolution by a factor of three, but that would result in coloured fringes around the letters, so filters are applied which reduces the benefits but prevents the issues.
A second problem is that that the direction in which ClearType works depends on the physical arrangement of sub-pixels on the screen. On a normally aligned PC monitor, this is great, because text needs horizontal resolution more than vertical resolution, as most glyphs have thin vertical lines close to each other. However, as soon as you rotate the screen the benefits of ClearType are hugely reduced. In the PC world this is rare, but with tablets it's common. I'm reading an eBook right now on my iPad in portrait mode, because that matches the page layout of a typical book. Reflowing the content for landscape mode isn't always possible, for example with PDFs.
The iPad has ~4x the resolution of the Surface tablet, and it also has anti-aliasing to further refine the edges of fonts. Sure, it doesn't have ClearType, but it doesn't need it!
On top of that, the Microsoft marking guy is carefully skirting around a much more important detail: ClearType does exactly nothing for all other graphics, such as vector art or bitmap images. The iPad meanwhile has 4x the pixels to throw at everything, not just text.
Sure, I could waste my time reading his reference, or... just open my eyes and look at the obvious difference.
Figuring I suppose that if the next generation is uneducated they will be cheaper to employ.
Assuming a giant conspiracy is rarely the correct answer.
I suspect that it's simply a side effect of a society's path towards modernisation.
First, lets go back to the fundamental problem: I, as a professional programmer with a CS degree, would make 3-5x more income doing work in the industry than I would as a teacher. This isn't even skipping the side-benefits of a teaching career such as long holidays, I get more free time as a consultant or contractor than I would as a teacher and still make truckloads more money. This is typical around the western world, and not just in computer science, but many other areas as well.
It wasn't always so! Not so long ago, roughly around the time my grandparents were teaching classes, they were in a "respected profession" that made them one of the best incomes in their home town.
So what changed? Well, progress did. Essentially, the problem is that most other jobs became more productive, often at a staggering rate. A machinist today can make more widgets with better quality than he could a hundred years ago because of automation and better tools. A factory makes more products. A manager managing workers oversees more productivity. A programmer can work on computers millions of times faster than the first computers, using abstract high-level languages that are vastly more productive to use than assembler was.
All of this has translated into increased income (due to increased productivity) for just about everyone, except teachers, because education has remained largely stagnant in terms of productivity for centuries now. Class sizes are still "optimal" at roughly 30 students per teacher. There is no way to teach certain material to average students before they're old enough, so the process can't be sped up either. The kids get one year older in exactly one year, like they always have! No new technologies have come about either to enable a typical high-school teacher to effectively teach even 300 students, let alone thousands.
Of course, that's not entirely true: new technologies for teaching more efficiently have come about, they just don't look anything at all like a typical classroom, because that has insurmountable scalability problems. Instead, things like the Khan Academy, wiki text books, Wikipedia itself, and the like are slowly starting to make progress towards more efficient and scalable education.
However, none of that translates to increased teacher pay, which is not unusual, because even though it looks like an intellectual profession, in terms of productivity it behaves a lot more like manual labour. A good teacher can teach better, but not more. This is the problem, not some giant conspiracy. The market prices manual labour with low wages, because automation is more efficient and produces more value.
I'm not clear on exactly what the difference is between a hypervisor+para-API and a normal OS.
Essentially, traditional operating systems mix several vaguely related things into a single system:
1) The "core" of an operating system: resource management, device drivers, isolation, time sharing
2) Useful "libraries" or APIs: advanced networking features, security such as access control and authorization, filesystems, etc...
The reality is that the two should have been split from the beginning, not merged into one giant monster, because different applications need different things, and the rest is just a maintenance and security nightmare just because it's present in the kernel or in privileged system services.
For example, some databases like Oracle can directly format a block device and treat it as a "file" in the database. No operating filesystem required, that's just overhead. Similarly, cross platform products need to have a portable set of libraries (#2), but don't typically care about drivers and whatnot. Hence, many products ignore the built-in libraries of the operating system, and roll their own anyway, which means whatever is in the OS is just wasted.
What hypervisors bring to the table is that they correctly split out #1 and #2, each optimised for its own thing. The "core" becomes the hypervisor kernel, and "2" becomes the guest virtual machine's operating system. This is why well written hypervisors such as VMware ESXi tend to be crazy robust. They have one job to do, and they do it well. The problem is that the client virtual machines are still using legacy operating systems with both #1 and #2 instead of just #2, which is redundant. This Erlang project is a simplified OS that lets the hypervisor do its thing, and then only loads what Erlang needs inside the guest, and nothing else. Hence the fast startup times and I'm guessing good efficiency.
In this kind of split environment, the guest "OS" would typically run a single "application" per virtual machine, which is already typical anyway, but by making that assumption from the beginning, a bunch of simplifications can be made: everything can run in ring 0, there's no need for access control lists, serial ports, display drivers, or any of that junk. Just a basic filesystem, basic IP-only networking, and network-based security such as SAML or Kerberos.
Essentially, in an idealised hypervisor-based computing world, most code that's currently part of Linux or Windows would move into user-mode libraries that ship with compilers, and the "operating system" would be essentially a modern version of DOS: something trivial to start processes, then get out of the way.
Why would I care if Facebook is tracking on every internet page? ... What a terrible tragedy it is that people want to sell me things that I think I'd like!
That's not all they use the information for. Several companies have been caught altering prices based on tracking information.
For example, web flight booking sites will raise their prices automatically if you return to the site later.
Many websites automatically jack up prices if they detect that you're from Australia.
Amazon was caught adding small offsets to the prices of items for different customers, and then analysing behaviour to set prices. I can imagine a Facebook-tracking integrated system that detects if you have "expensive tastes" based on what you "Like" in Facebook, and automatically jacking up prices sky-high, assuming you're rich and willing -- nay -- eager to spend more.
Don't be fooled: tracking is not for your benefit. It's for someone else's profit, which aligns with your own interests only coincidentally.
Write a generic ETL app. Quite useful. Might be many out there, though. Probably few good free ones..
That's actually a very good idea, because I've found the exact opposite of your suspicion: there's few out there and they're all bad!
The kind of insanity I see regularly:
* Visual programming languages, which are known to be inefficient and just all-round bad. They promise a lot, but fail to deliver.
* Poor re-use or re-factoring of common tasks, such as consistent handling of groups of columns from disparate sources.
* Poor parallelism. I suspect that there's no ETL tool out there that can parse a CSV file in parallel. It's hard, because all but the first thread has to "hold" its results and potentially back-track. There are organizations out there that import multi-gigabyte text files!
* Poor adherence to standards. For example, SQL Server 2008 R2 and earlier don't support the CSV standard. No joke!
* Poor scaffolding or get-started-quick importing. Lots of ETL tools make you drag & drop at least each table once. Performing an "upsert" merge (or similar) between a database and a subset involving many tables is almost always months of fiddly work. God help you if you need to perform more complex merges...
Essentially, writing an advanced ETL tool in a high-level and safe language like C# or Java wouldn't be too hard, and would be useful to a lot of people. There's also great tools out there now for developing new Domain Specific Languages (DSLs), which would allow a full-fledged ETL language to be developed quickly.
Lots of good programming practice in a project like that: parallelism, databases, and parsers. Yet, it's easy to get started, and even a very simple version might be useful for some things!
Older versions of Java defaulted to side-by-side installation mode, which was then kept even after newer releases were installed on top.
Newer versions default to in-place upgrade mode instead.
It's poorly documented, and as far as I know, the only way to fix it is to completely uninstall and re-install the latest version.
Often. Recently.
I travel for work, just like millions of other business people.
I would like to play games on airplanes. I'd like to while away the spare hours in a hotel room with games.
Unfortunately, few planes have WiFi, and even if they do it's usually too unreliable for online DRM. Worse are hotels, which charge exorbitant fees for internet access, often on the order of $10 per hour, particularly in some countries like New Zealand where there are ZERO free access points, and hotels seem to make their profit entirely from overcharging for access.
Game publishers basically tell people like me: don't buy our games -- even our single player games -- because you can't check in with us every 5 seconds, so you must be some sort of dirty pirate.
Fine. I won't buy their games then.
I like to observe the ineptitude of governments around the world in driving IPv6 adoption and compare it with their similarly inept response to Global Warming.
In both cases, a slow but steady change is going to cause inevitable disaster. Foresight and planning is required, and government incentives or lawmaking is basically a must, because in both cases no individual benefits from saving the world, so why spend the money?
The difference is that the IP address shortage is a trivial problem to foresee and solve. It's like a toy version of Global Warming. A mock disaster to test the government's mettle. For example, unlike Global Warming, the IP address shortage is trivially predicted. We knew what month the last block was going to run out something like two years ahead of time! It's simple maths. There's no theory. There's no complex feedback cycles. There's no doubt. We have a fixed, unchangeable amount of something, we're using it faster and faster, there's still a huge number of potential users. It's going to run out.
Similarly, the fix is also trivial compared to Global Warming. Had, say, the EU made a new law that all imported electronics that can be connected to the Internet have mandatory IPv6 support enabled by default, that alone would have been sufficient. That's it. A piece of legislation, requiring some talking and a few pieces of paper. The cost of some electronics might have gone up an average of 50c or somesuch, but the problem would have been solved practically overnight! No manufacturer with a global market could afford to neglect IPv6 support. Common software platforms would have resulted in IPv6 everywhere, for everyone, because of one change in one law in one place.
Instead, what do we get? Half-solutions like NAT. Various groups with no teeth that can "encourage" and "assist" the adoption of IPv6. Piecemeal adoption that means that nobody can go IPv6-only any time soon. Meetings with "industry experts", half of which work for corporations that still have an IPv4-only Internet presence. Conferences. Studies. Wastes of time and money.
I bet 90% of legislators around the world haven't even heard of IPv6, or still don't know what it's all about.
Meanwhile, think about it: in the Western world and increasingly everywhere else, Internet access is now basically an "essential human right", much like clean drinking water, transport, electricity, or health care. I mean seriously, would YOU buy a house in a location where you could get water and electricity, but not the Internet? Exactly.
Now go back to the legislators. This -- now essential -- service is breaking in a trivially predictable way, and they haven't even fucking bothered to do the simplest things to actually fix the problem.
Instead what we're going to see is parasitic rent-seeking: the value of IPv4 addresses will skyrocket. Full, bi-directional Internet access will become a privilege, concentrated into the hands of corporations. Their investments in addresses will appreciate over time, hence predictably they will have a vested interest in maintaining and growing this wealth. Expect to see dirty tactics and corruption used to block IPv6 adoption to prevent a devaluation of IPv4 address "property". This might get bad enough that IPv6 will never be adopted, because there will be significant pressure against it!
Now think about how much worse Global Warming is going to be! It's far off into the future. Decades at least until serious effects are felt anywhere. The science is complex, and difficult for laymen to understand. There are already vested interests to deny it, to the tune of trillions of dollars. The fix -- if any -- wouldn't be 50c per purchase, it might be more like 50%!
Why the fuck do we keep voting these people into power?
Not only does my Linux installation boot in under 30 seconds (SSD drives are great for that)
So, you compare Linux on an SSD to Windows on a mechanical drive -- seriously?
I should have just voted you down for spouting something so stupid, but you touched on something interesting without realizing it:
Most of the programs I use in Linux have functional Windows equivalents, but using Windows feels like trying to run in a dream.
This is more meaningful, but not for the reason you think.
Your problem, like all Linux users who try Windows, is that you don't follow the rule that "When in Rome, do as the Romans do".
Almost certainly, you tried some replica of your Linux toolchain: Cygwin, Bash, Perl, Python, PHP, or whatever, and you were "not surprised" that "Windows was slow" running software... designed for Linux. Meanwhile, Windows runs just fine running software designed for its architecture, but you probably never gave any of that a serious try. Visual Studio starts in a fraction of a second for me, complies practically instantly, and I've seen IIS put out 1100 dynamic web pages per second on my laptop, so I don't think it's all that slow. I've heard people complain that MS Word is "bloated", but it takes 200ms of CPU time to start. Bloated? I think not.
There are many subtle architectural reasons for this. Things like: "new process" is cheap on Linux, and used for what most programmers would call "threading", but on Windows it is a heavyweight activity that's not intended to be fast. Instead, "new thread" is the fast operation. Software has to be written to start few processes and many threads to perform well on Windows. It's only very recently that Linux got good support for high performance threads, so practically no Linux software is written like this. Every damned thing starts a new process for everything. Linux scripts treat "new process" as if it was lightweight enough to replace "call procedure". Meanwhile, Windows PowerShell starts a single process which calls functions directly from dynamically linked DLLs. That's because it's designed for Windows, unlike Bash.
Please, just shut up, and try Windows 7 x64 on a real machine with an SSD, run software on it designed for it, and only then come back and tell me that's it is slow.
Which part of this is confusing you?
The hilariously low estimate of $500M.
That's much lower than the Hubble cost, which was a much simpler telescope.
Interestingly, the Hubble cost $2.5B to develop and had a total operating cost of $10B, but the original estimate was $400M, which is similar to your $500M figure.
It's likely that what happened in both cases is a symptom of big government contract negotiations: bid insanely low to win the contract, and then keep adding "cost overruns" until you get the actual amount of money required.
The fact that you don't see it means that you really have no idea how much money that is. Thats about 4 times as much money as it took to develop the space shuttle...
You have your numbers wrong and you're also forgetting about inflation! The JWST program will cost a fraction of the Shuttle's development costs! The Space Shuttle cost $6.744 billion to develop, but that's in 1971 dollars -- today, that would be $38.5 billion dollars, according to "usinflationcalculator.com".
Don't forget that the JWST is a seriously high-tech device, with many entirely new or never-before-tried technologies required. Much of the cost is R&D, not manufacturing or assembly. In contrast, the shuttle program had relatively little R&D, followed by a much more expensive construction and operation phase. The total cost of the space shuttle program is about $200B in 2012 dollars.
Computers have surpassed that level a loooooong time ago
Doubtful.
The computational requirements for simulating the human brain have been severely, even hilariously, underestimated in the past. To quote Wikipedia: One estimate puts the human brain at about 100 billion neurons and 100 trillion synapses.
That's... a lot.
First off, a lot of people think that 1 FLOP = 1 Neuron, which is not even close. The active points are the synapses, of which there are about a thousand per neuron! Each may receive an impulse over ten times a second, and involve dozens of parameters, such as the recent history of firings, neurotransmitter levels, hormone levels, membrane potentials, etc... A very conservative estimate would be that a single neuron, receiving impulses at around 10 Hz on 1000 synapses would require on the order of 1 megaflop to simulate. That's ONE neuron. Now multiply that by 100 billion, and you get a picture of what's required: about 100 petaflops, minimum. Storage is nothing to sneeze at either. Assuming a mere 50 single-precision floating point values per synapse to store all simulation state, you're looking at almost 18 petabytes of memory! That's over $100M for the memory sticks alone, even with a deep bulk-purchase discount. Unlike most server or HPC workloads those 18 petabytes would have to completely read out, processed, and possibly updated again at least ten times a second.
Second, consider that the first simulations won't be very optimized. We still don't really know what's relevant, and what can be simplified away. Hence, I suspect that the first attempts will be much less efficient, and may require 10x or even 100x as much computer power compared to later attempts. For example, neurons don't just fire impulses, they also grow and change shape. I don't think there's even a good model for how that works in the complex 3D environment of the brain!
We are getting closer, but expect to wait at least a decade or two before people start talking seriously about a full human brain simulation.
Linux box, install VMWorkstation (VSX or VSPhere is waaaay too expensive unless you run a server farm/data center)
Wrong solution. You don't use a workstation hypervisor for servers when there are free server hypervisors out there.
There's a free edition of ESXi, a free Citrix XenServer, and lots of places with Windows Server licenses are probably already licensed for Hyper-V, even if they don't realize it.
All of those are far superior to running a desktop program on top of a full install of Linux!
I had a similar experience when I was asked to evaluate Hyper-V as a potential replacement for VMware ESX server. The installer failed because I didn't use the en-US keyboard.
I laughed, didn't even bother trying to fix the problem, and told my boss that there's no way in hell we're trusting our infrastructure to a hypervisor that depends on the keyboard layout to function. That's a blatant sign of shoddy engineering.
Here's another example for you: Windows Server 2008 R2 will not run a PowerShell script from a network share by default. So, here's the process:
- The error message will tell you to enable script execution.
- Run "Set-ExecutionPolicy Unrestricted -Force"
- Run the script again. It runs, but only after a "safety" prompt. This breaks your unattended workflow. No helpful tip this time.
- Much googling later, it turns out that it's IE's Enhanced Security Crap.
- Turn IE ESC off for Administrators.
- Still the same warning.
- Much googling later, you discover that downloaded script files are tagged with a hidden stream to mark them as potentially unsafe.
- Open the properties of the file, and click "Unblock".
- Still the same warning.
- Did you use ".com" as the suffix of your domain's FQDN? Oops, Windows now thinks that it's the "Internet", instead of the "Intranet", even though it's the same FQDN as the machine's own domain! Apparently that simple check was too hard to do, but looking for a bunch of variants of ".com" suffixes was easy.
- Go to the Tools menu of Internet Fucking Explorer, and add the name of the file server to the Intranet list. Obviously. Because that's the first place I'd look to make my console scripts work. O_o
- At this point, your script will work... for that user, and nobody else.
- Sigh, now to track down the setting in Group Policy, so it can be pushed out to all the servers.
- Unless the script needs to run before the machine is joined to the domain.
- Oh fuck it...
I suspect that one of the many root causes of this kind of shoddy engineering is that the "well trodden path" for Microsoft Engineers is a machine that's already joined to the Microsoft domain, with pre-prepared policies applied to it. They just don't use or test other scenarios enough. They don't work on non-domain machines. They don't work with keyboards other than en-US. They don't test scripts downloaded from the Internet, because when they developed PowerShell, there weren't any yet!
Sorry, not even close.
The few 17 inch models they make have keyboards from 15 inch laptops, the same as everybody else.
If the left arrow isn't to the right of the enter-key, then it's a squeezed layout, not a real 101-key layout.
Find me a photo of a current-model 17 inch laptop that has a proper layout. Isolated ESC key, extra gap between numbers and function keys, function keys grouped into sets of four, separate arrow keys, and full sized dedicated ins,del,etc... keys.
No such thing exists.
Putting your money where your mouth is, trumps whining on a blog every time.
Except there is NOWHERE for my money to go. I can't vote with my wallet, because every vendor makes the exact same fucking thing, without the slightest variation. This a total failure of the free market.
Sure, finally, after years of stagnation, Apple made a single laptop model that has a screen resolution higher than 1920x1200.
Fine.
Now find me a 17" laptop that has a keyboard that drops the numeric keypad so that it can have standard 101-key spacing for the rest of the keyboard.
There is no such thing. It does not exist. There is no laptop manufacturer on the whole planet that will sell me a 17" laptop that has a keyboard designed with keys like a traditional keyboard. Without exception, they all squeeze in a numeric keypad I never use, and re-use keyboards designed for 15" laptops in their 17" models. None of the usual extra-wide gaps are present, so I can't touch-type properly. I have trouble hitting the ESC key, the function keys, the arrow keys, and ins/del/pg-up/pg-dn, none of which are EVER in the standard positions. Often those keys are half-sized too, for extra frustration.
I've said this before on Slashdot in the vain hope that that somebody from a laptop hardware vendor still frequents this Internet backwater: I will pay a $500 price premium for a laptop with a proper keyboard. However, I'm certain that this won't ever happen. We're all just consumers watching 1080p "content". Not a single programmer has ever had to use a laptop. Fuck them, and their money. That's the attitude I've been sensing from the OEMs. I don't expect it to change any time soon.
If it was at all possible, I'd start my own laptop company, and make a line of "Pro" laptops for the type of people who type with more than one finger at a time. It would have clicky keys, a 4K display, a water-resistant chassis, an externally accessible hot-swap SATA drive bay, and an 10Gbps SFP port on the back. In certain industries, it would be the only model anybody would want to buy, irrespective of cost.
The problem with laptop and desktop LCDs, is that they adhere to the 1080p TV display spec, probably to shave cents of some controller somewhere, or to share a production line. Apparently it's vital that the hundreds of millions of computer displays made each year have everything in common with the non-existent 15" TV market, or whatever the fuck.
Luckily, there's a lot of progress on making 4K resolution the new standard for video, which means that it should trickle "down" to computer displays. Despite the name, the new standard will have 3840 x 2160 resolution, but that is still notably higher than what Linus is asking for, providing 183 dpi even on a 24" display!
If you can't wait, there's going to be affordable 4K TVs appearing soon with HDMI input. Just replace the monitor on you desk with a TV mounted on the wall behind your desk. You'll probably need a new video card, but the good thing is that most OS-es now hardware accelerate desktop composition, so the result should be silky smooth. You might even be able to get 120Hz going, but don't hold your breath: display connectors haven't caught up with the required bandwidth. Your 3D card might be able to generate a 48-bit 8.3 megapixel image at 120Hz, but that's almost 50 Gbps, and there is no PC video standard that will carry that.
Next, the operating system vendors need to get their heads out of their asses and finish implementing proper multi-resolution support instead of the half-assed job they've been getting away with for decades because of the persistent assumption that higher-resolution = bigger-surface-area!
exercise and vitamins and good food.
Oh good, advice from a Slashdot armchair physician.
Unfortunately, what you don't know can quite literally kill you: the influenza virus can do more damage to young healthy people than the infirm, and some strains infect over 30% of the population, irrespective vitamin pills or yoga classes.
Read up on the 1918 flu pandemic and then cytokine storms to gain a glimmer of understanding into why research into a flu vaccine is more important than almost any public safety measure you can think of. Short of nuclear war, there's not a lot of things that are likely to wipe out a significant fraction of the human race, but the flu is one of them. We're practically overdue for a strain deadly enough to kill more people in a year than WWI and WWII combined.
I'd like to see you try to keep your attitude towards healthy living as the best defense against a viral plague when the government starts hauling away the bodies of your neighbors by the truckload.
Unable to explain to me why Cisco was so much better
There are some advantages to going "All Cisco", similar to the advantages of going "All Microsoft" or whatever:
- Huge pool of highly trained talent to pick from. Cisco certified people are easy to get, at both the low end and the high end.
- Good consistency in their products. Excluding their most exotic stuff and the cheapest consumer stuff, pretty much everything Cisco makes uses IOS or is IOS compatible to a degree that you can't tell the difference. You learn it once, and that's it, you know all their products.
- Complete product line. You can start with an entry level firewall and router, and upgrade to multi-terabit telco grade routers without ever having to throw out your knowledge or tools and start over. If it's a digital cable that you can plug into a router, Cisco almost certainly sells a module for it. If they don't, someone sells a compatible one.
From what I've seen, their competitors try to undercut them on price, often successfully, but then the IT department needs two or three vendors to meet all their networking needs. For example, Cisco sells blade-chassis IO modules (integrated switches), and even VMware vSphere "virtual switches"! If you have VMware on HP Blades (very common), then you either go Cisco, or live with the inconsistency. A lot of vendors will sell switches and routers, but not firewalls, VPN concentrators, WAN accelerators, or something. Suddenly, you need IT guys trained ina bunch of vendors' network equipment, you need three different management and monitoring tools, and your op-ex is through the roof. When you call support with a problem, the vendors will all point at each other, and meanwhile your links are down and your users are screaming at you.
On the other hand, $100M seems a bit much, even for Cisco. Sounds like they put a half-assed effort into the bid, and didn't pick the most cost-effective devices or just didn't give the right educational discount or something.
Facebook and Google seem pretty lacking in the big names
They're special, and aren't even remotely representative of a typical business. The way they build infrastructure has more in common with supercomputer design than business data centre design. For example, Google was using 100 Mbit switches when everyone else was starting the upgrade to 10 Gbit!
Seriously, what the fuck are you doing that depends on the exact way that tabs are displayed by other people!? Why would it possibly be that important? Just how fragile is your workflow that it's broken by someone else's display metrics?
Maybe you need to take a long hard look at your toolchain, then throw it outside in a heap and set fire to it.
I've been using whitespace-insensitive diff and merge tools since the 90s, and I reformatters since 2001 to solve even the largest formatting inconsistencies. There is never a reason for any programming task to be "broken" by the use of tabs, spaces, or any combination with any configuration. The tools to fix any conceivable problem have been around for over a decade.
If you're finding you're writing regular expressions looking for a specific number of space-equivalents made up from tab characters, just stop. Re-think your career in programming, and considering going into the secretaries typing pool. You'd fit right in, because many of them also still haven't figured out that a tab is not the same thing as 'n spaces'.
Next, you'll be complaining that people are putting spaces in their file names...
Incorrect -- C# does have CPU agnostic binaries! Just select "AnyCPU" in the compiler options of the project, and off you go.
How the fuck was your post modded +5 Informative? Oh wait, I forgot, everything Microsoft is clearly inferior according to the Slashdot hive mind...
Everything is transparently in the cloud and just works
That's such a convenient "feature"!
"I see you are trying to pirate Microsoft products. Please wait while I send your personal information to the FBI." -- Clippy v8
You don't get to see Microsoft's development versions and you don't get to see Microsoft's bug database.
You're looking in the wrong place!
They're called features, and they're on the technet website for all the world to see.
Like how in older Windows versions, disks would be auto-mounted, and NTFS didn't have native active/active capability. In other words, if you made the slightest mistake in your FC zoning, then you could kiss your multi-terabyte cluster volume goodbye.
I'd disagree.
Bad code is bad code whether it is old or new, but with new code you're much more likely to be able to use new tools, which are generally speaking vastly better than old tools.
For example, with .NET you can use Visual Studio and with Java you can use IntelliJ IDEA. Both of them will give you powerful refactoring capabilities and help you navigate unfamiliar code. It's not just IDEs either, there are huge tool chains built around the new stuff, like static analysis and runtime capture such as IntelliTrace. Both of those do wonders for finding hidden issues in someone else's code. Even with C/C++ code you sometimes hit a wall with very old code bases that newer tools can't process.
I once had to support an application written in Clipper for 16-bit DOS with modules written in a dialect of C so old that practically nothing could compile it. There is nothing out there to assist with that crap. You basically get a choice of your favourite text editor, and you should consider yourself lucky if you get syntax highlighting and stack traces after a crash!
Meanwhile, I've solved issues in compiled binary code using Visual Studio. For example, I used the Concurrency Visualizer to figure out why iTunes hangs on my computer for hours. Turns out that one of its threads get stuck in a loop waiting for a synchronization primitive shared with the Bonjour service. I uninstalled Bonjour, and hey presto, problem solved! Solving issues like that in minutes instead of days or weeks is why I avoid anything written in languages other than Java or C# like the plague.
Yeah, I've noticed this before, and it's insane.
The .NET Framework and VB/C# in particular are a bit strange in that they have much better perceived performance on a desktop compared to Java, the closest equivalent, but actually have very poor performance. Java is something like 2x faster in benchmarks!
This is because unlike Java, Microsoft has a sane startup sequence for applications. The .NET framework shares DLLs, shares pre-JIT-ed uncompressed native code, etc... In contrast, Java lives in an isolated bubble world and repeats every single step of the launch sequence every time, for every application, no matter what. It unzips JAR files every time, for example, which is crazy slow. It interprets instead of JITs during the first pass, which is crazy slow. It never caches anything. It never shares anything between processes, including the entire Java runtime itself.
On the other hand, Java wins benchmarks because its JIT generates a whole bunch of fancy optimisations, sometimes even with runtime profiler-based optimisation. Meanwhile, there's a section in the C# manual somewhere that states something along the lines of "The C# compiler does not perform optimisations. If this is required, use C++/CLR". Similarly, the .NET JIT is not as good as the Java JIT, and doesn't do anywhere near as many optimisations. The .NET Framework manual states somewhere that "optimisations should be performed by the high-level language compiler". Err... what the fuck?
The result is that .NET apps written in VB or C# are much more responsive than Java apps, but lose benchmarks. On a 3GHz Intel CPU, this just doesn't matter any more for typical GUI apps, or even some games. On a phone, Java's advantages are much more important. The JRE is permanently loaded, so most of the startup performance issues are gone. Some phones reduce startup times by sharing various things, which Java on the PC doesn't. Some phones pre-JIT Java apps. This is why Android can run a Java-derived language and get great performance.
The state of .NET performance was good-enough for a 1.0 release on high-performance PCs, but Microsoft dropped the ball by not continuing to optimise it to have better throughput for high-performance server applications and low-powered embedded applications like phones and tablets.
ClearType increases that apparent resolution in one direction only by about a factor of two. In theory it sounds like it should increase resolution by a factor of three, but that would result in coloured fringes around the letters, so filters are applied which reduces the benefits but prevents the issues.
A second problem is that that the direction in which ClearType works depends on the physical arrangement of sub-pixels on the screen. On a normally aligned PC monitor, this is great, because text needs horizontal resolution more than vertical resolution, as most glyphs have thin vertical lines close to each other. However, as soon as you rotate the screen the benefits of ClearType are hugely reduced. In the PC world this is rare, but with tablets it's common. I'm reading an eBook right now on my iPad in portrait mode, because that matches the page layout of a typical book. Reflowing the content for landscape mode isn't always possible, for example with PDFs.
The iPad has ~4x the resolution of the Surface tablet, and it also has anti-aliasing to further refine the edges of fonts. Sure, it doesn't have ClearType, but it doesn't need it!
On top of that, the Microsoft marking guy is carefully skirting around a much more important detail: ClearType does exactly nothing for all other graphics, such as vector art or bitmap images. The iPad meanwhile has 4x the pixels to throw at everything, not just text.
Sure, I could waste my time reading his reference, or... just open my eyes and look at the obvious difference.