It's about like a typical person complaining that they can't find enough people to mow their lawns at a competitive rate, so they offer to distribute $2400 towards the problem (to be split up between 5 local schools).
MS is awarding is less than what a single, typical developer in Washington state makes in a year, a fraction of which alone goes to the school(s) that win. I think if it were $10 million across the top 10 schools evenly it would be a lot more impressive, and impactful. Or, just maybe $5 million across 5 schools, and $50k scholarship to 100 students chosen from those schools for use in higher education later on.
As it stands the award money (might) pay for a teacher at one school, and a T/A at another, but it's really a drop in the bucket, and won't impact any change in the system. MS is probably spending close to as much as the award on the website for the award, and whatever marketing they are doing here, for what is a really pitiful award.
And you know that these guys aren't downloading the same updates from Oracle to the servers they're being paid to maintain. Sorry Mr. Business Owner, that IT guy you hired to run your servers is downloading our free updates, and installing them on your servers violating our copyright...
The fact is it's a bit of a self-propagating system. Kind of like it's current owner Oracle in general. Programmers who work in those environments persist their poorly performing "enterprise patterns" to the exclusion of other options. It happens in.Net too. I don't even blame the language so much as the developer ecosystem. I can't tell you the number of times I've seen in Java and.Net entire structures of Interfaces, and Classes, and Factories that which could be solved in a couple dozen lines of code in a single class. Sometimes the simpler, less enterprisey way is the better way. I even had friction from an enterprise architect trying to introduce automagic WCF client creation/registration in a solution that was already using Unity instead of explicit clients to the explicit service binding(s) implemented as a passthrough of the original interface. Fortunately, when I showed that it could be done wiring up a service binding with a single line, and the client with a single line in the config file, it was a much easier sell for the rest of the developers. Abstraction is awesome when it means less code, and less configuration. If that means writing an abstraction once to get that with all services, cool.. if it means having layers of crappy interfaces with only a single concrete implementation for no other reason, I'm less for it.
I've spent most of the past year and a half with my time split between.Net and NodeJS... and I have to say, even without all the type safety and intellisense of VS and.Net, that I find NodeJS solutions, even relatively large ones (properly split up into testable, reusable modules) to be far nicer to work with than either Java or.Net have been. I'll take an application with a simpler codebase, with good unit test coverage any day. That's the difference of a platform more than the language itself.
It's very difficult to take an AC's software suggestion seriously. This is the second mention of Suricata by an AC in the comments so far, and pretty high up. It does look interesting though.
The new pricing puts them level with some 10" Android tablets... for roughly equivalent hardware would you choose Android, which already has *** apps, or a windows OS with only a handful of apps you might want to use? The issue is, they need to be priced below Android devices with similar hardware, or really improve marketing... As it stands, it's similar hardware that after price cuts is *now* at similar pricing, and still at a software disadvantage.
You can't be priced as high as a "high end market leader" unless you are better... Like MS Windows maintains dominance by "all the applications" that run on it... RT doesn't have that advantage. Beyond that, most windows apps run like crap in a tablet form... the number of apps for windows tablets is dwarfed by iOS and Android at this point... they needed to be at a price point below Android tablets with similar hardware to enter that market. At the reduced price point, the Surface RT is *now* matched up against the Nexus 10. That doesn't even account for the number of 7" tablets around the $200 price point that seem to be the biggest sellers for the past year.
I think it comes down to pricing alone... the RT tablets were quite a bit more expensive than most Android tablets, and didn't have near the appeal of the iPad... so pricing it at, or more, than an iPad was a stupid move if you're trying to penetrate the established tablet market. MS assumed they could get in like they did with XBox (a loss leader for years, and a much better development environment), vs the RT which was a marginally better environment, but priced themselves out. I think pricing alone was MS's single biggest mistake.
Honestly, I don't think either of those issues had an impact on sales... The RT tablets should have been priced somewhere between the iPad, and Android tablets... if they were around $250-300 they would have sold fine (relatively speaking). As it is, they were priced against more capable, and powerful, low end laptops. They were dramatically more expensive than most competing tablets. They were doomed from the start on pricing alone.
... It's not the programmers driving the nice cars.
Speak for yourself. About half the programmers I know have pretty nice cars, or could if they chose to. I'm driving a 2012 Dodge Challenger R/T myself.
I'm pretty sure their employees in the area pay property taxes (primary source of education, hospitals, roads, etc).
Personally, I would much rather have legal limitations for holdings of non-living entities... and eliminate corporate taxes altogether. Nuke the corporatism and protections that go along with it. In the end, corporations never actually pay taxes, their customers do... (for the record, I'm also not a fan of property taxes either).
Not at all... one of the few things I found impressive wrt cold war era Russia was their educational system. I've worked with a couple of Russian programmers as well, both of them more than capable.
Automatic Login / Remember Me: Ideally only a token/key to a server-side record. Said record should probably also have your useragent string (for spoofing detection. This is used on the login screen to auto-log you in, if not already logged in, and create a new authenticated session value. If you explicitely logout, this should be deleted on the client and the server.
Session Token/Cookie: A token used for a single session, you may want to also correlate this with the user's agent, as well as their IP address, depending on your needs. If you logout, this should be deleted and the server-side record expunged. This should be associated with server-side records and temporary information necessary.
Authentication Cookie: A server-side encrypted cookie that is used to store your username and roles, it should also contain your current session token. This is to reduce the need for potentially expensive rules lookups and to validate access early on. You should also check against the current session... a non-match should invalidate said cookie. Any kind of logout should delete this cookie.
By using this combination of cookies you can have additional validation constraints in place. The remember-me is only really used from the login screen as an auto-login and redirect flag. This should be checked against a database. The session cookie is again only a lookup id, so that you can access/check other information... A separate Authentication Cookie allows you to keep some information in the cookie, and it should be checked and validated against the active session id, which has its' own checks.
A logout should remove all three cookies. The cookies should be unique per system... a 1 - many relationship of users to autologin / session cookies in the database. You also may want to limit 5 sessions/autologin to a user, deactivating any but the 5 most recent on use. You may also want to check last use of autologin... if a cookie hasn't been used in over a week, then it's invalid... if its more than say 3-4 weeks old, it's in valid.... for session cookies, that timing should be less, depending on your needs.
I'd actually take it a small step farther and tie the cookie id on the server to the browser's useragent string... string changes (unlikely in an active session)... session/autologin are nuked as well... though not 100% fullproof, would prevent at least some casual stealing of cookies.
I would say the logoff should invalidate the session cookie for that machine, and that it should also delete the remember-me cookie... beyond that, if the remember-me cookie/token is the same on different machines, it shouldn't be... I tend to login to google on 4 different computers, and 3 different mobile devices regularly... it's hard enough not having to re-login to one of them a day (with remember me), it's just me using these things... I'd hate to have one expire take them all out.
If VS were 3x as fast, it wouldn't be as bad... it's just so sluggish, especially if you have a couple plugins loaded. Web Essentials brings it to a crawl, and update3 includes most of them now. I use WebStorm (based on IntelliJ) for NodeJS stuff, and it screams in comparison. Eclipse is as much of a beast though... I like the VS2012 UI a lot (with the dark theme), but it's just not worth it.. can we get the old ActiveX based UI back please?
I really like WebStorm for NodeJS dev... hands down the friendliest experience I've had with an IDE generally speaking. I do think that VS has a nicer UI, and that NuGet is a little friendlier than the IntelliJ plugin system... that said, WebStorm is far more flexible for me.
Okay, so create a Ruby -> JS transpiler... there are plenty out there for other languages (Dart, CoffeeScript, TypeScript etc) that many people seem to be perfectly comfortable with... Oh yeah, you still have the DOM problems, which are emphatically *NOT* part of the JavaScript language.
In most cases those aren't JavaScript incompatibilities... those are BROWSER incompatibilities... I *REALLY* wish people could understand the difference.
For windows, you have *ALL* the software available that runs on it... one of the reasons it can command the price it does... Linux/BSD are free to download/use with a fair amount of software... Anything else commercial needs to have a serious niche (which OS/2 does for some applications), or be priced below windows or offer more, but that isn't really applicable to a home user at a price that is as much as Windows (more if your computer is pre-loaded with it).
It's about like a typical person complaining that they can't find enough people to mow their lawns at a competitive rate, so they offer to distribute $2400 towards the problem (to be split up between 5 local schools).
MS is awarding is less than what a single, typical developer in Washington state makes in a year, a fraction of which alone goes to the school(s) that win. I think if it were $10 million across the top 10 schools evenly it would be a lot more impressive, and impactful. Or, just maybe $5 million across 5 schools, and $50k scholarship to 100 students chosen from those schools for use in higher education later on.
As it stands the award money (might) pay for a teacher at one school, and a T/A at another, but it's really a drop in the bucket, and won't impact any change in the system. MS is probably spending close to as much as the award on the website for the award, and whatever marketing they are doing here, for what is a really pitiful award.
And you know that these guys aren't downloading the same updates from Oracle to the servers they're being paid to maintain. Sorry Mr. Business Owner, that IT guy you hired to run your servers is downloading our free updates, and installing them on your servers violating our copyright...
The fact is it's a bit of a self-propagating system. Kind of like it's current owner Oracle in general. Programmers who work in those environments persist their poorly performing "enterprise patterns" to the exclusion of other options. It happens in .Net too. I don't even blame the language so much as the developer ecosystem. I can't tell you the number of times I've seen in Java and .Net entire structures of Interfaces, and Classes, and Factories that which could be solved in a couple dozen lines of code in a single class. Sometimes the simpler, less enterprisey way is the better way. I even had friction from an enterprise architect trying to introduce automagic WCF client creation/registration in a solution that was already using Unity instead of explicit clients to the explicit service binding(s) implemented as a passthrough of the original interface. Fortunately, when I showed that it could be done wiring up a service binding with a single line, and the client with a single line in the config file, it was a much easier sell for the rest of the developers. Abstraction is awesome when it means less code, and less configuration. If that means writing an abstraction once to get that with all services, cool.. if it means having layers of crappy interfaces with only a single concrete implementation for no other reason, I'm less for it.
.Net and NodeJS... and I have to say, even without all the type safety and intellisense of VS and .Net, that I find NodeJS solutions, even relatively large ones (properly split up into testable, reusable modules) to be far nicer to work with than either Java or .Net have been. I'll take an application with a simpler codebase, with good unit test coverage any day. That's the difference of a platform more than the language itself.
I've spent most of the past year and a half with my time split between
How is int_minvalue - 1 handled? In .Net without an unsafe directive, it does bounds checking on the result and raises an exception.
It's very difficult to take an AC's software suggestion seriously. This is the second mention of Suricata by an AC in the comments so far, and pretty high up. It does look interesting though.
Damn, now I need to change the combination on my luggage.
Of course it was Intelligent Design.. it was the Vorlons.. sigh..
You forgot firearms, ammo, and alcohol (which will be the major commodities for trade).
The new pricing puts them level with some 10" Android tablets... for roughly equivalent hardware would you choose Android, which already has *** apps, or a windows OS with only a handful of apps you might want to use? The issue is, they need to be priced below Android devices with similar hardware, or really improve marketing... As it stands, it's similar hardware that after price cuts is *now* at similar pricing, and still at a software disadvantage.
You can't be priced as high as a "high end market leader" unless you are better... Like MS Windows maintains dominance by "all the applications" that run on it... RT doesn't have that advantage. Beyond that, most windows apps run like crap in a tablet form... the number of apps for windows tablets is dwarfed by iOS and Android at this point... they needed to be at a price point below Android tablets with similar hardware to enter that market. At the reduced price point, the Surface RT is *now* matched up against the Nexus 10. That doesn't even account for the number of 7" tablets around the $200 price point that seem to be the biggest sellers for the past year.
I think it comes down to pricing alone... the RT tablets were quite a bit more expensive than most Android tablets, and didn't have near the appeal of the iPad... so pricing it at, or more, than an iPad was a stupid move if you're trying to penetrate the established tablet market. MS assumed they could get in like they did with XBox (a loss leader for years, and a much better development environment), vs the RT which was a marginally better environment, but priced themselves out. I think pricing alone was MS's single biggest mistake.
Honestly, I don't think either of those issues had an impact on sales... The RT tablets should have been priced somewhere between the iPad, and Android tablets... if they were around $250-300 they would have sold fine (relatively speaking). As it is, they were priced against more capable, and powerful, low end laptops. They were dramatically more expensive than most competing tablets. They were doomed from the start on pricing alone.
I actually think that would be pretty awesome.
... It's not the programmers driving the nice cars.
Speak for yourself. About half the programmers I know have pretty nice cars, or could if they chose to. I'm driving a 2012 Dodge Challenger R/T myself.
I'm pretty sure their employees in the area pay property taxes (primary source of education, hospitals, roads, etc).
Personally, I would much rather have legal limitations for holdings of non-living entities... and eliminate corporate taxes altogether. Nuke the corporatism and protections that go along with it. In the end, corporations never actually pay taxes, their customers do... (for the record, I'm also not a fan of property taxes either).
Not at all... one of the few things I found impressive wrt cold war era Russia was their educational system. I've worked with a couple of Russian programmers as well, both of them more than capable.
Three potential cookies...
... for session cookies, that timing should be less, depending on your needs.
Automatic Login / Remember Me: Ideally only a token/key to a server-side record. Said record should probably also have your useragent string (for spoofing detection. This is used on the login screen to auto-log you in, if not already logged in, and create a new authenticated session value. If you explicitely logout, this should be deleted on the client and the server.
Session Token/Cookie: A token used for a single session, you may want to also correlate this with the user's agent, as well as their IP address, depending on your needs. If you logout, this should be deleted and the server-side record expunged. This should be associated with server-side records and temporary information necessary.
Authentication Cookie: A server-side encrypted cookie that is used to store your username and roles, it should also contain your current session token. This is to reduce the need for potentially expensive rules lookups and to validate access early on. You should also check against the current session... a non-match should invalidate said cookie. Any kind of logout should delete this cookie.
By using this combination of cookies you can have additional validation constraints in place. The remember-me is only really used from the login screen as an auto-login and redirect flag. This should be checked against a database. The session cookie is again only a lookup id, so that you can access/check other information... A separate Authentication Cookie allows you to keep some information in the cookie, and it should be checked and validated against the active session id, which has its' own checks.
A logout should remove all three cookies. The cookies should be unique per system... a 1 - many relationship of users to autologin / session cookies in the database. You also may want to limit 5 sessions/autologin to a user, deactivating any but the 5 most recent on use. You may also want to check last use of autologin... if a cookie hasn't been used in over a week, then it's invalid... if its more than say 3-4 weeks old, it's in valid.
I'd actually take it a small step farther and tie the cookie id on the server to the browser's useragent string... string changes (unlikely in an active session)... session/autologin are nuked as well... though not 100% fullproof, would prevent at least some casual stealing of cookies.
I would say the logoff should invalidate the session cookie for that machine, and that it should also delete the remember-me cookie... beyond that, if the remember-me cookie/token is the same on different machines, it shouldn't be... I tend to login to google on 4 different computers, and 3 different mobile devices regularly... it's hard enough not having to re-login to one of them a day (with remember me), it's just me using these things... I'd hate to have one expire take them all out.
If VS were 3x as fast, it wouldn't be as bad... it's just so sluggish, especially if you have a couple plugins loaded. Web Essentials brings it to a crawl, and update3 includes most of them now. I use WebStorm (based on IntelliJ) for NodeJS stuff, and it screams in comparison. Eclipse is as much of a beast though... I like the VS2012 UI a lot (with the dark theme), but it's just not worth it.. can we get the old ActiveX based UI back please?
I really like WebStorm for NodeJS dev... hands down the friendliest experience I've had with an IDE generally speaking. I do think that VS has a nicer UI, and that NuGet is a little friendlier than the IntelliJ plugin system... that said, WebStorm is far more flexible for me.
Okay, so create a Ruby -> JS transpiler... there are plenty out there for other languages (Dart, CoffeeScript, TypeScript etc) that many people seem to be perfectly comfortable with... Oh yeah, you still have the DOM problems, which are emphatically *NOT* part of the JavaScript language.
In most cases those aren't JavaScript incompatibilities... those are BROWSER incompatibilities... I *REALLY* wish people could understand the difference.
Sorry, it isn't really OO vs. Functional in this instance so much as the mindset of what I've seen as a typical OO programmer.
For windows, you have *ALL* the software available that runs on it... one of the reasons it can command the price it does... Linux/BSD are free to download/use with a fair amount of software... Anything else commercial needs to have a serious niche (which OS/2 does for some applications), or be priced below windows or offer more, but that isn't really applicable to a home user at a price that is as much as Windows (more if your computer is pre-loaded with it).