Please create an account to participate in the Slashdot moderation system


Forgot your password?

Comment Re:I am a Silverlight Developer (Score 2, Interesting) 580

We've found entirely the reverse re: enterprise users, albeit with a different plugin. Enterprise users are the ones who force OUR hands. They generally tell us what browser versions and plugins are available in their SOE, and we have to support that or lose the sale. Our clients are exclusively larger enterprises, and our success rate at saying "you just need to install [x] on the machines you're going to use this from" has been zero so far. As a rule of thumb, if it doesn't run on IE7 with Flash installed and nothing else, you're gonna miss some enterprise clients. We've just spent 18 months fighting to get our last client to accept us dropping IE6 support: even though they didn't have any deployed IE6 machines left, they wanted it in the contracts anyway.

Agree completely with you about end users. Most people don't see "you can just install this plugin, restart your browser, and this will work". They see "this doesn't work".

Comment Re:I am a Silverlight Developer (Score 3, Insightful) 580

I know I'm just jumping on the band-wagon here, but I'm a .Net developer who's worked for a couple of shops over the last few years and has seen plenty of new web products started. I've been on at least three projects where we wrote off Silverlight as an option, citing reasons like unwillingness to use the plugin, lack of available developers, and general opinions that the platform was on a fast-track to being canned.

Then again, most products I've worked on with a focus on having a great user experience tend to undergo pretty massive UI overhauls every 18 months to three years, and it's pretty common to use different technologies at each iteration. Being forced into changing UI platforms shouldn't come as any sort of surprise to you.

Comment Re:False Premmise (Score 1) 949

In the programming world, I always got the impression that, collectively, we respected the self-taught coder more than one who spent four years in school being spoon fed how to code.

You've created a false dichotomy. Spending four years doing a degree, for most of the people I hung out with, was nothing about being spoon-fed how to code - most of the people who needed that failed out and went elsewhere. Some of them struggled through. Lots of us were good coders long before we went to uni, and we breezed through and spent most of our time messing about with stuff that interested us: we often got worse grades than the ones struggling through, because they were focusing on meeting the criteria while we were off messing with something fun.

Most of the (good) coders I've ever worked with have been a mix of the two. They taught themselves to code, then went to uni and learned all sorts of new and interesting stuff about coding, as often from their fellow students as from the courses. I've met good coders without training, but I often (not always!) find that a lack of 'four years in school being spoon fed how to code' leads to all sorts of bad habits, poor practices, and general amateurishness. NOT, by any stretch, always! There are great coders who are entirely self-taught - but I'm gun-shy of them, because I've seen some of the bird-nests these people put together.

Comment Re:False Premmise (Score 1) 949

Agree, but I have an insight into the 'appearance' of anti-intellectualism. We have no respect for the traditional signs of an intellectual: research papers, degrees, citations, accreditations are meaningless: we just care about how GOOD you are. No degree can tell us that: all it tells us is that you satisfied some panel or series of lecturers who were interested, not in your ability, but in whether you satisfied some set of criteria that probably aren't really all that relevant.

It can easily LOOK like anti-intellectualism, but it's just that we'd prefer to judge for ourselves, thank you very much, and not defer to the opinions of a bunch of people we don't know.

Comment Re:Salting with username (Score 1) 409

