last updated:12 Jul 2004 19:07 UK time
|
 |
|
(Comments added for week ending Sun 11 Jul 2004) | View Other Weeks
|
|
| Object diagram | Sun 11 Jul | John Brown |
| Can I draw a class diagram with objects in it? |
| Sun 11 Jul | Cubist | No. |
|
| RFID | Sun 11 Jul | Li-fan Chen |
| Anyone here done RFID projects? Where do you find a reader and tags? Is it sitting next to the zip ties in Aisle 64? I can think of a few DIY projects involving it and if the reader is inexpensive and tags are a dollar each it could have quite a few applications. |
| Sun 11 Jul | Mike | I was just looking into this the other day. As far as I can tell (just from googling) the readers are still expensive - where I saw prices they were around $500. Anyone have better information? |
| Sun 11 Jul | Li-fan Chen | I have read articles where the RFID vendors are scratching their head trying to figure out how to prevent privacy invasion from getting out of hand. Some of them said you can zap a RFID chip at checkout so that Big Brother can't use it after. What's to prevent an idiot with malicious intent from using a monster zapper, walking into a Sears Store or Warehouse, and zapping all the product tags in the store? |
| Sun 11 Jul | Li-fan Chen | I found a canadian source (I am in Toronto) that seems kinda programmer friendly:
http://www.phidgets.com/index.php
Hmm.. any more places? I am also interested in bar codes readers :D (the tags are cheaper) |
|
| class dia conventions for non object oriented sys | Sun 11 Jul | Hemang |
| I am designing an object oriented model for a new system, which is connected with an existing non object oriented system. Some tables from old system are replicated in new system.
Query is how to show these tables in to class diagram.
I created classes for these replicated tables but how represent the actual original tables into class diagram. I cannot show these tables as classes as old system is not object oriented system and can’t show table symbol in class diagram as tables are the part of ERD not of class model.
What terminology/symbol should be used. |
| Sun 11 Jul | muppet from forums.madebymonkeys.net | Quit stealing our fucking jobs, you no talent Indian hack. |
| Sun 11 Jul | Babu | Please help these Indians perform their jobs, they are only working for $8 an hour and must complete their tasks for the American companies who hired them. |
| Sun 11 Jul | Anon-y-mous Cow-ard | Lets get ready to ruuuuuummmmmmmmmbbbbbbbbllllllllllle! |
|
| javascript mouseover popups | Sun 11 Jul | muppet from forums.madebymonkeys.net |
| I know theres a way to pop up a div with all sorts of creamy HTML and images in it when you mouse over a page element using javascript, but I havent been able to locate a decent tut. Anybody? |
| Sun 11 Jul | no name | Dear Muppet (from madebymonkeys.net),
Please do not do this.
Sincerely,
Everyone who uses a web browser |
| Sun 11 Jul | muppet from forums.madebymonkeys.net | ha
I'm not talking about popping stuff up when a page loads, I'm talking about popping up a small box of context-sensitive info when a user mouse-overs a highlighted term. I'm not looking to go nuts with it, either. |
| Sun 11 Jul | no name | If you promise to use it only for good and never for evil, I suggest overlib (google "overlib", 1st result). It's free to use, and if it doesn't do quite what you want it should at least be a good starting point. |
| Sun 11 Jul | muppet from forums.madebymonkeys.net | Neat. Thanks.
There are a few places where it's useful. Online supermarket fliers being an example. The local supermarket uses them, and I think it's a great application.
I want it as an alternative for distracting 'sidebars' on articles. |
| Sun 11 Jul | Clay Whipkey | I found this site a long time ago, and it has some decent stuff:
http://www.dhtmlcentral.com
including a script that does exactly what you are saying. If I'm understanding you correctly, you would be looking for this:
http://www.dhtmlcentral.com/script/script.asp?id=7 |
| Sun 11 Jul | matt | Actually you can do something like this (a dropdown/floating mouseover menu thing) using good semantically marked-up XHTML lists and the CSS hover pseudo-class-thingy. It needs a small javascript include in the case of IE, which (erroneously) doesn't like :hover used on things other than anchor tags, but it's still pretty neat, and should degrade gracefully for those without javascript, and screen readers etc.
http://www.alistapart.com/articles/horizdropdowns/ |
| Sun 11 Jul | muppet from forums.madebymonkeys.net | thanks matt! |
|
| Weird hardware problem | Sun 11 Jul | Philo |
| Last week I shut down my P4 system (which had been running for a few months). Went out of town for a week, came home, hit the power switch and... nothing.
No whirr, no HF spike, no video, nothing. Its like its not plugged in.
Powers good to the PS, but nothing on the power switch.
Any ideas what to check first? Can a PS just die inert like that?
Philo |
| Sun 11 Jul | free(malloc(-1)) | Yup. Happened to me a couple years ago. Machine was off for about a week, turned it on, PS was dead. |
| Sun 11 Jul | no name | Loose connection somewhere. My first thought would be the connection between the power supply and the power switch. That could've gone out months ago. After that I'd try the connection to the motherboard. |
| Sun 11 Jul | John Rusk | Something very similar happened to me recently. Normally, we never switch the machine off at the wall. But, one day we did. When we switched it back on, it was as if it had forgotten how to wake up again. The "on" switch just didn't do anything. They replaced the power supply under warranty and now its fine. |
| Sun 11 Jul | Aussie Chick | My modem did that.
Was Working fine, moved house, plugged it back in and it never worked again. |
| Sun 11 Jul | muppet from forums.madebymonkeys.net | Aussie -
That's referred to as the '10 foot' theorem.
It states that any piece of previously functional hardware -- be it a drive, an entire system, a modem, whatever... will cease to function forever when moved 10 feet or more from the location in which it was previously functional.
Corrollary - in some cases the hardware can be made to function again by replacing it in its original location. |
| Sun 11 Jul | Li-fan Chen | If your cdrom and hard drive does it's boot up initialization spins, but you don't get your happy BIOS beeps it could be the capacitor on the motherboard. I had one system die that way. The capcitors from 2002 is suspect because of a capacitor formula scandal in asia. |
| Sun 11 Jul | Your Pointy Haired Boss | One day my monitor wouldn't turn on. It was just dead. So I went out and bought a new one and gave the old one to my wife's brother who 'likes to fool around with electronic stuff'.
One day he calls me up and says that it was just a bad on/off switch. |
| Sun 11 Jul | Aussie Chick | The first IT technical tip I ever remember receiving was from my highschool computer science teacher. (we were using the old blue screen macs back then).
He told us never to use the on/off switches on the machine, always switch them off at the wall. His rationalisation being that it was cheaper to fix a powerpoint then it was to fix an on/off switch on a piece of computer hardware. |
| Sun 11 Jul | techno dude | I had a similar experience once a long time ago when ATX power supplies were very new. I ended up resetting the BIOS settings using the little red jumper, and then everything started working again.
Hardware is voodoo stuff! If you ever flip through datasheets for electronic parts, and observe the amount of assumptions and complexity of how things are supposed to work, you'd be scared to touch any on/off button.. :) |
|
| origin of spammers | Sun 11 Jul | George W. |
| China, South Korea, the United States, Russia and Brazil host more than 99 percent of all Web sites mentioned in spam, according to Commtouch.
http://www.builderau.com.au/program/work/0,39024650,39129741,00.htm?tag=tt
Spam is evil, so now Im putting China, South Korea, the United States, Russia and Brazil in my Axis of Evil.
Beware, evil-doers! |
| Sun 11 Jul | www.marktaw.com | That's just propoganda put out by the Australian spammers. Don't believe it! |
| Sun 11 Jul | Scot | No one is stopping you. Go for it. |
| Sun 11 Jul | Erik | http://www.fourmilab.ch/evilempire/ |
|
| dis-improving | Sun 11 Jul | Loser |
| I have about 10 years of programming experience and have been at this job for 3 years. The first 2 years my performance reviews were very good and my manager didnt seem to have any problems with me. There were never any major complaints about anything I did.
Last year he was promoted and his responisbilities greatly increased. He didnt pay much attention to me, but I mostly knew what I was suppsed to be doing and just continued working as usual.
A couple of months ago, out of nowhere, he had a private meeting with me and said he was not satisfied with my work. It was a complete shock. I asked why my reviews had been good, and he said it was to justify having hired me. I reminded him that most of my projects had gone well and that I seldom made mistakes. He mentioned very minor things as evidence that I am no good. I asked if he was trying to get rid of me so he could hire someone he thinks is better, and he said no. I asked why he wants me to stay if Im no good, and his answer was that our department does not like to fire people.
Since then, I have been trying to make sense of this. This manager is very tempermental, and was probably just having a bad day and needed to take it out on someone. Maybe his boss had yelled at him for something and he needed a scapegoat.
I am absolutely certain that I get better every year. Its absurb to think I was good a year ago and now Im no good.
Maybe Im taking this all to seriously, but now I hate going to work. I expect him to start raging at me over nothing. The only positive is that most of the time he has other priorities and doesnt even know what Im doing.
Does this sound like something that might blow over? Or could something have happened I dont know anything about that made him suddenly turn against me?
A little more background: what set him off was a mistake that I made. However it was not a big deal considering I seldom make mistakes. He has done the same kind of thing himself. But he took it as evidence that I am stupid and no good. I told him that Im always careful and dont usually forget anything -- his answer was that Im too careful and thats why my projects take too long. However, my projects do not take too long. He paid no attention to what I did all year, so had no way to judge.
Finally, I want to say that I know I am an intelligent person with a good understanding of software development. He told me (with no evidence to back up his statement) that my understanding is no good. This was after 3 years of him never saying anything like that to me. |
| Sun 11 Jul | Greg Hurlman | Monster.com |
| Sun 11 Jul | Neil Hewitt | In management circles, there's a name for this - 'managing out'. You need to get the head count down, or get rid of someone you don't want there (it can be for many reasons - you could be the world's greatest coder, but if you don't get on well with the rest of the team, or you rub too many senior managers' backs up the wrong way, you'll still get earmarked for the chop), but you can't fire them outright (either for legal or political reasons).
I don't know how it works in the US in 'at will' states, but in countries with a modicum of employment protection law it's usually illegal to take actions which could reasonably (in the opinion of a tribunal) cause an employee to resign - it's called 'constructive dismissal'. So managers have invented more subtle ways of getting people to quit.
I can't say whether or not this applies in your case, but believe me, it's not unusual. Job performance and productivity are not the only metrics on which you will be judged in a given position. Most managers would rather have a team of mediocre but cooperative team players than a few fractious superstars.
Again, YMMV, but to me this sounds like a classic demotivating manouevre. |
| Sun 11 Jul | Loser | As far as I know, I get along with everyone. My reviews specifically said that I'm easy-going and always pleasant to work with. I don't have any enemies that I know of. Of course things could have happened I don't know about.
One fact I didn't mention -- my manager's goal was to get me to increase my hours. I was a special case because I had requested less than 40 hours (with decreased pay) and got it. He said I have to go back to 40 hours because things aren't going fast enough.
(Never mind my reasons for wanting shorter hours and less pay).
I agreed to go back to 40 hours (with more $ of course). He knows I am not happy about this. Maybe this is part of his plan to get rid of me.
If he is using subtle methods to get rid of me, I will not be able to tolerate that for long. It's torture. I need to find out what his real motive is. |
| Sun 11 Jul | MugsGame | Alternatively, he's floundering in his new role, has just been dumped on by *his* boss, and needs a scape-goat, even if it's only to satisfy himself that he isn't to blame for the under-performance of his department.
Part of this is your fault. You say he couldn't comment properly on your performance, because he doesn't know what you're up to. Big mistake - it's your job to keep him informed, even if he doesn't seem interested, and doesn't explicitly list that as one of your duties.
The other potential problem is that the stuff you are working on, while well done and on time, may not be aligned with his own priorities. A lot of this can be about perception more than reality. Google for Managing Your Manager etc.
Where to go from here. Be proactive. Arrange a meeting to clear the air. There's no point being confrontational and arguing that he's wrong about your performance (even if he is.). Actions speak louder than words. Treat this as a 'I need your input to improve' meeting. Agree short term goals he wants you to work on. Have regular (at least fortnightly) status meetings to keep track of things and agree what you should be working on next.
Now, if his reaction to the above is still very negative and unaccommodating, than you know there's something more Machiavellian going on than poor perception of your abilities. |
| Sun 11 Jul | Loser | His priorities were definitely elsewhere, and he admits to being spread too thin. He may have been criticized regarding my last project taking too long -- there was a hardware problem (not my fault or responsibility) holding it up. He was too out of touch to know who was responsible for what.
I send him emails about what I'm working on, and always have. I think he was out of touch anyway, and under a lot of stress. He was promoted to being in charge of IT for the entire organization. This means I really don't have a manager anymore. I did have a talk with him, by the way, and tried to calmly explain my point of view. He seemed to understand parts of it. He admits there will have to be someone under him to manage the group I am in, and he knows it's too much for him.
So it is possible that things will improve, and I will likely have a different manager anyway. Yes, of course I am looking for a different job, but would rather not re-locate at this time. I want to give it a chance. On the other hand I do not want to stay around just to be someone's scapegoat. |
| Sun 11 Jul | Dot For This One | Right now at current job, my boss is pulling things like this. I am not too worried about job security because the director seems pleased with me, and I am assured that the manager has pulled this on everyone.
Maybe it is a perverse motivational technique. I am in fact working harder and I believe better since he started in on me. |
| Sun 11 Jul | Philo | First of all, a phenomenon I'm considering writing an essay on - the 'it's obvious' effect in human nature. Your manager has assumed that your responsibilities should be obvious to you, and if you're not doing what he thinks you should be doing, then you're 'not cut out' for the job.
He may have even said 'if you're not sure what to do, come see me.' The only problem is that you don't know that you're not doing what he wants you to, so you don't know to go see him.
The only solution is to propose weekly or bi-weekly status meetings. Go prepared with a one-page summary of what you've done, what you're doing, timeframes, schedules, etc. Leave your ego at the door, because he's likely to rip you apart (esp. at the beginning). But it gives you a short-term feedback loop.
BTW, 'My reviews specifically said that I'm easy-going and always pleasant to work with' - that's what I write when I can't think of anything else to put. Unless it's at the end of three pages of praise and gushing about all the stuff you've done, then it's a warning sign.
Philo |
| Sun 11 Jul | Mr. Analogy | It seems like you need to first verify how your boss really feels about your performance. And, if it's generally positive, make sure that the documented record (emails, whatever) reflect this.
Either your boss WAS having a bad day, or he's out to get you. If it's the latter, I'd find ou WHY: not his EXCUSES for getting rid of you, but the real reasons. Perhaps he DOES think you're doing a bad job. You need to calmly meet with him and find out what he SPECIFICALLY wants from you.
And remember, sometimes a manager will get irrationally mad (out of proportion to what you did wrong) and vent. Then, later, they want to feel like they're not flaky (inconsistent) so they look for ways to validate that irrational anger.
I had a boss that, while I was on vacation, had a lot of difficulty with a project I finished up. I had left incomlete instructions for secretaries to finish up something (my fault, big mistake). He then went over my engineering analysis and recalculated things. There was no one standard way to do this calculation. He chose a different method and claimed my method was used inconsistently. He then went on to 'write me up' for lots of other things that he had NEVER mentioned being an issue.
Turns out my only mistake was leaving inadequate instructions for the secretary. He never appologized.
Eplilogue: a year or so later, all three of the engineers working for him quit within about a week or two. All for different reasons, but clearly illustrates none of us WANTED to stay there. |
| Sun 11 Jul | Peter | Start a diary. Keep it at home. Make copies of memos. Keep them at home. Get your resume up to date.
Your boss appears to be trying to get rid of you. If you are older, like mid 30s or later, you may be experiencing the rampant age discrimination in this industry. People 35 and over tend to find it takes 6+ months to find a new job in software or engineering (while NSF and others claim there is a shortage of engineers, scientists and programmers).
He might be wanting you to leave, he might be having trouble at home and is taking it out on the nearest compatible target. I would not hold out much hope in determinining what his motivation really is.
Brought to you by the letters C, Y and A. |
| Sun 11 Jul | Loser | Bosses are just fallible human beings and become irrational like anyone else. The problem is they can easily blame a subordinate and get away with it. My manager's boss knows nothing about what I do and would not be able to understand it anyway. So my manager can say 'The project took too long because Loser is not a good developer. He seemed to be ok the first 2 years but has not progressed as expected.' Instead of saying 'The project took too long because I forgot to order the hardware and Loser had to wait an extra 2 weeks.'
He probably realized afterwards he had been a jerk and felt guilty about it. But feeling guilty often makes people even angrier at whoever it was they mistreated. I don't know if I should:
a) just hang on and wait until I get a new manager.
b) look for chances to make him aware that he was wrong to say I'm no good.
c) work harder and do a better job and hope someone notices.
d) get out before it gets worse.
By the way, I will need a reference from this guy if I leave. |
| Sun 11 Jul | Loser | [My reviews specifically said that I'm easy-going and always pleasant to work with' - that's what I write when I can't think of anything else to put. Unless it's at the end of three pages of praise and gushing about all the stuff you've done, then it's a warning sign.]
It wasn't the only good thing on my review. I did take it as a bad sign because 'easy-going' can be interpreted as passive and not very motivated. However, it does suggest that he's not trying to get rid of me because I'm hard to get along with. |
| Sun 11 Jul | Yoey | There's a great scene in an episode of The Simpsons where Montgomery Burns yells at Don Mattingly for not trimming his sideburns. So Mattingly trims them, and it's still not good enough. Eventually, he trims all the way around his head only to get fired by Burns for not trimming.
The allegory here is that sometimes you can follow directions pefectly but if you're doing it for someone who is crazy it doesn't matter what happens. Perception is reality sometimes.
Without knowing more about your situation I'd take this occurence as a sign of bad things to come, and begin either getting out of there of staking your ground. Whatever happens, good luck. |
| Sun 11 Jul | example | Once again, 'Office Space' covers this work situation:
Yeahhhh, I'm gonna need you to move your desk downstairs... we need to store some more boxes in here. |
| Sun 11 Jul | Christopher Wells | ' ... said he was not satisfied with my work. ... Does this sound like something that might blow over?'
The thing is that criticism (e.g. 'you are bad') is unproductive and tells you nothing.
Instead of criticism, you want to receive 'specific, positive requests'. For example, instead of 'you're a messy boy' it's better to get 'tidy your room before I see it'. It can get more specific: 'put your dirty clothes in the laundry hamper, make your bed and put your books and toys back on their shelves whenever you finish them, each time before you leave your bedroom.'
Note that the above example is 'specific' (exactly *what* to do), and it's positive (it's asking you to *do* something like 'tidy', rather than asking you to *not do* something like 'don't be messy').
Perhaps it will blow over: if you start doing what he wants, and you both know that. To do that, you need to know what he wants, which may mean asking for specific, positive requests. You could ask him now ... and/or at a next 'performance review', which should include not only a review of past events but also a set of goals for the next period.
> He mentioned very minor things as evidence that I am no good. ... A little more background: what set him off was a mistake that I made. However it was not a big deal considering I seldom make mistakes.
I don't know. I can't speak to his attitude ... but if I'm your boss and point out a mistake to you, it's because I want you to take it seriously. It's not that I want you to cry about it, it's that I'd like you to fix it.
> He has done the same kind of thing himself. But he took it as evidence that I am stupid and no good.
I write bugs occasionally and so do you. It's the *nature* of the bug, and especially the person's response to being told about, that might make me view someone unfavourably.
> I told him that I'm always careful and don't usually forget anything -- his answer was that I'm too careful and that's why my projects take too long. However, my projects do not take too long. He paid no attention to what I did all year, so had no way to judge.
So it sounds like you argued ... he was offensive, you were defensive, then you're counter-attacking ...
... which is not a good cycle to get into.
Shouldn't your goal be to understand and mollify him?
So I think that when you're with him you should accept that he is saying that there's a problem: and the question then is what to do about it.
> He paid no attention to what I did all year, so had no way to judge. ... He told me (with no evidence to back up his statement) that my understanding is no good.
That might mean that he doesn't understand what you're doing, and you don't understand what he's doing.
When I have a boss I make it my business to tell him what I'm doing, continually. For example:
- for each project, a schedule (in so far as it's own, as detailed as possible)
- for each week, my to-do list for this week
- for each day or three, a progress/status report
If you never see each other you can at least do that via email. It's best if he gives you feedback: 'no, don't do 'A as you're suggesting ... let's skip doing 'A' for now and do 'B' instead'.
At least give him the opportunity for feedback: a) because if he doesn't know what you're doing then he has no opportunity to customize what you're doing to his liking; and b) because if he *does* know what you're doing (because you're telling him) and he doesn't feed back then you have his implicit agreement, so that he's sharing with you responsibility for what you're doing ... more of a team effort, less confrontational. |
| Sun 11 Jul | Loser | I had always kept him informed of what I was doing. Several things happened that probably got him angry, and most of them were not my fault. But they came together in a way that made him feel I was the cause. For example, a program I wrote was not working and he assumed it was because I could not debug it. Actually it was because of software installed by the system administrator. Another problem was a page on a web site with out of date information, noticed by some one high up. I had done some programming for the web site but I have nothing to do with content. He felt I made him look bad because my program didn't work and the web site I had worked on had some incorrect content. Afterwards, I'm sure he realized how irrational that was. When the software was changed my program started to work again. And I explained to him I am not familiar with the content of the web sites, and he agreed that I was unlikely to notice a page being out of date. Especially since the content people had proof-read the sites and told me all the content was correct.
I really think he needed a scapegoat and there I was. I think it might be possible to turn this around, but it will be difficult to say the least. His ego wants him to see me as incompetent, even if his intellect knows I'm not. |
| Sun 11 Jul | Christopher Wells | > The problem is they can easily blame a subordinate and get away with it.
I've seen that.
> My manager's boss knows nothing about what I do and would not be able to understand it anyway.
That's not good. You need to say what you're doing using language he understands.
Is this your manager, or your manager's boss, you're talking about? In the latter case, your direct manager should be in the loop.
> Instead of saying 'The project took too long because I forgot to order the hardware and Loser had to wait an extra 2 weeks.'
By the way that would (and has in the past) showed up in all three of the kinds of emails that I send:
1) Project schedule: 'Testing (after hardware is delivered)'
2) Weekly to-do list: 'Cannot test this week because still waiting for hardware, therefore doing X and Y instead'
3) Semi-weekly status report: '- Testing (stalled: waiting for hardware)'
I'd also have asked him when the hardware will be delivered ... and asked him again if that day comes and it hasn't been delivered yet.
> look for chances to make him aware that he was wrong
Doing that isn't calculated to make him feel good about himself and his relationship with you ... it's 'negative'.
Better to be 'positive', e.g. 'make him feel that any troubles he may have had with you in the past are now behind you both, and that the two of you are working well together.'
> work harder
I'm saying it might just be a matter of *communicating* more 'effectively' (and/or more frequently). |
| Sun 11 Jul | Loser | Christopher,
You are assuming, on every point, that I neglected to do something obvious. I think it's possible that I did everything more or less the way I should have. Sometimes crazy things happen. People naturally assume that when something lousy happens the person somehow deserved it. That's because you don't want to think lousy things can happen to you for absolutely no reason, no matter how hard you try to cover all the bases. You can't cover all the bases anyway. |
| Sun 11 Jul | indeed | I think this is just bad treatment in general. It's one thing for a manager to have specific problems with you and act to address them. But to just ascribe frustration/a generally bad disposition towards you, is setting you up for failure.
Basically I don't think there's much you can do to change people once they adopt a general attitude towards you (no matter how misplaced), if it's not based in something concrete. Because they can always set up an infinite number of 'hoops' that you have to jump through before they'll change their minds.
There may be something specific he doesn't want to/can't tell you about. And it's possibly something slimy.
Or he's just an exceedingly-judgemental asshole, and you're ultimately better off not dealing with him in the long run. Some managers will take single instances and extrapolate them out to your entire job performance, no matter how little perspective they have on your day-to-day accomplishments.
Neither implication is good for you. But it's worth considering that there's a reason why people are known to 'schmooze' their way to the top of organizations. It's basically marketing oneself to assholes who are apt to form broad judgements based on single interactions. |
| Sun 11 Jul | hoser | One word:
Status Reports
OK, that's two. Two words. Always send a weekly status report, whether required or not. ALWAYS.
It has many benefits, but one is that NO ONE can say they do not know what you are doing. Like Peter said 'keep a diary', but status reports make that diary public. |
| Sun 11 Jul | hoser | Huh, Loser is almost "hoser". Imagine that... |
| Sun 11 Jul | indeed | I don't think weekly status reports, in and of themselves, work. Not in the CYA sense, at least.
Because managers can always say 'I didn't have time to read it/you didn't write it so I could understand it/etc.' And possibly this will come after weeks or months of flagrantly ignoring your reports.
Been there, done that. Basically as a technical person, you have to actively manage your relationship with your superiors. That means more than status reports; it may entail a lion's share of 'schmoozing.'
And this is really to ensure the bare minimum of collegiality/respect. All while getting your actual work done. It's great, eh? :)
There's a reason why technical work can suck politically. You're on the bottom, and there's no established comaraderie that ties you to the company. |
| Sun 11 Jul | Christopher Wells | > You are assuming, on every point, that I neglected to do something obvious.
'Loser', I'm sorry it's coming across that way. Here are my axioms FYI:
1) You can't change other people; you can only change yourself.
2) If you don't like a personal relationship, you can change it (by changing what you're doing or saying), or put up with it, or leave it.
3) Your posting here was an attempt to gain insight (from other people) as to how to improve your relationship.
4) I don't know you. I only know me.
5) I'm not in your situation (for example my boss knows what I'm doing, even though I work off-site as part of a 'virtual team', and he's not a developer); and I know what *I* do to attempt to avoid being in the situation that I imagined from your description.
And, therefore, I described what I do. My post (from my point of view) was about me (not about you). I hoped you might find it useful. If you didn't, I can only be sorry.
> Sometimes crazy things happen.
Yes, I know that.
> People naturally assume that when something lousy happens the person somehow deserved it.
It can feel that way. I'd categorize his 'raging' and telling you that you're 'stupid and no good' as abuse: there's no excuse for it on his part, and I don't believe that you deserve to be treated that way. What I did want is for you to find a way to avoid it.
> That's because you don't want to think lousy things can happen to you for absolutely no reason, no matter how hard you try to cover all the bases.
The things that you can't do anything about are the things that aren't worth worrying about.
> By the way, I will need a reference from this guy if I leave.
I know that some people who fell afoul of our boss at my former company used references from congenial peers instead. |
| Sun 11 Jul | Loser | There is no chance to schmooze. My manager is too busy and important for small talk.
You know what's strange? Before he was promoted he acted busy and important all the time. Now there is NO ONE doing his former job! So he was just pretending to be busy half the time.
My group doesn't have meetings anymore because Big Shot is tied up with higher priority groups. I work alone and I feel this is damaging to my image, since people can forget I exist.
I realize some of you here are hoping I'll get suicidal over this. But as I keep saying, there is a good chance I will get a new manager. |
| Sun 11 Jul | indeed | ^
Well, don't come here expecting comisseration. As has been pointed out, techies are loathe to feel any mutuality towards each other, except insofaras 'propellerhead'-type allegiances (Microsoft sucks, Linux rules, etc.) are concerned.
Frankly this guy just sounds like your typical type-A nutcase who expects everyone to see things from his perspective, but can never do the same for others. |
| Sun 11 Jul | Neil Hewitt | > I realize some of you here are hoping I'll get suicidal over this
I would really, really hope you don't actually think that. Perhaps there may be a little too much cynicism floating about, but then that's pretty common in any group of techies. Most of us will have been there, seen that before.
> You know what's strange? Before he was promoted he acted busy and important all the time. Now there is NO ONE doing his former job! So he was just pretending to be busy half the time.
Yup. Been there. Done that. I once spent six months with almost nothing to do. But boy, did it look like I was busy. This was in the depths of the slump and I wasn't about to lose my job just because senior management were sitting on all my projects.
> My group doesn't have meetings anymore because Big Shot is tied up with higher priority groups. I work alone and I feel this is damaging to my image, since people can forget I exist.
Assuming you are allowed to manage your own time to some extent, be proactive and set up team meetings yourself. If your manager won't do his job (and this *is* his job, busy or not) and that makes yours untenable, then take the initiative and show you can work without him. This never fails to impress the higher-ups, and makes you look good if/when it comes to conflict between you and him. It'll also give you a leadership position within the team, and make you look like a natural choice to manage them when the time comes.
FWIW, I'm a manager, and in my experience the great majority of problems with expectations not being met are down to communication. Failure on my part to explain properly to staff what I expect from them, and failure on their part to tell me when they don't understand what the hell I'm going on about. Most times, they just slink off to bitch about me with their peers (as I do relative to my own managers). This may make us all feel better, but it doesn't achieve anything.
If this guy is truly scapegoating you when he's aware that there were reasons outside your control for the failure, then he must be in a position where he's unable, politically, to blame the true culprit (or to take the blame if that was him). This means he's backed into a corner. Managers in this position are always bad news. In that situation, my advice to you is to write down everything that happens, save relevant emails (somewhere where they can't 'vanish'), and prepare to go over his head if needs be. If you allow the blame for something that wasn't your fault to be officially tagged on you, you can't ever go back in time and undo it.
Your company almost certainly has an employee manual with details of all your various rights and responsibilities. Read it, and know exactly what your rights are.
If you getting a new manager is imminent, then by all means wait and see what happens. But remember that your new manager will be appointed by your old manager, and will be instilled with all his prejudices on day 1. You'll have to get in nice and early and show that you are pivotal to the success of your team. Hearts and minds are half the battle. |
| Sun 11 Jul | Loser | Are people really this close-minded? I would certainly revise my opinion of someone given new evidence. And if they told me I had misjudged them I hope I would have the sense to at least give them a chance to prove it.
I am going to send Big Shot a list of everything I did for the past year, pointing out that most projects were done quickly and without problems. I have a review soon anyway, and I'll just say I'm sending it in early.
As for expecting sympathy here -- no I didn't. I expected most to assume I did something to deserve it. I'm getting a hint of how it might feel to be convicted of a crime you never did. Everyone assumes you must have done it, or if you didn't yet you would have liked to. If my boss thinks I'm no good, well there must be something to it. I feel that my co-workers don't believe me, even though they knew me for 3 years, and they know exactly what kind of type A madman this guy is. |
| Sun 11 Jul | the real world | It sounds like you have a weak personality. If I were your boss, I would flog your ass daily. |
|
| Revenue Sharing | Sun 11 Jul | no. |
| If you wrote an add-on for a commercial product, and the developing company would like to offer the add-on as an option to their customers, how would you go about offering up your product?
The primary application can either be lease on a month-by-month basis or purchased outright, so I guess that same model could be used for the add-on as well. But since this is the first add-on, its a bit difficult assessing the value or at the very least, what percentage I should demand of the lease fee. |
| Sun 11 Jul | Tom H | Ask for about twice what you think they'll give you. After they rant and scream and threaten to walk out on the deal they'll make a counter offer that will give you an excuse to scream and threaten to walk out. Eventually you'll get together on a price. |
| Sun 11 Jul | Mike | From your point of view, it presumably has to be profitable. Take into account all the costs of doing business with them. That should give you your lower bound.
From their point of view, they need to make a profit and it needs to be worth their while to promote the add-on. Doing that calculation from their perspective should give you your upper bound.
The sweet spot, hopefully between the lower and upper bound, can be calculated as:
Just below the price that would make it worthwhile for them to abandon your offering and develop their own solution. If you go over that price then that is exactly what they will do. If you go below that price then you are not getting the maximum you can from the deal. It's a difficult calculation but you have to do it. Good luck. |
| Sun 11 Jul | no. | I'm having trouble arriving at numbers here.
I am an independent contractor who works out of his home, so there is little overhead in terms of my business operational costs. The program itself may take ~300 hrs to develop and hammer out all of the bugs. I could probably count on spending about 500 hrs of support time both with the end users and coordinating developments with their engineers.
In terms of their cost if they were to do it alone; they already advertise so they have would have to revise their marketing material a bit to account for the new product. They'd have to hire another developer at probably 45-50K, if they wanted to get it out the door this year (one of the reasons they are looking at my solution).
So how do the above factors factor into negotiating a % on a lease based software licensing system?
Thank for any insight. |
|
| The importance of being const | Sun 11 Jul | Grumpy old fart |
| I was browsing the Web the other day, and was shocked to come across this quote from some young guy called Ken Thompson: "The const keyword only confuses library interfaces with the hope of catching some rare errors". Im sure that all readers of JoS are careful to be "const correct" at all times, but it’s kind of depressing to see this sort of misleading garbage from a smart-alec know-nothing of the younger generation. Its almost as if none of the giants of computer science - the likes of McConnell, Booch, Meyers, and Sutter - had never written a word. |
| Sun 11 Jul | Dennis Atkins | Thank you for that quote. I've been looking to deep six this plague upon the land that is const correctne swhich has never helped and only produced a castle of troubles for these old fingers. |
| Sun 11 Jul | Oren | I find that the primary benefit of using the 'const' modifier is improved code comprehension. It's one more tool in the toolbox of self-documenting-code techniques. |
| Sun 11 Jul | Roose | The problem is that in C/C++ it is too confusing to bother with. I am going to make the immodest claim I know every language lawyer trick under the sun (at least in C, a lot of C++), but the const thing still is not intuitive.
I know what everything means, but it takes effort to read it. Most everything else is intuitively obvious.
QUICK:
Without thinking, scan through these lines and tell me which ones are the same and what means what, and which ones are syntax errors:
const int* const p;
int const* p;
const* int p;
int* const p;
const int* p;
const int const* p;
I think const probably works better in other languages.
I did have someone break it into 3 cases, which made sense, but the codebase I usually work with does not use it so I haven't been religious about it.
Another problem is that converting non-const correct code to be const correct is a big bitch. It is not something you can do very easily or mechanically on any reasonably sized codebase. |
| Sun 11 Jul | David Jones | const-correctness is required in some cases.
I have implemented an in-core transaction system for an application that I'm working on. Basically, you can make changes to the in-core state of the app, then either commit or roll back the changes.
This is implemented using a smart pointer system. Each object in the database has a pointer to a 'back up' object, to which it is copied prior to being modified. To commit, zero out the saved object pointers. To roll back, copy the saved object back on to the original. The Boehm garbage collector is used to manage the memory.
The smart pointer implements the following:
const T &operator*()
const T *operator->()
T *operator()(Xaction *xact)
The last operator records the modification in a transaction object. It is designed to be used as:
obj(xact)->method().
Point being, const-correctness is IMPERATIVE in this system, as the only methods you can invoke without using a transaction object are const methods, and you want to do this where possible to avoid unnecessary copies. |
| Sun 11 Jul | WhatTimeIsItEccles | ' and was shocked to come across this quote from some young guy called Ken Thompson'
... and you call yourself an old timer.
If that name means nothing to you then I feel sorry for you, and your claim to be an old timer/old fart is a load of nonsense. |
| Sun 11 Jul | Eli Bendersky | Roose,
Actually there's a very simple way to memorize this. Check out, for example:
http://www.geocities.com/spur4444/prog/const_and_pointers.html
The fact that C and C++ have complex concepts doesn't mean one shouldn't use them. IF you're looking for complex syntax, see Perl, and it is (justly !) one of the most popular languages around. |
| Sun 11 Jul | Good Code Uses Const | It's funny how people who can't (or won't) understand something, even if it is simple as const, throw it by the wayside as being 'stupid' or 'complicated', in order to satisfy their own ego.
It's simple and useful. What if you want to make sure some dummy down the line doesn't modify a value he shouldn't modify? What if you want to pass objects by reference, but their values shouldn't change? What if you're shipping a redistributable library, and you want to indicate whether some objects are in/out/in-out? All good occasions for const. |
| Sun 11 Jul | Christopher Wells | > Another problem is that converting non-const correct code to be const correct is a big bitch. It is not something you can do very easily or mechanically on any reasonably sized codebase.
That's an argument in favour of writing const-correct code in the first place. Although you *can* do it fairly mechanically:
void refactor()
{
Change an top-layer method or parameter to const;
while (you now see new compiler errors because the newly-const top-layer method calls some non-const lower-level methods or because the newly-const parameter is passed as a non-const parameter to lower-level methods)
{
Fix compiler errors from step 2, by redeclaring these lower-level methods and/or parameters as const;
}
} |
| Sun 11 Jul | sid6581 | Ignore const correctness?
YOU'RE FIRED! |
| Sun 11 Jul | Craig | My thoughts exactly. |
| Sun 11 Jul | Roose | 'That's an argument in favour of writing const-correct code in the first place.'
Not trying to be bitchy, but do you program as a profession? Don't you ever work on other people's code?
I would like to be const correct, but there is no chance of it with the code I work with. I would guess that about 75% of code in shipping software is not const correct.
Hell I even read that Python is not const correct at all, and it is quite good code.
If you are really working then generlly you can't be to anal about things like this! |
| Sun 11 Jul | JJ | Hey Roose got a question for ya. You said in a previous thread that you worked for EA (Electronic Arts?). Now I'm wondering if you write games code? If so I'm wondering if you think games code is more loosely written than business code or commercial business software? Most people say game coding is more difficult so I would assume game coders keep their code tight. |
| Sun 11 Jul | Christopher Wells | > Not trying to be bitchy, but do you program as a profession? Don't you ever work on other people's code?
I do, and yes I do.
Two projects ago, I was the lead developer ... so I set the coding standards for new hires ... which included const correctness.
One project ago, I was a new hire myself, helping to write a new module to some existing code. I noticed when reading it that much of the existing code wasn't const-correct ... but I was implementing the code for some new interfaces ... and when I did the coding/design review for those interfaces after someone coded them, I gave them feedback as to how to make the interfaces const-correct, the author of the interface complied, and so my implementation of that interface was able to be const-correct as well.
> I would like to be const correct, but there is no chance of it with the code I work with.
Me too, now ... my current project is C#, which doesn't support const-correctness.
> If you are really working then generlly you can't be to anal about things like this!
I'm as anal as I'm allowed to be (by the language, and the interfaces that I'm writing to), when I'm coding. For example, in C++ I prefer to use a reference instead of pointer ... except when I must use pointer instead of reference. |
| Sun 11 Jul | Dennis Atkins | Consts are lame. People who are into consts SUCK.
:-P |
| Sun 11 Jul | Christopher Wells | Programming is lame. Consts are a crutch. |
| Sun 11 Jul | Dennis Atkins | Yeah, you said it. |
|
| RSS, IM, P2P... You have got to be kidding. | Sun 11 Jul | hoser |
Someone in another post referenced a secretgeek article. Which led me to read secretgeeks response to Joels API article (perhaps one of Joels most interesting ever).
http://secretgeek.net/joelapi.asp
And at the bottom,
3. The new winners in the application development marketplace will be the people who can make HTML sing.
Some of the winners may make HTML sing. But thats not where Id look for most of the innovation.
The most innovative new consumer applications tend to be new desktop/server applications. Some recent examples of this include:
* P2P software
* Instant messaging software
* RSS aggregators
Yknow what... he forgot SPAM. These are considered successful desktop applications? My head would hurt, except Im working on my second Manhattan, after an extremely frustrating week on a partners site, and letting the pain melt.
Funny and interesting site though. |
| Sun 11 Jul | www.marktaw.com | P2P is pretty innovative, it has to solve a lot of problems inherent in such an unstructured & large environment.
IM is.. well just IRC with a cute interface & a focus on person to person & not group chats.
RSS aggregators aren't that interesting. RSS is interesting, but RSS aggregators... not really.
Interesting article overall though. I agree that Joel's tone is very 'friendly' and that when he first appeared on the scene he was very timely. I think he reads a lot of Douglas Adams & similar authors. |
|
| K&R. Great book,but boy they slip some doozies in. | Sat 10 Jul | Confused |
| Take this for example, in the section on function pointers:
qsort( (void **)lineptr, 0, nlines -1,
( int (*)(void*, void*))(numeric ? numcmp : strcmp ) );
Of course the last argument determines whether to sort lexigraphically or numerically.
Anyway for someone learning to use C The Right Way, tossing in *unexplained* examples like this is extremely confusing. This is the type of thing they really should spend some time breaking down. (BTW, their overall explanation for function pointers is just bad).
Also, why didnt K&R just write the call like this:
qsort( (void**)lineptr, 0, nlines -1, ( numeric ? numcmp : strcmp ) );
Doesnt this do exactly the same thing, only much clearer?
Thanks again!
Confused |
| Sat 10 Jul | Chris Tavares | It's not quite the same, because strcmp (assuming they used the standard library version) is actually prototyped as:
int strcmp( char *a, char *b );
while qsort is expecting:
int (*cmpfunction)( void *a, void *b )
Notice the different parameter types. So they need the cast in there for it to compile properly.
In 'classic' pre-ANSI C, they wouldn't have needed the cast, and gotten a whole other range of nasty problems as the trade-off. :-) |
| Sat 10 Jul | Dennis Atkins | Confused,
it's an outrageous hack and they are showing off. It's part of the reason the K&R is so great - it has a number of mindbenders like that one.
The reasonable thing to do in any serious production envirenment would be to write clear code and stay away from such craziness. But we all like to include a few puzzlers from time to time just to keep the new guys on their feet. |
| Sun 11 Jul | Clay Dowling | In their particular production environment, they used exactly the right solution. Their version will compile correctly without beefing under any compiler. C++ compilers, in particular, would require the form that they presented and would choke otherwise. Stroustrupe holds up the examples in that book as good examples of how to design C++ functions. |
| Sun 11 Jul | Dennis Atkins | I disagree. I claim that as a first refactoring the following code is superior:
typedef int (*COMPARISON_FUNCTION)(void *, void *);
COMPARISON_FUNCTION my_compare;
my_compare = numeric ? numcmp : strcmp;
qsort( (void **)lineptr, 0, nlines-1, my_compare); |
| Sun 11 Jul | Tom H | I never understood that one-liner mentality, except for playing mind games with people. Sometimes it's called golf; see how few (key)strokes you can use.
Dennis gives a good example of clear, readable code. The other one is obfuscated for no good reason at all. And I won't mention perl... |
| Sun 11 Jul | Confused | Response to everyone, Clay and Dennis:
To Everyone:
Part of the problem is that at no point during the book do K&R mention that these forms are equivalent:
1: ( int (*)(void*, void*) )numcmp
(This is the reduced form of the example where numcmp is used).
and
2: int (* numcmp)(void *, void * )
Furthermore, we have to deduce that in a obfuscated situation. Are they trying to teach or impress themselves with their own brilliance?! :)
--------------------------------------------
Clay Dowling:
'Their version will compile correctly without beefing under any compiler. C++ compilers, in particular, would require the form that they presented and would choke otherwise.'
This is not mentioned as a reason, and as far as I can tell, there's no proof that this is the case.
-------------------------------------------------------
Dennis Atkins:
I agree, your code is much clearer. |
| Sun 11 Jul | Me |
'Their version will compile correctly without beefing under any compiler. C++ compilers, in particular, would require the form that they presented and would choke otherwise.'
>This is not mentioned as a reason, and as far as I can tell, there's no proof that this is the case.<
In the book's preface, the authors say 'We used Bjarne Stroustrup's C++ translator extensively for local testing of our programs, and Dave Kristol provided us with an ANSI C compiler for final testing.' This suggests I think that compatibility with a variety of compilers indeed was a concern. |
| Sun 11 Jul | Confused | ME:
I'm sure compiler compatibility was a concern, I'm not arguing that. What I'm arguing is the idea that that mangled line of code was necessary to maintain compiler compatibility. |
| Sun 11 Jul | Chris Tavares | Dennis's example may look nicer, but it won't compile as written! The types:
int (*)(void *, void *) (pointer to function taking two void *'s, and returning int)
and
int (*)( char *, char ) (pointer to function taking two char *'s and returning int)
are NOT COMPATIBLE ACCORDING TO THE TYPE SYSTEM!
If you don't have a cast in there SOMEWHERE, any decent compiler will complain at you!
Dennis's version needs to be:
COMPARISON_FUNCTION my_compare;
my_compare = numeric ? numcmp : (COMPARISON_FUNCTION)strcmp; |
| Sun 11 Jul | Confused | Chris:
Aha! I think I just got it. I just didn't notice that the function pointer was being used to upcast to something else. K&R actually explained this (...kinda), but it was seemed so convoluted (and I'd never seen the function pointer cast before) that I just left confused. Now it makes sense.
And yes, I agree, you almost certainly need the explicit upcast from char * to void * (and back again) somewhere.
So basically I knew you could cast with 'regular' pointers, but didn't realize function pointers could be cast too.
-A little less confused |
| Sun 11 Jul | Tom | qsort's cmp function actually takes two pointers to const void. So the cast is doubly dodgy.
(And you'd better be sure void * and char * are the same size, and can be passed in the same way, or you'll have a problem.) |
| Sun 11 Jul | Dennis Atkins | 1. Yeah, gcc gives a warning on the cast, so put it in there. It compiles fine though even without it.
2. The consts got added to qsort in C99 was it? after the classic X&R 2d ed, but there must be a new addition out, is that it? In any case they are not a problem since you are casting up to consts and that is permitted and no warning or casts are necessary.
3. This whole 'gotta make sure the pointers are the same size' thing seems such an extremeist for of hyper-pedanticalism. IS there even one processor currently being manufactured in which this is an issue? I say no, and the C student is welcome to assume all pointers are the same size in every reasonable situation imaginable. Could someone build a processor in whcih char pointers and int points were different sizes, with chars stored in one part of memory and ints in another? Sure they could but let me tell you that just ain't gonna happen unless teh processor designer is a total retard. |
| Sun 11 Jul | Dennis Atkins | Oh and yes it will compile as written on standard compliant compilers. And it will run correctly too! |
| Sun 11 Jul | Grumpy old fart | The library version of qsort had the const qualifiers even in the original ANSI standard, and is documented as such on p253 of K&R2. The section on function pointers uses a hand-crafted version which need not have the same signature as the library version. I'll grant that this is a bit confusing if you're not paying attention.
I hate to disagree with a man with such sound views on const as Dennis, but I think the original version in the book is already clear enough. The reason for the cast is explained perfectly clearly, albeit in only two sentences rather than the 50 pages that Steve McConnell would have required: 'The elaborate cast of the function argument casts the arguments of the comparison function. These will generally have no effect on actual representation, but assure the compiler that all is well.' |
| Sun 11 Jul | Almost Anonymous | In C, you're pretty damn safe with pointer sizes. But C++ offers all kinds of complications:
http://weblogs.asp.net/oldnewthing/archive/2004/02/09/70002.aspx |
| Sun 11 Jul | Dennis Atkins | OK um well regarding that - MS has decided to take a structure and call in a pointer.
But it's not really a pointer, It's a structure. |
|
| When does a "bug" become a "security issue"? | Sat 10 Jul | Chris |
| This recently reported security issue in FireFox reported:
http://www.mozilla.org/security/shell.html
http://bugzilla.mozilla.org/show_bug.cgi?id=250180
and http://www.mccanless.us/mozilla/mozilla_bugs.htm
seems to do nothing more than opens up a Windows Explorer window at the specified folder location. (or in the case of the last example they say it can crash the system, but this didnt happen on my version of FireFox which was supposedly an affected version)
Can somebody please explain to me how this can possibly be interpreted as anything more than a simple bug in the case that it crashes the system, because I have failed to think of any possible ways that a malicious user could gain anything by putting a link to shell:windows on their homepage.
At first I thought his example of putting a document in a IFrame on the page would allow the site to use JavaScript to read the contents of that document, but on my system (FireFox 0.9) that page actually causes an instance of IE6 to open with the specified page. So obviously that isnt possible.
So please tell me why this is classified/reported as a security issue when it is simply a bug? |
| Sun 11 Jul | Cap'n Kirk | Here's a simple test:
1) Are people going to ignore it because they're too lazy to download the patch?
2) Can it make it onto the nightly news?
3) Will it start a flame war on JOS or Slashduh?
If you can answer 'yes' to those questions, you've got a security issue, and not a bug. |
| Sun 11 Jul | Ori Berger | It's a security issues when it compromises your security.
This issue can allow a server to run arbitrary code on your machine. |
| Sun 11 Jul | Stephen Jones | If it can open IE that is security issue :) |
| Sun 11 Jul | kc |
Yes, once something manages to open an IE window, considering how troublesome IE is, it is now a security issue. |
|
| CIO's | Sat 10 Jul | RP |
| Politics are the worst things we may have to deal with in a company. In a normal company, we the Developers, usually have a project manager who handles all the politics while leaving the technical implementation to us. But once you climb the corporate ladder, youll be faced with political details more than techincal details. Once, I had a weak manager and I ended up swimming in a soup of shit because of that - one proof that even us, technical leperchauns must know how to handle people the right way.
Well, I found this little pearl in cio.com, giving examples of the importance of people management. Both upwards and downwards: http://www.cio.com/archive/070104/peer.html
Never forget: the two most important books for developers are The [C/C++/Java] Programming Language and The Prince by Machavelli. And read the last one once every 6 months to keep it fresh. |
| Sat 10 Jul | Kalani | It's funny, I was actually thinking about 'The Prince' earlier tonight. I read that during my first year of college and this one passage stuck with me:
'how we live is so far removed from how we ought to live, that he who abandons what is done for what ought to be done, will rather learn to bring about his own ruin than his preservation. A man who wishes to make a profession of goodness in everything must necessarily come to grief among so many who are not good.'
The years of experience I've had since then have only reinforced the importance of this passage to me. I think that's one of the more important ideas that somebody ought to bring into a new organization. |
| Sun 11 Jul | Michael Moser | WOW! code is thicker than blood. really... |
| Sun 11 Jul | www.marktaw.com | Great article. I had a similar thing happen to me with one particularly machiavallian co-worker.
He made a presentation about the new architecture they were going to implement. Which I learned he stole from the technical lead on the project. The technical lead was fired a few weeks later.
Several months after that guy was fired, he asked me to make a presentation to him about my department. I promptly downloaded Seth Godin's 'Bad Powerpoint (and how to avoid it)' ebook from Amazon.
My powerpoint presentation was full of whimsical graphics that emphasized my points, didn't make the reader follow along on the presentation rather than listen to me, and made people laugh.
After the presentation he turned to me & said 'This is nice, but I have to give the head of technology a presentation on Monday, I can't give him this.' Too bad, he was going to have to do his own damn work.
A few months later I was fired.
I'm about 1,000,000 times happier now than I was in that working environment, which turned from good to sour extremely quickly. As far as I'm concerned, any working environment that causes you to think of your co-workers in terms of Machiavelli, Sun Tzu, Musahi, Von Clauaswitz, Warfighting, and other books on dealing with adversarial relationships is an environment to be avoided at all costs.
One thing the article fails to mention, and that I recognized in my working environment & his, is that these power shifts are often planned ahead of time & there's often little you can do to escape them. The best thing to do is simply extract yourself. There is no winning or losing if you refuse to play the game. |
| Sun 11 Jul | Philo | FWIW, I don't think it's 'planned' like some guy sits down with an org chart and plots who to fire, when and how - it comes second nature to them, and they act on it with all the ruthless sociopathic efficiency they can.
Philo |
| Sun 11 Jul | Peter | I once had a boss who liked to take credit for the presentations I made for him. The sort of presentations that take a couple weeks to research and prepare for, so that he can say "I discovered" instead of "we discovered." The last time he asked me to make him one, I placed my initials on the overhead slides, and the hand outs, but not the handout he used to rehearse with. After that last presentation (which blew his cover/rep in the whole company), he stopped denying my requests to transfer to another department. |
| Sun 11 Jul | hoser | 'As far as I'm concerned, any working environment that causes you to think of your co-workers in terms of Machiavelli, Sun Tzu, Musahi, Von Clauaswitz, Warfighting, ...'
Preach it brother (since its Sunday). |
| Sun 11 Jul | Clay Dowling | Having been screwed often enough by failing to follow the advice of both Sun Tzu and Machiavelli, and living in an economically depressed area, as much as I might like to extract myself, I'd do better to keep their lessons in mind.
Principally, know when somebody is trying to screw you, and make sure that they're the one that gets it instead. Also, keep the people who work for and with you very happy, so they'll help you to avoid a screwing, rather than hold your screwer's coat. |
|
| P2P Software | Sat 10 Jul | Multicode |
| I have recently started to investigate P2P software - after being scared off by spyware etc.
I m still paranoid by malware but have heard that Kazaa Lite was the way to go.
Kazaa-Lite on Google did not bringup any direct links - there was a message from Google mentioning that they had to remove the links for legal reasons.
After researching in Usenet - an alternative suggested by posters is K-HACK.
Has anyone tried K-HACK and if this is free from spyware stuff? |
| Sat 10 Jul | muppet from forums.madebymonkeys.net | Lemme guess, you're with the RIAA? |
| Sun 11 Jul | What, me worry? | The file you are looking for is klitekpp243e.exe. That is the last version of Kazaa Lite before they sold out. |
| Sun 11 Jul | A Pterodactylus Ate My Baby |
Forget kazaa, it's full of fakes.
Go Emule Plus instead. It's open source to boot, if you like to ogle the source before installing ;) |
| Sun 11 Jul | Peter Monsson | Kazaa Lite is no longer useable as Kazaa cut it off from the network. As an answer Kazaa Lite Ressurrection appeared, but I don't know where you can find it, whether it still works or whather there is anything usefull at all to be found on the Kazaa network anymore.
If you're trying to obtain Intellectual Property illegally I have heard IRC is the next big thing. Mute might be aswell but just remember that with Mute you'll be on network with kiddie porn sharers. |
| Sun 11 Jul | Pimp Juice | I've had good success with Shareaza ( http://www.shareaza.com/ ) Open source. |
|
| Bram's Law: What Customers Want | Sat 10 Jul | Green Pajamas |
| http://advogato.org/person/Bram/diary.html?start=97
I copied this from his blog (hes the BitTorrent guy):
The things which will make people love your software, by rapidly plummeting order of importance, are:
1. ease of use
2. stability
3. performance
4. features
The order of priority many people use when writing software, and, unfortunately, what users generally say they want when asked, are:
1. features
2. performance
3. stability
4. ease of use
This is a siginificant discrepancy.
Now this is interesting, any comments? |
| Sat 10 Jul | KayJay | Focus on performance and stability, and you will not be too off the mark? |
| Sat 10 Jul | JT | I think a related concept is the "prettiness" of a UI. Features will get someone interested, but frankly, it's the UI that gets the signature on the check. I'm constantly surprised at the number of software company web sites that don't have screenshots. If the application has a GUI, when all is said and done, it's going to make or break the sale. |
| Sat 10 Jul | Joe | Stability is simply a must-have. If your app hasn't got that at least 99% right, you shouldn't be shipping it. What good is an app that crashes and eats your data all the time?
Performance is slightly more arguable, as it depends on the context. There are probably things your customer wants more than improving the speed of that algorithm from 500 records/second to 1000 r/s. But if the whole UI in general is sluggish, they're definately gonna make that a priority.
Ease of use is definately important, but also fairly subjective. What one user loves another will inevitably hate. Also, unless your product, or at least type of product, has been on the market a while, it's really hard to know how people will interact with it. People seem to have lost the stigma against v1.0 apps these days, and therefore have pretty high expectations. But as long as you actively solicit feedback and act on it, you've at least got some wiggle room.
I think features do matter more than a pretty UI -- but only the major ones. If you're building a CRM app, and it doesn't provide accounting integration or reporting, you're probably not going to win based on your slick UI. But, on the other hand, you can probably wait on that nifty PDA hotsync feature.
Overall, if your UI doesn't look professional, people will generally assume that your app isn't either. But 'professional' and 'snazzy' are two different things. |
| Sat 10 Jul | www.marktaw.com | Ease of use will get me to try it in the first place. Any software that I load up that I can't figure out - WITHOUT READING THE F'N MANUAL - in 5 minutes gets dropped.
Stability will get me to keep using the software - when running 2 similar apps, if one crashes it's out.
Performance will get me to recommend it to my friends becuse I won't be afraid of them abusing the software & it crashin on them.
Features... Yeah, they're nice too, and I believe this is one of the reasons MS Office has such high market penetration - there's a feeling that if you buy it for your company, they're never going to run in to a situation where Word or Excel won't do this or that that another program can do. And if there is, then odds are that other program can only do that and nothing else. |
| Sat 10 Jul | Joe | > Ease of use will get me to try it in the first place. Any
> software that I load up that I can't figure out - WITHOUT
> READING THE F'N MANUAL - in 5 minutes gets dropped.
While I agree that most consumer-targeted software should not require in-depth instruction, I have to say that there is an appropriate time to RTFM. Let's see if I can make an analogy relating cars and software without getting thrashed for it :)
When you buy a new car, yes, you expect to be able to drive it off the lot without having to spend 3 hours reading the manual. However, if it's a new brand of car for you, and you want to know how to work the CD changer, set the clock, etc you're probably going to have to at least thumb through the quick help guide, right? Similarly, while you can probably figure out how to change the oil and fill the gas tank, you might wanna read up on the specs before attempting to install your own stereo system.
Using new software should be the same. You should be able to figure out the most essential functions without any help. But depending on what kind of program you're using, how complex your task is, and your previous level of experience, it isn't unreasonable to expect that you may need to refer to the manual or online help every now and then. |
| Sat 10 Jul | www.marktaw.com | Oh, I agree, but if the basic functionality is beyond me, then there's a problem, and I'm very much tempted to 'blame' the designer.
I'm just talking about frustration levels in general when using the software. |
| Sat 10 Jul | Max Belugin (http://belugin.newmail.ru) | Okay, what if you will be more efficient after reading the manual.
Try for example `grep` command against easy of use search-and-replace tool.
You can easily use the second but the first is more reusable (you can use it in many contexts and automate your work). |
| Sat 10 Jul | www.marktaw.com | Obviously it depends on what my goals are. If I will be using Search & Replace often & I need a powerful tool because it's not a straight search & replace, then sure GREP would be the way to go.
But if I have 30 documents in front of me & a simple search & replace will do, then I'll do that.
In each case, the right tool is needed for the right job, and there are times when GREP - even if I had to learn it - would be the simpler way to go.
I am a big fan of regular expression, though I don't use it often enough to really remember it well, so I have to make use of reference materials whenever I do.
I guess one could posit a certain ratio of:
difficulty : goal
To use the car example, I'd be willing to learn to drive because it's a lifelong skill & will serve me well in a great many situations. I wouldn't learn to drive because I ran out of milk & needed to go to the store. Unless, of course, that was the last straw because it was the 1,000th time I needed something from the store and couldn't get it. |
| Sat 10 Jul | anony coward | When considering features a good way to evaluate them is with Kano Analysis:
http://www.isixsigma.com/library/content/c030630a.asp
Some features are must haves, the product is incomplete without them. Some are nice but not required, some are of no interest, and some are delightful surprises. Unfortunately too many features added fall into the 'no interest' category. |
| Sat 10 Jul | Dennis Atkins | Is setting a clock such a difficult and complex operation compared to driving a car that it requires special instruction?
Is using a CD player?
Frankly, if you have to read the manual to use a CD player, it seems obvious to me that that CD player has no business being installed in a car where a few moments off the road and several people are dead or crippled for life.
Automobile extras such as clocks and radios must be designed to be so intuitive and obvious that it should be illegal to even ship them with a manual. Anything more complicated is a serious threat to public health and safety. |
| Sat 10 Jul | Tom | Oh come on, you'll need a manual for SOMETHING. Even if it's only programming the radio's presets, or setting up the CD player's programmed track playback. You know, the kind of things you'd just never do when actually driving the car.
(And anyway, lack of manual doesn't mean it's safe to do when driving. I didn't need a manual to work out how to use my ipod, but it's pretty dangerous to use when you're on the road. Fortunately, there was noone else around at the time.) |
| Sat 10 Jul | Tayssir John Gabbour | The dark side of 'competition.'
http://blogs.msdn.com/philipsu/archive/2004/07/01/170682.aspx |
| Sat 10 Jul | Mr. Analogy | It's not black or white.
I think the key is to figure out the minimum necessary capability in each area: useability, features, speed, etc.
I think that you should be able to operate the 'top level' (most fundamental) features without a manual.
I.e., I should be able to enter a new contact in the CRM software, search for a contact, FIND the query form, etc.
BTW, GREP is a good example of (IMHO) overkill:
A lot of software these days seems to have either simple string search or GREP. But, GREP is useful to MAYBE 1% of computer users.
What would be INCREDIBLY useful to 90% of user is a simple BOOLEAN SEARCH. Just look how useful Google is. People do Boolean Searches WITHOUT EVEN KNOWING they're using it.
That's power: making sophisticated features easy enough for grandpa to use. |
| Sun 11 Jul | www.marktaw.com | Re: Car Manuals
I hate it when I can't figure out how to set the clock in the car, but I don't mind not knowing so much because I don't have to do it very often. The strangest clock radio I ever had to set was actually set with those little indented buttons you need a pen to push. Who wants to get pen marks on their brand new car? Sheesh.
Setting radio presets should be pretty intuitive. Remember when the world switched from PULL to PUSH & HOLD to set their presets? (and no, I'm not dating myself, I didn't actually drive at the time when PULL was the norm).
It's intuitive, though, because every other radio in the world works that way. What about radios with 5 buttons & 10 possible presets though. how do you figure that one out? Or 5 buttons & 9 presets? Yes 5 buttons & 9 presets. There's a raised dot connecting 2 buttons and but pushing it - i.e. 2 buttons at once - you get another preset.
These are things you might need to look in the manual for, but you really shouldn't have to. You should be able to figure out the radio by glancing at it for half a second, because if you do a lot of driving, you WILL want to change the presets mid-drive as radio stations fade in & out.
Here's a good example. I have a lot of data stored in an Excel spreadsheet right now. When I try to insert a function, I got to Insert -> Function, and next to it is a little *f symbol. I was using one function frequently enough that I wished it was on the toolbar, so I tried to figure out how to add buttons to the toolbar. But I stopped mid search because I saw a little *f symbol on the toolbar. Now my function was 2 clicks away - the *f button & since my last used function was highlighted already, OK.
There's an advanced feature that I did not need to whip out the manual for. Maybe I could've added that function to the toolbar, but in the toss up between 2 clicks every time & (unknown quantity) minutes of searching to make it 1 click, 2 clicks every time won. Maybe if I was using 2 functions regularly (increasing my number of clicks by 1, not to mention having to THINK each time I clicked to see which was selected), it would've been worth it, but the path of least resistance won out.
Re: Kano Analysis Article
Interesting article, but it's flawed. I don't know much about six sigma, but this article completely lacks the 'time / features / cost' aspect of doing business. Adding features can give you a competitive advantage, but so can having a product to market before anyone else. So can having a *stable* product to market, even if it has fewer features, when your competitor's product is feature-filled & buggy.
Re: It's not black or white.
Exactly. Give me a tool that can do search & replace that any moron could figure out, boolean that someone with half a brain can figure out, and regular expression if it's needed.
Case in point: Sometime I need to rename dozens of files. I found 2 tools for Windows that does this. One has lots of advanced features, but I couldn't figure it out, I had to configure every little thing I wanted it to do. Another opened up the titles of files in a folder as if it was notepad. It also has a macro recorder to record keystrokes if you need it.
Guess which one I ended up using?
BTW, the two programs in question were The Rename
http://www.herve-thouzard.com/modules/wfsection/article.php?articleid=1
http://www.herve-thouzard.com/ecran.jpg
and Oscar's File Renamer (the one I used)
http://www.mediachance.com/free/renamer.htm
http://www.mediachance.com/free/ren_interf.gif
It should be noted that the complex one had an extensive help section, but Oscar's had a single HTML page that prints to just over 2 pages. |
| Sun 11 Jul | www.marktaw.com | Re: The dark side of 'competition.'
I hated MS Money. I liked an early copy of it I had, but I upgraded because I think I wanted it to somehow help me with my taxes & I was afraid it would be out of date.
My biggest gripe was - I couldn't balance my checkbook with it. The checkbook feature only showed you your current balance. You couldn't get a historical balance from, say 2 or 3 transactions ago, so I couldn't reconcile it with the monthly statements I got, and half the time with the internet either.
It's not exactly rocket science, but I have yet to see a company get this right. And now MS Money is the focus of the damned Inductive UI. 'Hi, let's make everything a wizard and treat you like it's your first time using the product every time you use it.' AKA 'Let's pretend everything is the web.' UGH. |
| Sun 11 Jul | anony coward | 'My biggest gripe was - I couldn't balance my checkbook with it'
Perfect example of Kano Analysis. Checkbook reconcilliation is a Must Have feature, you don't consider the application worth buying without it no matter how stable, first to market, or whatever.
OTOH, forcing you to use wizards is a negative feature; again it doesn't matter how stable or fast to market they made it, the product would be better without it. |
| Sun 11 Jul | Dot For This One | >et's make everything a wizard and treat you
>like it's your first time using the product every
>time you use it
Got a copy of Microsoft Money. I could not figure out how to use it. All I wanted was to help keep the checkbook balanced (now I just use a spreadsheet) and keep track of household budget (like how much at the supermarket is really food, how much vitamins etc.)
finally just gave up |
| Sun 11 Jul | www.marktaw.com | I know. What you want to do really isn't that complex. The software should be like MS Word - open it up & start typing. Lots more under the hood, but only if you go looking for it. |
| Sun 11 Jul | Reply to "Bram's Law: What Customers Want " | When I look for software to download, I always, always, look at the screenshots. If it has a pretty GUI, as someone mentioned early, then I will check the features page to see if it does what I want, if I can't tell from the screenshot itself.
I'm an expert user and employed as a QA tester at a software company, but if the program looks ugly and hard to use, I figure it will take too long to learn and look at your competition to see if they have a better offering. |
| Sun 11 Jul | www.marktaw.com | Screen shots are the first thing I look for when downloading software & if it doesn't have one, depending on my need, I may or may not decide to download it. If I can't get a sense of how to use it from the screenshots, I won't use it. But if there's nothing else in the category, or everything in the category is equally miserable, I'll do it. |
| Sun 11 Jul | Mr. Analogy | ' If I can't get a sense of how to use it from the screenshots, I won't use it'
Well put. To *me*, the screen shot indicates, at a glance, general useability. I'm not looking for PRETTY, I'm looking for functional. I.e., it could be monochrome and flat, but if they manage to squeeze the features in that I want, it's obvious.
It's like a newpaper: you can have a well-designed, easy-to-follow newspaper that features 200 year old times new roman text all in monochrome. It's the LAYOUT that impresses me. |
| Sun 11 Jul | Li-fan Chen | I think Linux and Windows NT based systems are still
1. features
2. performance
3. stability
4. ease of use
there's a lot of room for improvements in terms of usability. |
|
| Video games dont crash, why? | Sat 10 Jul | Berlin Brown |
| I still play video games and I have noticed that out of all the games that I have played for the last 10 years, I have had only a few games that lock up or crash. And I am assuming that video games are pieces of software(console games only), what techniques do software game developers use to ensure that games dont blow up. Actually the only console games that I have played that have locked up a couple of times are from Bethesda Software(Morrowwind), which was still a great game. Are graphics engines so refined that anybody can write a game and not screw it up?
I dont think it is that game developers are just better programmers, I have talked to young game developers(20-25-30) who work in teams of only 10 or 20 who work normal 40 hour weeks, so it is not that. Maybe games are easier to create?
Any ideas? |
| Sat 10 Jul | . | Perhaps because they are coded so close to the hardware that any 'crashes' are by definition 'not compilable' |
| Sat 10 Jul | Berlin Brown | And of course some common sense observations, the flow of games are different than that of regular software. Some people will spend 8 hours a day with a piece of software(let us say MS-Word), they are changing the state of that application in terms of configurations, menu options, opening windows, opening files. Regular software is a different beast. When working with a video game, since the user is only given a controller with 5-6 buttons on it, the state of the game cant change too much. |
| Sat 10 Jul | CF | And actually, video games do crash. If you get pass the 'Video Game Crash' of the 80s from this Google search:
http://www.google.com/search?q=video+game+crashes&btnG=Search&hl=en&lr=&ie=UTF-8
You can see that games do indeed crash. In, here are some specifics:
X-Box
-------
http://www.google.com/search?hl=en&lr=&ie=UTF-8&q=xbox+crashes&btnG=Search
http://www.devhood.com/messages/message_view-2.aspx?thread_id=69574
http://news.teamxbox.com/xbox/2087/Xbox-Kiosk-Crashes-Addressed
http://www.avforums.com/forums/archive/index.php/t-107537.html
Playstation 2 (harder to find)
--------------------------------
http://www.google.com/search?q=%22playstation+2%22+%2Bcrashes+-racing&btnG=Search&hl=en&lr=&ie=UTF-8
http://www.theregister.co.uk/2000/03/08/sony_to_recall_all_playstation/
(Actually couldn't find any others)
Did find this review:
http://www.gaming-age.com/cgi-bin/reviews/review.pl?sys=ps2&game=ffxi
Which talks about the benefit of not being on a PC is that the programmers only had to focus on one platform, one graphics card, one player, etc, which enables a more solid game. |
| Sat 10 Jul | christopher (baus.net) | > Perhaps because they are coded so close to the hardware that any 'crashes' are by definition 'not compilable'
That makes no technical sense at all. In fact it may make crashes more likely.
The reason that games don't crash is that they are expensive to produce and have a short shelf life. The only way for a game to be successful is for it to be stable when it comes to market. |
| Sat 10 Jul | Game Programmer Lou | Games crash plenty of times in development, it's just that for console especially you cannot get approved by the manufacturer if you have any crashes at all. So you don't even submit it until you've absolutely tested everything in house or even external QA.
But it's usually bad or unexpected data that causes crashes, and like somebody said above, there are usually only limited inputs and no user-created data in console games. |
| Sat 10 Jul | Billy Joel on Software | What games are you playing?
Games crash all the time. |
| Sat 10 Jul | Joel Rifkin on Software | Since the XBox is merely a PC (Pentium III running Windows) it shouldn't be surprising that it crashes a lot. |
| Sat 10 Jul | Joel Kleinholtz on Software | 'it's usually bad or unexpected data that causes crashes'
Really? Over the years I've seen many programs where you click on a button or select a certain menu item and *CRASH*.
How is that 'bad or unexpected data'? |
| Sat 10 Jul | A Pterodactylus Ate My Baby |
Few games crash, actually. Even on the XBOX.
The reason: rigorous QA - testers play the game all day, trying all kinds of things to break the game. This goes on all the way through development. And then you have the publisher QA teams, having a go at it again before it's approved.
For XBOX specifically: Microsoft does not allow game patches (bugfixes) through XBOX Live, so your game better be perfect from the first day on.
PC is a whole different story, but that's because it's got several thousands different configurations.
YMMV. |
| Sat 10 Jul | Dennis Atkins | I'm not a big games person but when do play it seems like I'll play for 24 hours straight in one game, which is a lot of up time for one program.
I've never seen a game crash.
A lot of these games use the same game engine, so that game engine is very well tested across many games for stability and the game designers just use level editors to put the game together with no programming needed.
Games are obviously doing a lot of things at once and doing them well, interface with a vide variety of specialized sound and video hardware, and so forth, so its absurd to say that games are less complex than business apps.
Game developers do take far more pride in their work that developers of other sorts of software. |
| Sat 10 Jul | www.marktaw.com | Yep. Games don't crash because you can't patch them & the game must also have the manufacturer's stamp of approval before you can release it.
Just think of the console game market being the same as the pre-internet software market. I suspect that in 10-20 years when every console in the world is hooked up to the internet, crashes & patches will become more common.
Take, for example, a game like The Sims. The PS2 version wasn't upgradable at all with the hundreds of downloadable skins, wallpapers & furniture that helped make the PC version the best selling game of all time.
But once you can do that, what's to prevent you from downloading & installing a patch as well?
Oh, and I have had the occasional console game crash on me. Like Dennis, I don't play all the time, but when I get a new game (rarely) I tend to play it a lot for the first few days.
I remember Baldurs Gate Dark Alliance on PS2 crashing on me. My girlfriend & I played through the game twice about a year apart, and I played a bit on my own too. Sometime after the 2nd time we'd beaten it, I was playing & hadn't saved in a long time, and the game just froze on me. |
| Sat 10 Jul | janonymous | Deja vu
http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=152267 |
| Sat 10 Jul | T. Norman | Games rarely crash (in particular console games) because it is one type of software in which consumers will not tolerate crashes.
For regular PC software, they have been trained to accept crashes as 'normal'. And the ability to send patches after the original ship date makes buggy software more likely to be released.
I disagree that it is because of the console being a fixed and known platform. The bugs that crash most PC software are mostly the result of plain bad programming or inadequate QA, not variations in hardware configurations. |
| Sat 10 Jul | Immature programmer | 'I disagree that it is because of the console being a fixed and known platform. The bugs that crash most PC software are mostly the result of plain bad programming or inadequate QA, not variations in hardware configurations.'
Nope, wrong. I work in the game industry, and I can vouch for the fact that QA on consoles as opposed to PC's is greatly simplified by uniform hardware configurations.
A 3D intensive game often will run fine on one PC with a particular type of video card, but will crash on another PC. |
| Sat 10 Jul | Brad Wilson | PC games crash all the time. In fact, it's a running joke now that no game can be released to retail until the first patch is ready.
I've never had an Xbox game crash. I've never had a GameCube game crash. I've only ever had one PS2 game crash (GTA: Vice City). PC games crash all the time. Like a previous poster said, the uniformity of hardware is a HUGE win for solid console games. |
| Sat 10 Jul | Nix | Pretty simple. The developer's plataform is _exatly the same_ of the user's plataform. |
| Sun 11 Jul | Game Developer | Console games in part don't crash because of the testing that they go through. Yes, it is true that hardware targets being stable is a big factor, but they are tested much more than any othe piece of software I've written in my 20 year career.
I've spent many nights on the office futon soak testing and babysitting tests of the game being played by AI bots and 15 year old boys with too much time on their hands. It is rigourous. The amount of certification that goes on is quite encouraging. (One time we turned the automatic bot into a feature that allowed the game to be recorded and then saved and allowed you to race against yourself.)
Stil, even with all that, almost every game I've shipped has had a crash bug in it somewhere, just very rare to find. Champions of Norrath has crashed on me in several places (I didn't write that one, just played it), as has Metroid Prime. |
| Sun 11 Jul | www.marktaw.com | Damn, Champions of Norrath is the next one my girlfriend & I want to play. I hear it's better than the Baldurs Gate II (zzzz). |
| Sun 11 Jul | Peter | Console games might crash rarely, since the dev box is the same (usually) as the customer box.
PC games crash like, well, like windows. If you think games do not crash, you have not played evercrack (everquest). This is a game that is played online by about 400,000 customers with wildly variant PC platforms. It gets an update pretty much every month. If you ask any eq player about the directx9 patch, you will get an earful. As games go, it is rather notorious for some updates requiring PC upgrades (err, the last 2 computers I purchased were to be able to keep playing my evercrack). I've managed to get 3 BSOD on a brand new (dell business PC) XP machine in the first month I've had it from that game.
I have gotten DirectX 9 bugs from 2 different games so far that lock up the graphics card in a 640x480x4bit mode that can only be cured with a power cycle. |
| Sun 11 Jul | T. Norman | 'Nope, wrong. I work in the game industry, and I can vouch for the fact that QA on consoles as opposed to PC's is greatly simplified by uniform hardware configurations.'
My statement was about PC software in general, not games. When your financial or word processor or photo editing software crashes, it is seldom because of a particular video card or hardware variation. |
| Sun 11 Jul | Game Programmer Lou | 'My statement was about PC software in general, not games.'
This thread is about games that crash, not PC software in general. |
| Sun 11 Jul | T. Norman | In discussing why games don't crash, it is still useful to discuss why non-games do crash. |
| Sun 11 Jul | Ian H. | I also suspect it is much easier to raise an army of teenage testers to enthusiastically thrash a console game to death than it is to get people to do the same to your component that performs advanced SQL searches on a car insurance database? |
| Sun 11 Jul | Immature programmer | 'In discussing why games don't crash, it is still useful to discuss why non-games do crash. '
Not when you are trying to argue that the reason console games don't crash is not because of uniformity of hardware. It has a great deal to do with rigorous QA which is made possible by uniformity of hardware.
Granted, there are other factors other people have brought up.
1) Game developers take more pride in their work.
Yeah, I suppose that's a factor. The good ones take great pride and ownership in their work and are embarrassed by bugs; they'll spend the extra time to make sure everything's just right. But it's not quite accurate to say other types of developers generally take little or no pride in their work.
2) It's easier to get people to rigorously test games than it is other types of apps.
Yeah, that's true. But it's not that much harder to get people to rigorously test a PC game than a console game.
3) Crashes in games, like embedded software or mission critical apps, are catastrophic and intolerable. This is not necessarily so with other types of PC applications.
Ok, I agree with you on that point T. Norman.
4) Sony and Microsoft have rigorous standards for approval of commercial titles for PS2 & X-Box respectively. There are no certification/approval standards for PC applications in general.
I've heard of it happening, but I have yet to work on a console title that got approval on the first submittal.
I'd have to say uniformity of hardware and official approval standards are the biggest reasons why console games have high QA standards and rarely crash when compared to other types of software (including PC games). |
| Sun 11 Jul | T. Norman | I would also add that most game programmers are significantly better than the average non-game programmer. Game programming requires understanding of so many different things that are beyond what the average programmer is willing or able to learn. |
| Sun 11 Jul | Rodger Donaldson | I'll echo the comments thus far: console games, and games for game-oriented platforms that existed in days of yore (like the Amiga) may generally be pretty reliable, but PC games are buggy pieces of shit.
The latter appears to be something that's getting worse, not better. Console consumers are intolerant of buggy software; PC games just seem to accept that 1.0 won't run right, and that they may have to wait until they've applied many patches. Online gaming appears to have exacerbated this. |
|
| Specifications? How? | Sat 10 Jul | Jilles Oldenbeuving |
| [This post is a re-post of a question posted at my own site]
Before I start of writing this post, I’d like to refer to certain other sources to prove that Specifications are important for any software development. It works the same as house construction: no company is going to build a house without a blueprint (heck, they won’t even get permission to build it otherwise!).
First off, lets link to the Joel test, specifically the part about writing specs [http://purpleslurple.net/ps.php?theurl=http://www.joelonsoftware.com/articles/fog0000000043.html#purp119]. Any questions about why you would write specifications read this article [http://www.joelonsoftware.com/articles/fog0000000036.html]. More information can be found here on Wikipedia [http://en.wikipedia.org/wiki/Requirements_gathering].
The question I have is: how would you go about to document the specifications? This PDF [http://www.stc-online.org/cd-rom/1999/slides/MethWrit.pdf] talks about possible options on pages 109 and 115, but how would you do this?
Everything always boils down to what you really want to do with it. Well, actually, not very much. Specification is firstly a means to communicate the exact soon-to-be implementation to those who should sign-off the project. Secondly, it should be the basis for a technical design document and later the actual implementation. Furthermore, it should provide the definitive answer for testing: should this box be red or blue? As a last needed feature is to be able to quickly see the differences between specific versions of the specification (“What was changed since version x.y.z?”).
So what would be a good way to document these specifications? Because I want ways to quickly show differences between versions I thought about CVS and docbook (together with a tool, Norman Walsh’s diffmk, to generate a proper HTML document containing differences between two versions of the docbook’s XML document). But this proves a little bit tiresome, especially when large volumes of pictures and diagrams are involved. A possitive side of the usage of CVS is that multiple people can work on the specifications. Thats why, in my opinion, dismisses solutions like Word and/or Excel.
It is good to know that other people are struggling with the same problems [http://purpleslurple.net/ps.php?theurl=http://www.mojofat.com/tutorial/step6.html#purp106].
Basically the core of this post is to ask: “What ways of specification would you use in similar circumstances?” Got any answers to this? Do you want to discuss about this topic with me? Write me an email [ojilles@hotmail.com], post a comment on this thread or post a comment at this page on my website: http://www.jillesoldenbeuving.nl/index.php?p=127. |
| Sat 10 Jul | anony coward | Before deciding on how to write specs you need to settle on a development approach. Waterfall, Iterative, Extreme Programming, etc.
Then you can pick a documentation tool appropriate for the job. There are many companies that sell specialized tools for each approach. |
| Sat 10 Jul | AllanL5 | You definitely need some way to include text and diagrams in the Specification document.
This leads me to PDF documents, Word documents, or RTF documents.
You also need some way to point out the differences between two versions of the document.
Typically, my company uses Word documents to put all this stuff together. And yes, they can get quite large. We use Visio for diagramming, or UML Studio for UML diagrams.
We use an Excel spreadsheet to store a 'check-list' version of the specification items (aka Requirements).
We've also used an Access-based database to store and track version meta-data for deliveries. |
| Sat 10 Jul | Dave | I struggled with this same question for many years while I tried many different approaches.
For what it's worth, about a year and a half ago, we settled on using a combination of the following to document our applications, which are 'rich client' Windows applications.
1. Domain Model
2. Glossary
3. Use Cases
4. User Interface Model
I believe this approach could also be used to develop Web-based applications, or probably just about any other software application that involves interaction with an end-user.
The core of this approach is outlined in one book, on which our approach for parts 1-3 are based:
Use Case Modeling (Bittner/Spence)
http://www.amazon.com/exec/obidos/tg/detail/-/0201709139/qid=1089473947/sr=8-1/ref=sr_8_xs_ap_i1_xgl14/002-6815071-9032051?v=glance&s=books&n=507846
This approach has given us a very straightforward way to both document requirements as well as track our progress and plan our work. There are many books written about use cases, including a popular one by Alistair Cockburn, but I think the approach outlined by Bittner and Spence is simpler and easier to manage, even though they share many of the same ideas.
Feel free to e-mail me if you would like more specifics. It's one of many possible solutions, but in 10 years of developing commercial 'shrink-wrap' software applications, this approach has worked the best.
Dave |
| Sat 10 Jul | sl | I really can't stand Word docs anymore! Anything but Word. I think they should be in html. |
| Sat 10 Jul | <sigh/> | Word docs for "describing" and "lists", Visio for "diagram" and "UML" (or UML'ish), all stored on a sharepoint WSS with the "maintain version history" option enabled. Server is backed up regularly with the source archive in SourceValut. Works great and has a version history of sorts. |
| Sun 11 Jul | Mr. Analogy | The basic problem with the current software that I've tried is that you use one program do do your design visually and another to create a comprehensive to-do list of specs. And changes in one are not automatically reflected in the other.
This seems analagous to the problem of UML editors (in the past, anyway): you'd design in the UML editor but then need to update your code to reflect the charts and diagrams.
Syncing the diagrams and the code was a problem. (Now that I think of it, this is a general problem in lots of areas: keeping different representations of a problem sync'd. I guess that's the (currently unrealized) promise of XML.)
My ideal documentation software:
One program that would let you:
1. Include semi-interactive screen shots.
Ability to have hyper links, so if you click on a button on the screen shot it'll show you another screen.
Ability to annotate the screen shot.
2. Gather all of the annotations from the screen shots into some sort of outline.
Thus, you DESIGN in GUI mode (which is how most uses think, IMHO), but you create nice, neat text documents that are easier to work with as a 'to do' list.
Basically something like DEMIN but which gathers all of the annotations, etc. into an outline. Then the outline can be modified as well.
Any opinions on this? |
| Sun 11 Jul | mb | Mr. Anology:
Look up literate programming.
But given that people can't even keep comments in sync with code 5 lines away, I don't think it's really the answer either.
(P.S. XML has nothing to do with this.) |
| Sun 11 Jul | Ian H. | Jilles
As with all these type of questions 'it depends'
Remember the purpose of the (Customer Requirements) Specification is to transfer what is in the Customer's head into the Designer’s head. The best way of doing this is dependent upon many factors.
Do the Customer and Designer understand a common notation, such as UML?
What type of product are you trying to specify?
How good is the relationship between the Customer and Designer.
Does it need to be formally documented for the Pointy Haired Suits? Or would the minutes from a meeting/ in the pub be good enough?
What format would the Designer prefer?
Would the Designer like you to indicate the changes between document up-issues? Or will he need to do this himself anyway. If so, what's the point in you doing it?
What type of design lifecycle will use be using?
Don't take this the wrong way. This forum will be able to give you ideas for documenting / expressing requirements (eg WIKI, web pages, Excel, Doors, Whiteboard photos etc) but the most successful method will be if you can meet with the guy and girls who will be using the specification and asking them what the best format would be.
It's a bit radical for some projects, but why not get them to write the specification? Invite them to your meetings etc while you decide what you need and let them write the spec and then let you review it before design? |
|
| Subscription-based Licensing Model | Sat 10 Jul | Green Pajamas |
| This topic must have been discussed a lot more before.
This guy says that subscription-based licensing model wont work for small ISVs although Microsoft and Sun, etc. will probably move to it:
http://www.startupskills.com/archives/000102.html
The original article he was refering to can be found here:
http://www.informationweek.com/story/showArticle.jhtml?articleID=18401482 |
| Sat 10 Jul | anony coward | It's really just a way to force customers to buy a support contract whether they want it or not. ISVs love support contracts because they provide the revenue stream the article mentions, and they lock the customer into taking upgrades on schedule instead of looking at other vendors; but they're not appropriate for all products (do you really need a support contract for your word processor?). |
| Sat 10 Jul | Fred | Subscription-based licensing does work for ISV's also, but it sure helps to be in a business where _external conditions_ change regularly, making it easier for customers to understand the point of providing a regular cash stream to the editor.
It's much tougher if said external conditions don't change too often, if ever, and the software has reached the point where 90% of useful features have been added.
Very few are the customers who understand that using deadware is very risky (no money -> editor drops development -> if a major problem occurs due eg. to a low-level change in the new version of Windows, too bad.) |
| Sat 10 Jul | christopher (baus.net) | Like financial data? That's exactly how I pay my bills. |
| Sat 10 Jul | Dennis Atkins | Microsoft is basically blackmailing customers with their current subscription scheme where if you don't keep paying your fees, you'll not be allowed to upgrade and will have to pay full price to do so.
You can't tell me this is a program that customers have asked for - the only reason they have gotten away with it so far is because they are abusing their monopoly position.
Now it turns out that MS has gotten fat and happy with the free billions for the nothing they are delivering -- with cash in hand in advance of delivering a product, it seems so pointless for MS to actually deliver a product. This model provides no financial incentive to deliver value. Like a goverment, the money comes in for free via a tax and whatever they do doesn't affect revenue, so nothing is done. Obviously if Microsoft had to deliver value in order to get paid, their revenues would plumet to nothing.
Unfortunately for them, the universality of subscription customers have become very unhappy with this model which provides no financial incentive to deliver value to them. As a monopoly, it is like they are dealing with a government but, and here is the key thing - everyone hates being shafted by a monopoly. Even if the monopoly has the best producs, people hate being screwed and they will never forget the person who did it to them. They are constantly looking for an out.
MS's current program has pissed off the majority of businesses. Most of them are now looking for a way out. Most are looking at Linux but that's giving them worse headaches because Linux is such a pain in the ass and costs big money as well. There basically is no solution right now, but to the guy who figures out how to make these people's lives easier, there's a few billion easy money to be made. |
| Sat 10 Jul | Dennis Atkins | Of course there IS OS X, but american businesses consider a BSD Unix with a Mach kernel, an easy to use UI, the world's fastest PC hardware and a lower price that not only runs all unix software but runs Office as well to be a 'toy' for 'home users' and not the serious business powerhouse that their $499 Dells represent. |
| Sat 10 Jul | Wayne | 'Of course there IS OS X'
No there isn't (not for business). With Apple, you get exactly ONE choice as to which company you buy hardware from. Furthermore, if you want to switch to Linux or another OS later, you also have fewer choices.
Besides, Macs are for girls, everyone knows that :)
'an easy to use UI'
Obviously, not everyone feels that way. The one thing that I hate about the Mac OS is that all your menus are always at the top of the screen, instead of on the application window. Also, I think that it's slow compared to Windows. But, there is no way to be objective about this topic.
'the world's fastest PC hardware'
Actually, Apple was forced to stop saying that (since it isn't true).
'and a lower price'
How can you say that the Mac has a lower price AND mention a $499 Dell in the same sentence?!
'that not only runs all unix software but runs Office'
You can also run Cygwin or VMWare/Virtual PC with a Linux guest OS on Windows. Besides, there aren't a lot of desktop applications for *nix that you can't find a better version of for Windows, so you're left with *nix Server applications, in which case you'll probably want a seperate box anyway.
'as well to be a 'toy' for 'home users''
Barely. There are all of about 15 games released for the Mac each year compared to the 1,500 released for Windows each year. |
| Sat 10 Jul | Joe | Dennis -- give me .NET and the related tools and IDE on Mac OS X and I'll put my PC on ebay tomorrow :) And I don't mean Mono or some other Rotor port...it'd have to be a fully MS-supported write-once-run-anywhere solution. And of course we all know how well that dream worked out for Java on the desktop...
As for subscription-based licensing, I think the model actually works *better* for small ISV's than big companies. Specifically, this works well for selling web apps or smart clients to smaller customers where the backend systems belong to the ISV. The client doesn't have to shell out a lot of cash up front for hardware, they don't have to manage any of it, and upgrades can be made continuously instead of in lengthy cycles. Everybody wins.
But when someone like MS starts trying to get you to buy a subscription to Windows and Office, well...the above poster was correct in that there's simply no additional value provided. |
| Sat 10 Jul | Dennis Atkins | 'No there isn't (not for business).'
Well this is exactly the sort of pigheaded ignorance that is why I started by saying that OS X is not a choice for any business. It may be better, it may by cheaper, it may be more stable but who the f*ck cares, it's not microsoft dammit and that's the way we've always done things around here.
That's why I don't even bother recommending OS X to clients. I just do everything in NET like hey want cause that's the way its done and there is no point in trying to convince the client otherwise. I am not there to save them money. I am not there to provide them with a stable solution with fewer security risks. I am there to do what they want, cash the check and move on. |
| Sat 10 Jul | Dennis Atkins | > How can you say that the Mac has a lower price AND mention a $499 Dell in the same sentence?!
There's this new thing called 'total cost of ownership.' Look into it!
But let's set that aside for the moment. On the raw hardware costs, Mac does not compete at the bottom of the barrel of prices, true. But for medium to high end machines, Mac is the same or less expensive for what you get. |
| Sat 10 Jul | Dennis Atkins | Joe, have you even tried XCode with Cocoa and Objective C? Definitely more productive than net and I'd put the money on the competant Cocoa team in a head off any day of the week.
But none of that matters. All that matters is that no one ever got fired for buying microsoft. No one. Ever. |
| Sat 10 Jul | Dennis Atkins | 'Everybody wins.'
Tell that to the company who just lost all their customer data when their web based software service silently folded up one day after being unprofitable for three years.
But dontja worry - web apps are the wave of the future along with software subscriptions, as you pointed out. It's all about lockin and having a captive audience and the captives don't wind a bit I swear to you! |
| Sat 10 Jul | Dennis Atkins | 'The client doesn't have to shell out a lot of cash up front for hardware'
You mean they can't afford $299 for a fully configured Linux server? |
| Sat 10 Jul | www.marktaw.com | Wow. Not only is Dennis an "evangelist" it sounds like he wants to start his own cult..... er, church. |
| Sat 10 Jul | Joe | > Joe, have you even tried XCode with Cocoa and
> Objective C? Definitely more productive than net and I'd
> put the money on the competant Cocoa team in a head
> off any day of the week.
>
> But none of that matters. All that matters is that no one
> ever got fired for buying microsoft. No one. Ever.
Actually you missed the point. Sure, I could go write apps for Mac OS X...but who is going to buy them? It's a problem of market pull. People write apps for Windows because it's ubiquitous. People buy Windows because there are apps for it... |
| Sat 10 Jul | Joe | > Tell that to the company who just lost all their customer
> data when their web based software service silently
> folded up one day after being unprofitable for three
> years.
Subscribers should *never* lose their data. At any time, any of our customers can request a copy of their database, and take it somewhere else if they so choose. They own their data, we just house it. This makes the task of switching vendors pretty equivilant to what would occur in a non-subscription model. |
| Sat 10 Jul | Joe | > 'The client doesn't have to shell out a lot of cash up front
> for hardware'
>
> You mean they can't afford $299 for a fully configured
> Linux server?
Great...one server. Now they need software to run on that server. I'll even allow that they could choose entirely from open source solutions. They still need people to manage it. What about backups? UPS systems? Security? Patches and upgrades?
And if they aren't comfortable with OSS, now we're talking Websphere/Weblogic/MS IIS, Oracle/SQL Server/Sybase, etc. All that adds up quick, in addition to the management costs...
For small businesses with no formal IT department, these are monstrous headaches. |
| Sat 10 Jul | Dennis Atkins | Ha Joe! I gotcha arguing both sides of the debate for me! |
| Sat 10 Jul | Joe | I'm only arguing one side...that ISV's can provide value to small businesses via a subscription model. I don't see how I've implied anything else...
If you mean in regards to Mac vs. The World, well, those costs are present on *any* platform. |
| Sat 10 Jul | Dennis Atkins | 'They still need people to manage it. What about backups? UPS systems? Security? Patches and upgrades?'
See, you are right that these costs are totally unmanageable for a small business. That is specifically where OS X provides an advantage - running an Apache server under OS X can be as simple a matter as clicking on a single button. For those businesses that are doing a bit more than a shared host can handle and need a dedicated server, OS X is the best solution hands down.
However I don't recommend it because if you do so, the pinheads get their panties in a bunch and start sniveling and whining about how OS X unix is not a serious machine, or they complain that it is too |