Comment Last thoughts (Score 1) 235
Whatever the memory was, the last second of it was the brain thinking to itself, "Oh no, not again."
Whatever the memory was, the last second of it was the brain thinking to itself, "Oh no, not again."
18 years ago, I wrote a DOS-based keyboard lock intercept that used keydown/keyup in addition to keypress. Current password schemes use the sequence of keypresses only. Mine captured when a key was depressed and when it was released, such that you could have a passcode consisting of:
Depress H
Depress E
Release E
Depress L
Release H
Release L
Depress L
Depress O
Release L
Release O
This sequence spells out the word HELLO, but is somewhat more secure than HELLO at the console as it also requires the press/release to be in the correct order. This was back in the days and in an environment where shoulder surfing a password was a bigger concern than over-the-wire interception.
Ultimately, regardless of what information goes into the passcode, the bottom line is that we're still thinking in terms of the user supplying some sort of secret identifier (we'll call it a passcode) known only to them, and the system storing it in some manner and validating against it for future authentication attempts. If this passcode is a short sequence of characters ('password'), a long sequence ('passphrase'), a sequence containing additional information ('enhanced passcode'), or a series of challenge/response pairs ('passcodes') all we're doing is making the passcodes more complex. We're not making the method of authentication more reliable.
So right now we're stuck with trying to secure the means of storing and transmitting that information. We don't store passwords in plain text anymore. We don't use reversible encryption anymore. Now we encrypt the means of transmission. The means of transmission is crackable. Hash codes are crackable. So we keep working to make them stronger, but it's the same arms race all over again.
And now I have to run to a meeting.
There's plenty of evidence that sitting in front of a computer screen for 10+ hours a day is unhealthy, and that you are generally less productive after a certain amount of time working. Certainly there are exceptions, where you can be highly productive in a marathon session, but those occur when the muse strikes, not on demand.
If your boss is dead-set on long days (or at least, 50+ hours a week), you could offer some compromises:
* Extend your pay at an equivalent hourly rate for the extra time. If you were nonexempt you'd get time and a half. Some companies pay a reduced rate. I like equivalent hourly rate.
* Give you a long (2-3 hour) break in the middle of the 10 hour day. Yes this means a very long day, but you can spend that 2-3 hours napping, playing games, buying new toys, or even going home if you live close enough to the office. This also can get you out of rush hour, if you go in early and leave late, thus reducing your overall commute time.
* Instead of 5x10, try 6x8 or 5x9+1x4 or something like that. Yes it means giving up one day out of your weekend but may be less stressful than 5x10.
* Let you work on side projects during that 5x10, say, 4-6 hours a week.
These are just some examples. Of course if he's not dead-set on the 5x10, just convince him that he won't get 2 hours of extra productivity for the 2 hours of extra labor, instead he'll burn you guys out sooner and increase turnover.
IMHO, cool shirts are cool; lame shirts are lame. My company gives every new employee a blue and/or white polo shirt with the company logo on it. These shirts are NOT mandatory attire at any time, but are still frequently seen around the office, and occasionally seen outside the office.
If it's a shirt you would wear by choice, then it's not a problem.
As someone who straddles the fence between being a developer and being a manager (I'm upper management, but at a small business that means I still occasionally get involved in the coding) on the rare occasions that we have to ask the developers to stay late to fix something, get something out the door, etc. I'm almost always staying late with them.
When the manager can provide useful input (either by helping get the code written, testing, communicating status with the customer, etc.) their presence helps achieve the goal and helps keep morale up. Even when the manager can't provide useful input, their presence (in their office, not interfering) still helps keep up morale, and lets the developers know their efforts ARE noticed and appreciated.
I say let the managers stay late with the developers - but keep out of the developers' way.
Add an attribute to all manner of embedded objects giving the browser a hint as to the nature or priority of the content. This serves two purposes:
1) The user can instruct the browser to render the page without waiting on "low priority" content such as ads or images
2) The user can instruct the browser not to retrieve certain types of content
3) During expected high traffic periods the site could dynamically adjust the content type hints to further improve the user experience
Hmm. Maybe I should patent this.
Of course, it all depends on what you want to do with your career, and where you want to go to school. The programs I list here may not be available everywhere, and may not be called the same thing everywhere.
If you want to work in software development, I would *strongly* recommend a degree in Software Engineering, or some other degree program that covers programming, design, testing, requirements, and maybe even a little software project management. These are areas frequently not covered by Computer Science programs, and are important for any software developer who wants to progress beyond the level of Junior Code Monkey. If you want to be a team lead, engineer, architect, etc. you need to know more than just the theoretical aspects of CS. IT or IS degrees often won't cover this, they're more oriented towards managing information systems rather than developing them.
If you want to get into management, an MBA is one route, though that is a more general program. Many schools offer technology-oriented management programs, such as Master's of Technology Management. Though not as widely recognized as an MBA, it is a similar level of managerial education, tailored more specifically to the demands of managing technology projects or companies. An MSTM covers most of the same business practices as an MBA, just with a different focus.
If you want to get into research or academia, an MS in Computer Science may still be the way to go.
Finally, if you want to be a specialist, forget getting a Master's degree for now, and instead go after a high-level certification in whatever field or platform you want to specialize in.
Disk crisis, please clean up!