Wow. Just wow. I NEVER learn anything from /. comment threads, especially about security (I would argue that nobody does, because most of what's said is wrong), and I think I just did!

It's worth noting that this benefit relies on your application server not being compromised, as if an attacker owns that, they can change code to move the client-based hash step to the server (changing the client AND server code), and still see passwords. So you're really only protecting against network-sniffing attacks, which are USUALLY prevented by SSL anyway. This actually gives me an idea, but I'll have to think about it. Something along the lines of using an MD5 of the sign-in page itself as a part of the process, so changing the page will break things. That's obviously vulnerable to exactly the same attack, but perhaps there's an extension to this which might work.

You have also prevented plain-text reveal in the situation where someone somehow intercepts the post-SSL stream but can't alter the application, which is certainly a possible scenario.

There's a major benefit, with this scheme, if you're using a dedicated ssl server and relying on a secure network behind that (which is not uncommon in higher-load applications) - compromise of the ssl server doesn't lead to compromise of plain-text passwords. The attacker would need to take the next step and own the application servers behind that, and given that this scenario only crops up in high-volume load-balanced systems, there are likely lots of identical systems to deal with, and (hopefully) switched-on administrators and security experts, so adding another step like that could vastly decrease the chance of a complete compromise. The attacker would already own login details to the attacked site (they could replay hashes from the owned SSL appliance), so there's every chance they'll take that and never even try to compromise the application code itself, thus never leading to the plain-text reveal.

Comment Re:Salting with username (Score 1) 409

You've basically described how it usually works, except that instead of having the client perform a hash, we have the client encrypt the communication over SSL. The advantage, that the password can't end up accidentally in a log file, means now that instead of the password, the hash that the client sends would end up in the log file. I'm worried that you're adding to the complexity of your code in order to prevent an avoidable bug - it seems like you'd be better to just ensure that sensitive information isn't showing up in your logs (which is a crucial step in avoiding security holes; it's specifically addressed in, for example, the PCI security standard).

Comment Re:Are MD and SHA easily reversible? (Score 1) 409

There should be one salt per user, not one per application. This means that the whole effort to generate a rainbow table is only applicable to the one user you're trying to recover the password for; the rainbow table for the next user will be totally different, because there's a new salt. This means that all of your work to hack one account can't be re-used for the next. Salting isn't about preventing this sort of attack; it's about multiplying the effort to compromise n accounts by n. If it takes the attacker 5 days to compute a nice big look-up table, they now have to repeat that per account, instead of having now compromised every account.

Comment Re:Who cares what method? (Score 1) 409

Uh, what? The browser hashes the password? Now you don't even NEED the password; you have the hash, and that's all the client needs to submit to gain access! You just pretend that you hashed the password and transmit the hash. No password needed! Unless, of course, you submit the password AND the hash, but that doesn't gain anything over just submitting the password (except perhaps proving that the client has a working hash function).

Remember, we're talking about what happens when the database of stored hashes is compromised, and having the browser do the hashing makes this scenario MUCH worse.

Comment Re:News at 11 (Score 2) 409

A correctly-implemented salted-password scheme uses a different salt per user - it doesn't even matter if it's trivial to predict. The point is that it multiplies the computational load to compromise n users by n. You can't generate a single look-up table any more.

Further, the salt is combined with the key, not the user's password. If it was just combined with the password before the encryption, when you used your look-up table to find out the (password+salt) used to generate a particular hash, you would then de-combine the known salt and have the password! Simple.

Finally, because the salt is combined with the encryption key, using one salt for your whole system would be no different to just using a different key.

With the correct scheme, adding a per-user salt means (even if the salt is trivial to discover) you are using a DIFFERENT key to compute the hash for each user. Now you may still be able to generate a large look-up table of hashes to compromise an individual hash, but it will only work for ONE user account (barring salt collisions), and so a 24-hour run (your number) will be required PER USER ACCOUNT. This means that a few dozen, or even a few hundred, accounts may be compromised, but this will be a much smaller fraction than if you weren't using salts (or were using them incorrectly, as is so common).

Comment Motivation levels (Score 1) 997

I don't care enough to read through and make sure I'm not repeating what's already been done to death. I've worked for a few small companies, and seen some things work and some things fail dismally.

One thing I have definitely seen is that the typical employee has motivation for about 20-30 real, productive work hours per week. Anyone who puts in a real, near-peak 40 hours is a superstar, and I'll do anything to hang onto those people. Regardless of how much someone shines during an interview, it's very hard to judge this, and I find most new hires tend towards about 20 hours.

The absolute worst way to increase this is to just ask them to do it. Especially when they already aren't being particularly productive during part of their week. Their productivity will sit at about the same level. Their 'sitting at their desk pretending to work' time will increase. They'll get home later, have less leisure time, and their productive hours will start to creep down.

What I have seen work is incentive-based volunteering. I worked for one company for a while where I tended to work a few extra hours during the week (I probably averaged 10-hour days, when I only needed 8), and I felt more productive there than anywhere else I've worked. My salary was actually a little below what I could have gotten elsewhere, but the team culture was amazing. 4pm on Friday was officially Beer (/ non-alcoholic alternative) O'clock. There were plates of fruits and pastries in the kitchen every morning. There was an amazing coffee shop across the road, and we had an account there and were encouraged to have small-group meetings there. The boss put on a barbecue once every couple of weeks on the weekend, and he did all the cooking (for 15+ people) himself, and the food was VERY good (like large, high-grade steaks, expensive and well-prepared fish, oysters, and so on). If it weren't for that unfortunate matter involving the FBI, our Federal Police (we're outside the US), and MasterCard investigators, I'd still be happily pulling 10+ hour days there. All of that effort cost MUCH less than paying us for the extra time we put in, and given the salaries were a touch below average, we probably cost less overall than a typical software team who would be less happy, less productive, working 8 hours a day and not really pulling their weight. Another place where I worked took everyone out water- and jet-skiing once a month (the boss owned several boats and jet-skis).

If the boss really won't look at paying you more or giving you stock (and, from what I've seen, there are lots of people who don't seem to be more motivated by more money), he should look at doing something genuine to improve his employees' lives.

Comment Re:Oh boy (Score 1) 240

The number one lesson I drum into fresh coders, when I work with them, is "email early and often". When things are running a day behind, email your manager. When you're not clear on the specs, email your manager. When you've completely and totally screwed up and affected production client data, email your manager. NOW. Your manager is there for two things (that are relevant for this):

1. Work out issues, keep the team on target, and make sure the (internal or external) clients are happy and don't even realise when the team royally screws up.
2. Weed out (/fire/let go/ditch/whatever) people who get in the way of goal 1.

If you're emailing your manager early, giving him the chance to do damage control, and letting him get you help when you need it, no matter how badly you screw up, you're not too actively getting in the way of goal number 1. If you screw up and don't keep him totally in the loop, you're making sure he can't achieve goal 1.

Email early and often.

Comment Passion or fad? (Score 3, Interesting) 240

I've been the student who desperately thought I wanted to write computer games. I've been the interviewer (for a financial software house) interviewing ex-games-programmers. I've been a team-lead mentoring ex-games-programmers. I've worked with a 1st-level phone support guy who'd spent 6 years as a hardcore C++ game developer but couldn't find any software work and had to take a support job.

First of all: tell them not to do it. The glory isn't what they think. The fun isn't what they think. The hours will suck, and the rewards will be average. Their shop will go under, and they will be competing with their 30 colleagues who are also out of work for whatever local jobs are going. They will come out as hardcore coding junkies with mad skills, and then end up taking jobs as interns under 'developers' with half their talent.

But: they will work with a bunch of young people, on crazy deadlines and massive unpaid overtime. They will meet some crazy people. They will eat a lot of pizza, and they will get free time on their competitors' games. They will be part of a tightly-knit, fast-moving industry which teaches them amazing technical skills. They will get no credit for it.

If they're sans-girlfriend, have few commitments, and want a few years of madness which they'll walk out of at the end with few rewards apart from the experience, they should pursue it. They need to know that it will suck the life out of them, they will feel under-appreciated and over-stressed, and they will probably need to rely on friends and family to get through lean times. It's an option when they're young. It's like traveling. Do it now: you won't be able to when you're older.

I'm speaking purely from a coding perspective, when it comes to skills. Maths, physics, and good coding skills. They need to know all about pointers, recursion, memory-management, event loops, and algorithm efficiency. They should pick an open-source engine or game, and try to contribute (this will help massively in landing a job).

Most importantly... they shouldn't do a FullSail course. Or whatever. Game programming is a long-term prospect for ... maybe 1% of gaming coders. I made that statistic up, but it's not high. You will move on. When you do, you do NOT want to be showing up to your interview at the software branch of some financial firm or engineering shop with no credentials other than a games-programming course and game programming experience. CS and some physics and maths courses will go a long way towards landing you a decent 3rd or 4th job. A games-programming-centric accelerated course will dump you in your ass in 4 or 5 years time with no credible education and barely-credible experience (however unfair it is, most people interviewing you will NOT lend your years of low-level C++ development much credit at all).

There you go. Doing a focused course MIGHT land you a game-software job, at massive cost to your future. Doing a CS course also MIGHT land you a game-software job. There's probably a slightly lower chance (or perhaps even a slightly higher chance!) But, your fall-back and long-term career prospects will be massively better off with CS. When you fall in love, buy a house and a puppy, and have kids, you will have career prospects at companies which leave room for those things.

I've seen it. Go the focused-games-programming-course route, and you end up with 6 years of good software development experience and having to take a crappy support job at a company which doesn't give REAL developer jobs to people with games programming degrees, making 10k less than the graduate CS guys. It's shit-unfair, but I've seen it.

Slashdot Top Deals

"Here at the Phone Company, we serve all kinds of people; from Presidents and Kings to the scum of the earth ..."