Quite a few times on here, such as in the recent Apprentice thread, comments about the importance of interviews have been tossed about. This goes along with the keeper of the board, Joel, who has written several times about the importance of hiring the absolute best of the best, and being absolutely certain of the choice that you make.
Why?
Seriously, I dont get this. If you are on the fence, and there arent any other credible candidates in the running, bring the person onboard, and if things arent looking good in real world projects, using real world technologies, in your real world organization, by the end of the probation period (or by the end of the first week if things are going so bad), part ways.
Indeed going back to the Apprentice thread, its interesting how many opinions of Amy dropped precipitously because she interviewed poorly. She did great in the real world, but failed in the artificial world of interviews, thus shes a no hire. Very odd.
I say this because of a similarity with another artificial/reality situation -- Here in Ontario the government is tossing around the idea of mandatory driver retesting every 10-15 years. The idea is that this would get bad drivers off the road, and I see a lot of correlations with putting too much of an emphasis on interviews: Instead of actually actively enforcing the laws in the real world testing environment of the real world, where people drive as they really do, they would like everyone to artificial drive with their hands at 10 and 2, putting on their faux driving face. How absurd.
Sun 11 Apr | Brad Wilson | Hiring the wrong person is usually at least 10x as expensive as failing to hire the right person.
Never EVER hire unless you're SURE.
Sun 11 Apr | Joe Blandy | 'She did great in the real world, but failed in the artificial world of interviews'
I wouldn't count anything on that 'reality' TV show as part of the 'real world'.
So if interviews are all so artificial, are we just supposed to hire the first person through the door? I guess I see your point, sort of, but what are we supposed to do about it?
Sun 11 Apr | . | 'Hiring the wrong person is usually at least 10x as expensive as failing to hire the right person.'
Uh....ok....
Here's one I just made up to support my claim (or someone else made to support their claim, and I blindly repeat. There's plenty of nonsense statistics to support any position): Failing to hire who would be the right person because you weren't 'sure' costs 1007.2x more than hiring who seems to be the right person at an interview.
I'm not saying that one should just hire anyone. Not even remotely (and as an aside - before I started my own business, I represented myself extremely well in this context. My interview to offer ratio was close to 1:1. This isn't self-defense). I'm just saying that this crusade to be supposedly 'sure' is a big giant pile of rhetoric and bullshit. When you get such a highly regimented hiring process that makes you 'sure' that you hired the right person, you're far more likely to implement a workplace culture and atmosphere that protects and insulates incompetence (lest it conflict with the 'A's hiring A's' myth). I've worked at shops like this where they were incredibly anal and 'sure' with the hiring (only the 'best' from the 'best' schools who did the 'best' on the manufactured how-to-move-mt.fuji tests), and absolutely incompetent boobs made it in (though the strict scientific interview failed to reveal this). They became untouchable: It was a personal attack on any involved in their hiring to claim anything other than them being the second coming (little Easter related reference there). Saying that you only hire the best, as Joel does, absolutely sets you up to hide the fact that you don't hire only the best, or that the best just aren't the best in your organization.
In the end what I'm saying is perhaps that the rarity of firings, or cultures that accept that some relationships don't work, encourages failure. There are some obvious parallels with romantic relationships here as well. Hiring someone shouldn't be such a life long commitment (as being hired isn't a life long commitment by most employees -- if they find they don't like it they jump to another ship), and definitely shouldn't be treated as if it is.
Sun 11 Apr | FullNameRequired | ' Saying that you only hire the best, as Joel does, absolutely sets you up to hide the fact that you don't hire only the best, or that the best just aren't the best in your organization.
'
this sounds dangerously like good common sense.
are you sure you are at the right forum?
Sun 11 Apr | Philo | There are a bajillion job applicants out there. This was even true during the dotcom boom. When you hire someone, you stop looking.
What you are in effect saying is 'hey, I'm 23 and I'm not married. Sure I haven't met 'Ms. Right', but what the heck - I'll just marry the next best thing. If she doesn't work out, I'll just divorce her.'
So, best case - you get a diamond in the rough and everyone is happy. (rare)
Or you get an average person who kinda does an okay job. You're going to be hard-pressed to dump them just because they do an okay job.
Or you get Omarosa, who's going to sue you if you even *think* about firing her without a year's worth of poor evaluations.
And the next day Chris Sells' calls and says he wants to come work for you. [eek!]
Going back to the restaurant analogy - if you're trying to staff a McDonald's, then you just hire your 'best guesses' to man the trenches - you can give yourself enough fodder to find some stars to pull up to the top.
But if you've got five superstars and you're looking for #6, then you keep looking until everyone is positive you've got them. They're out there, you just have to find them.
There's a study that indicates that an excellent coder is something on the order of eighty times more effective than an average coder. Since your average coder wants $50k, and you need $90k to land the excellent coder you want, isn't it a wise investment to simply leave the opening empty until you find that superstar?
Finally, falling back to old faithful:
Microsoft believes it's more cost-effective to not hire an excellent candidate than to hire a mediocre one. Who are we to argue with their methods? ;-)
Philo
Sun 11 Apr | no name | The interview segment was probably the most "real" thing that occurred on that show. How Amy's future peers/bosses felt about her was very important because she was applying for a desk job and would most likely be interacting with at least some of them on a daily basis.
Sun 11 Apr | sgf | 'There's a study that indicates that an excellent coder is something on the order of eighty times more effective than an average coder'
I keep hearing this reference, with various numbers. I don't believe it. Anyone have a reference to an actual study??
Sun 11 Apr | Sexist | The original quote was from 'The Mythical Man Month', and I believe it was more like '10' times more productive rather than '80' times, and it refered to lines of code per day. Back then (1960s), when people still coded in assembly language and there were no extensive APIs to handle common tasks, I think the 10x factor might have been valid. Probably not so today.
But yeah, I agree with you that any number at all seems bogus. If one guy writes lots of code but the second guy writes less code with fewer bugs and the third guy writes the best code of all but has a bad attitude and the fourth guy writes very little code but guides the team's whiteboard designs -- well, which one is the most productive? And how can you quantify what the 10x, 80x, 2x multiplier is?
Sun 11 Apr | Dennis Atkins | 'In Ontario the government is tossing around the idea of mandatory driver retesting'
Um, it's not about safely in the least, don't you see? It's all about the fees.
Sun 11 Apr | Dennis Atkins | The 10x figure is from Peopleware not Man Month. It's for short term projects. The language was the programmers choice. The best were 10 times faster, made ten times fewer errors and wrote ten times fewer lines to accomplish the same goals.
Sun 11 Apr | Dennis Atkins | Oh and the reason that it is 80 times nowadays is because you will have one guy writing in C# or using C++ and the STL. these guys will be 80x faster than the guy reimplementing basic functionality from scratch in whatever language.
* Does the ShareWare model is still viable in 2004 ?
Last shareware success story Im aware of was in the
early 90s with ID Software (Doom), published by Apogee back then ...
I had a look at successful shareware products and they now seems to be published not by one single guy out
of his appartment but by fairly large company :
SnagIt (www.techsmith.com)
CuteFTP (www.globascape.com)
ShareWare History :
http://www.asp-shareware.org/users/history-of-shareware.asp
Am I born 20 years too late ;-)
So guys what do yo think ?
Is it possible for someone to make it big via the shareware model ?
Sun 11 Apr | Famous Shareware Developer | I am making almost $350/month after many years of hard work developing and marketing my shareware products. So, yes it can work, but you have to do a lot of work to build it up to be as strong as a company like mine.
Sun 11 Apr | JSD | $350 a month?
I guess the answer is yes, shareware is gone :)
More seriously, maybe $350 is enough where you live but here (UK) it's next to nothing. The last success story I heard was about the author of Homesite. It is a very good product and he sold it to Macromedia.
JSD
Sun 11 Apr | Dewd | Perhaps open source has substituted shareware.
There are open source projects everywhere nowadays. Even Microsoft has released one as open source.
Sun 11 Apr | Ken Klose | Famous Shareware Developer: what's your product. I'd like to see what's worth $350/month.
Sun 11 Apr | Noname | What is "shareware" nowadays? Even big expensive software like Oracle and Perforce have free downloadable versions.
Sun 11 Apr | Dan Maas | I think limited-free-download is probably a better model than (honor-system) shareware.
One shareware author did a controlled study, releasing both a limited (trial) and non-limited (shareware) version of his software. The purchase rate for the limited version was three times that of the non-limited version. I think this one has been cited here before.
Sun 11 Apr | Mark Hoffman |
I think the $350/month comment was sarcasm, guys..Note the line about a 'company as strong as mine'.
Sun 11 Apr | anon to protect the guilty | But yes, only if the does speaks the english model still viable is in the millenium new new.
Sun 11 Apr | help me understand | OT: I sometimes see posts like the one here from 'Anon to protect the guilty' and I think to myself, 'What is this sentence trying to say?'.
So, I break out my decoder ring. Maybe this person can't speak English very well, maybe they are bad at typing. However words like viable and millenium stand out as words a fluent English speaker would know, and I don't see any common typing errors.
Is this some hackers' test, or back channel communication? I am annoyed by this.
Sun 11 Apr | duh | Zoom. The sound of sarcasm going over the head...
This is another perspective on how employees should be treated, and has some relevance to this recent thread on Loyalty:
http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=131434
Here is the article:
http://www.gamasutra.com/columns/fristrom/20040312/fristrom_01.shtml (free registration required)
It even refers to one of Joels articles.
Some interesting pieces:
************************
Fickle employees are a part of business. Loyalty is a forgotten concept--these days, if you have talent, you ask, What can the company do for me? first, and What can I do for the company? second. And theres nothing wrong with that--since the typical companys goal is to give their employees as little as possible, and get out of them as much as possible, its not surprising that people have this attitude. If they didnt have this attitude, theyd be taken advantage of.
...
... management guru Peter Drucker says that you should treat your employees as if they were part of a volunteer organization. Which isnt as lax as it sounds: Drucker is talking about volunteer organizations like the Boy Scouts and the church--organizations where people set goals for themselves and if they fail to achieve those goals, are let go.
When a rock star tells us--or even just implies--that its not our game, its theirs, we look for some other place to go where we can make a game we can call ours. We go volunteer somewhere else.
************************
So, are we really nothing more than paid volunteers?
Sun 11 Apr | one programmer's opinion | When it comes to loyalty, I don't believe developers owe their employers anything unless the employer has forked over a lot of cash to train them. Many developers leave an employer for more money because they understand that their opportunity to make a decent living developing software tends to be short lived.
Sun 11 Apr | Philo | Looks like someone's trying to create a meme.
Loyalty is alive and well. Just about anybody working at Microsoft could walk away and double their pay immediately. While the stock may hold long-term promise, it's not the millionaire maker it was ten years ago.
So why does Microsoft (which most people know pays below industry average) have 50k+ employees?
Because we're treated well and we believe in our employer. When I plug MS products on here, I don't plug products because I'm expected to, or because I'm a paid shill - it's because I honestly believe in the products and what they can do.
I feel loyal to Microsoft because I feel there's a true relationship. Sure, they pay me in exchange for work, but there's more to it than that.
A couple of people have said on here a couple of times - why is it so very hard for companies to follow the thought pattern of 'we want to be a successful software development shop - maybe we should look at a very successful company and see what they do, then copy that'?
Treat your employees like people, not 'human capital'
Give them the authority to do their jobs
Trust them
Treat them well
Those are some very basic ideas, but they work.
Philo
Sun 11 Apr | no name | '''Just about anybody working at Microsoft could walk away and double their pay immediately'''
You're so full of sh*t I can smell you from here. Unless you're talking about the consulting arm, which is where you work I believe, I don't know about the consulting side.
Sun 11 Apr | Skeptic | 'organizations like the Boy Scouts and the church--organizations where people set goals for themselves and if they fail to achieve those goals, are let go.'
??? They kick you out of the boy scouts and churches if you don't meet your stated goals????
???
Sun 11 Apr | Skeptic | philo,
microsoft pays substandard wages? that made sense when you made a killing on the stocks and bonuses but those days are gone.
it doesn't make sens eto me that they respect their employees if they pay substandard wages. sounds like they are merely taking advantage of them.
Sun 11 Apr | Richard Kuo | Pay usually isn't the motivating factor at highly rated companies. It doesn't hurt, but it doesn't factor in as highly as other aspects of the job.
Generally speaking, you don't f*** other people just because you can. Apparently this runs contrary to a lot of the disgruntled masses on this board, but some of you need to reassess and learn the lesson now. Believe it or not, a lot of people and employers (yes employers are people too) follow that rule.
Sun 11 Apr | Dewd | 'It also creates what Jim McCarthy calls 'the guy in a room' phenomenon. You put all of your hopes on one guy, and then wait. And wait. And wait.'
LOL. I am that guy. Sorry for making you wait. wait. wait. :-)
Sun 11 Apr | Motown (AU) | 'Generally speaking, you don't f*** other people just because you can. Apparently this runs contrary to a lot of the disgruntled masses on this board, but some of you need to reassess and learn the lesson now.'
Amen to that.
Perhaps it's because I don't live in cubicle-land, but in the circles I move (SMEs), employment is far more than a business transaction where $X buys you Y committment. Here there's a whole world of give and take as people generally try to get along and get the job done.
Sun 11 Apr | -- | Pardon my ignorance, but SME=???
Sun 11 Apr | a cynic writes... | SME = small / medium enterprise.
Back to the main discussion - *extra* money isn't usually a motivating factor but if pay is seen as unfairly low it can demotivate. This is called a 'hygiene factor'. Boring things like professional pride are the real motivators for most people.
Sun 11 Apr | www.marktaw.com | My (ex) boss offered $100 to the person who fixed the most bugs. Maybe for the Indian programmers making who knows what (did I hear $40 a day? thrown around?) this was a motivator, but I tend to lump salaries into 2 categories - won't change my lifestyle, will change my lifestyle.
I was actually insulted that he'd offer a monetary reward & think that that's what motivated us, and simultaneously taken aback by his stupidity.
I nearly fell out of my chair the next week when he used the term 'Man-Month' in a sentance seriously. It was particularly funny since I'd just finished reading about the mythical kind.
Sun 11 Apr | www.marktaw.com | Now where is that thread on the Prisoner's Dilemma... Here it is:
http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=125360
Sun 11 Apr | anon | > employment is far more than a business transaction where $X buys you Y committment
Absolutely! When i am well paid, i am honest and loyal. When my pay is below average or I am forced to work too many hours, I steal everything I can. Last year I made $200,000 selling the companies proprietary source code to their competitor overseas. That'll teach them.
See, it all works out in the end.
Hey folks. Longtime lurker, first-time poster here. Ive got kinda of a weird question. Im nearing the end of my junior year of college (CS major) and am trying to figure out what to do post-graduation to maximize my future employability.
Originally, I was thinking of doing a one-year masters program in CS (perhaps specializing in networks or info security, both of which Ive been interested in for a long time). But then, I became aware of a one-year MBA program offered by my school. After that, I began to wonder if an MBA might be a worthwhile thing for me to consider. This occurred to me largely based on several posts Ive read here on the JoS forum, that seem to indicate that it is impossible to sustain a lifelong career as a programmer without eventually going to management.
Anyway, I was just wondering if I could get some input from anybody who might have an idea as to the value of either or both of these kinds of degrees.
Thanks much.
Sun 11 Apr | Philo | If you don't think four years of college makes you employable, what makes you think five years will?
I strongly advise anyone who asks against going straight into a graduate program after getting their bachelor's degree.
1) You're spending a year spending money instead of earning it; even working a minimum wage internship would be fiscally better
2) In general in IT, an MSCS doesn't really add value. An MSCS with no work experience would be effectively worthless.
3) I feel that I got a lot more out of my law degree for having had real-world experience. I cannot imagine absorbing all those concepts meaningfully at 21.
4) Examine why you want an MSCS - I suspect quite a few people get their master's directly out of fear of the real world. Might as well face it now, it's cheaper.
5) If you find out that you hate programming, you've really wasted some time and money.
Personally, I think if academic institutions were intellectually honest, they wouldn't accept Master's degree candidates that had no work experience. Of course, that would hurt profits...
Now everything has an exception, and this is no different - if you've got a genuine once-in-a-lifetime opportunity (Rhodes Scholarship, apprenticeship with a significant member of the community, unique learning opportunity) then go for it. But if we're talking about the idle musings of a college senior, get out there and get a job. :-)
Philo
Sun 11 Apr | RP | Same here. While the thread I opened before makes me look like a bit of an idiot I do know that getting yourself educated without some real life education is useless.
Sun 11 Apr | Mark Hoffman |
Well, as someone who regretted not having more education, I would lean more towards going after the masters.
If you're having to choose between a masters in CS or an MBA, then I would recommend giving the MBA serious consideration. A person with strong technical skills that understand business principles is still a rare find these days.
I agree with Philo that no amount of education can replace real world experience. It's still the best teacher. But that isn't to say that more education is a bad thing.
Sun 11 Apr | Lou | Possibly the best thing you can do to make yourself employable is to get employed - get an internship or co-op and get involved with a company delivering a solid product.
As far as an MBA versus a Masters in CS - most discussions here have come the general conclusion that a masters in CS isn't really worth the time and money invested - it's experience that tends to matter most. As for the MBA - it is entirely possible to have a long career as a programmer and not get into management - however you'll likely be involved as a project lead or put in charge of a project at some point. To that end getting exposure to some project management and general managerial education is likely beneficial. Your options here include getting another BS in Industrial Engineering, Management (even a BA would be adequate in Management), or even a BS in MIS. It's the generalist business background that will allow you to take your CS education and capitalize on it in the job market (at least that's my experience).
Sun 11 Apr | T. Norman | MSCS only helps if at least one of the following apply:
- Your bachelor's degree wasn't in CS.
- The MSCS program provides the opportunity to work on very specialized, innovative material, such as natural language translation or cryptography.
- You plan to do a PhD in CS.
- You live in a country outside the US where the MSCS is respected more than a BSCS.
- You plan to teach CS at the college level (a PhD is not always required).
- You went to a no-name school for your CS bachelors and have been accepted to a big-name place for your MS, like MIT or Carnegie Mellon.
Sun 11 Apr | babs | Thanks for the comments I've gotten so far. Several of you have said that an MSCS is worth very little. What I'm curious about is, are you saying that any master's in CS is worthless, or are you only referring to a 'general' MS degree in CS? For example, if I were interested in working in the area of network security, might it be advantageous if I were to obtain a master's in that specific discipline, which I've seen that several schools offer? Or would I be somehow limiting my options in doing that?
Thanks again.
Sun 11 Apr | one programmer's opinion | Babs,
While I agree with Philo that no amount of education can replace real world experience, I believe it is a lot easier to pursue your educational goals when you are young and not working. My advice to you is to stay in school and pursue your MBA. If feasible seek out an internship as well so that you have something else to put on your resume.
Sun 11 Apr | Canuck | I have never regretted not getting an MS in computer science.
I do however, kick myself daily for not getting an MBA.
Sun 11 Apr | Nick | An MBA directly after a BS is generally worthless, but an MSCS isn't. If you're interested in a particular field to specialize in (networking or security) that's exactly what an MSCS is good for.
If you're concerned about employability in general, what others have said above is generally true. But if you specifically want to target your job search to security, for example, then getting the MS would be helpful. If you live in the US it would be more beneficial if the MS program was recognized by the NSA as a center for academic excellent in information assurance: http://www.nsa.gov/ia/academia/index.cfm
If you want to switch over into management, then work for 3-5 years before pursuing the MBA. Getting an MBA when they switched career tracks has given a lot of people I know a 'bounce'.
Despite what some people have said above, I have seen a lot of job ads in the last few years that say MSCS preferred or required. That said, you may be screened from other jobs that don't want to pay for someone with an MS.
But I truly believe that in the long run, more education is beneificial in the job market. As the IT field gets more mature, I would expect more organizations to be more demanding of their candidates - especially if legal liability becomes more of an issue.
Sun 11 Apr | Philo | 'I believe it is a lot easier to pursue your educational goals when you are young and not working'
All the more reason for an employer to value it less. ;-)
An interesting side-effect of having work experience while taking graduate classes is that a) it's easier to get good grades, and b) it's easier to thresh the wheat from the chaff in the material.
MSCS in robotics or crypto vs. someone who's been working for two years in the robotics or crypto industries? I'll take the latter every time.
If you really, really, really want an MSCS, then graduate, get a job near a good university that offers an evening MSCS program, and get it at night.
If that's not appealing, question how badly you want the MSCS.
Philo
Sun 11 Apr | T. Norman | But Philo ... someone without significant experience may find it impossible to get entry into the robotics or crypto fields without an MSCS.
Sun 11 Apr | Blah | An mba without working experience is worthless. Only the lowest ranked mba programs will accept candidates with no work experience.
Sun 11 Apr | Dennis Atkins | Philo is right. Somone with a MSCS and no experience is a wanker who expects too much pay. Probably not literally true, but that is how employers will view you.
A PhD is usually worth little too except when you yourself initiated substantial and important research and published in the leading journals.
Of course you can publish in the same journals without a pHD and its a lot cheaper and is worth just as much. Main difference is when you are done YOU own your invention and not the university. that puts you in a good position.
This is all US. Outside of North America in almost all teh world a masters is equivalent to an american bachelors and a foreign bachelors is equivalent to an american community collece certificate. If you don't believe me, you haven't interviewed people with these degrees
Sun 11 Apr | no name | T Norman highlights something very interesting - that a Masters in CS is useful only if your first degree wasn't in CS.
It might not be so true now, but there was a time when the only people doing MSCS's were people without talent. They needed something extra to get a job. To me, a masters still has that feel if it's not backed up by a PhD.
If someone really is a good researcher, he or she will have the PhD, or equivalent projects at some company. If they have a masters, they lacked the talent to get a job.
Sun 11 Apr | Dino | The best thing to do is to contact the career services office of the schools you are thinking about attending and see what their placement rate is like. I would also contact some professors and get names and numbers of recently graduated master's students who had a concentration in network security.
Data from the career services offfice and info from recent graduates will be much more helpful than random, generic chatter from a message board.
Sun 11 Apr | Scott | I am getting a masters in CS part-time while working. I think it's a great way to go, especially if the tuition is paid for by your employer.
Sun 11 Apr | Steve Forest | I got my BS in CS (w/Business minor) in 1988 from Northern Illinois University. Since I had had two internships, I sorta had a good idea of what the typical jobs in the Chicago area were like at the time.
I decided to stay on at NIU and get my MS in Computer Science (it took a summer, fall, spring, and summer).
Why did I do it?
1) They knew me and were willing to waive my tuitition (I still had to pay fees) and give me $xxx a month in exchange for working 20 hours/week.
2) I still knew tons of people on campus, so it wasn't like I had to move to a strange town and be socially isolated.
3) I knew the CS program and exactly what to expect.
4) I didn't have bills that you tend to sign up for (i.e. car payments, etc.) once you start working.
5) I wanted to 'differentiate myself from the crowd'.
and the most important,
6) For the knowledge.
No one I work with knows I have an MS in CS (or BS for that matter!). There's no need to tell them and I don't think they really care.
I am completely happy with my decision to stay on and get my MS in CS at that time.
I had the 'momentum' from my BS to make the MS experience very smooth. (Notice I didn't say 'easy'.)
Sun 11 Apr | Philo | Your entire post is invalidated by this:
'1) They knew me and were willing to waive my tuitition (I still had to pay fees) and give me $xxx a month in exchange for working 20 hours/week'
You got free tuition, a stipend, *and* work experience. I'd call that a damn good reason to stick around. (which see: my exceptions above) ;-)
Philo
Sun 11 Apr | Dennis Atkins | 'It might not be so true now, but there was a time when the only people doing MSCS's were people without talent. They needed something extra to get a job.'
It's still true.
During these years as a software developer I realized there is something missing. Im not
talking about the grand scheme of things. I simply realized there is a tool that, if
developed right, would fit like a glove to a certain niche. I believe this is such a good
idea that Im not saying what product is to keep the competition away.
But some things plague me. I have never developed shrinkwrap software. I dont know what would
take to develop and test such an application. For this to work it would have to be
developed in VC++ (the best performing language on Windows, AFAIK). Speed is crucial. Im mostly a Java guy with some Swing and lots of EJB. The product itself is pretty complex, and it would require a strong knowledge of databases, especially a certain vendor, and that is something I am not an expert at.
Hell, I dont even know where to start. Now I come to realize: I have the idea, I believe I
have the niche but I dont have the tools or the know-how.
And how do I keep the long term vision, the motivation to work on this until revenue eventually starts to flow?
Any pointers on how to make this go ahead?
Sun 11 Apr | Fred | >> Speed is crucial.
VB for the interface, PB/DLL for the number crunching. I doubt you'll find any tool that'll let you be as productive, and not worry about dangling pointers and buffer overflows :-)
My E.20
Sun 11 Apr | Bored Bystander | >> Any pointers on how to make this go ahead?
I don't think you're exactly asking about courage. You're trying to figure out how to execute your idea.
If you're currently working and have an income, may I make a suggestion based upon what you're saying. And I am serious.
Define segments of your project and sub out the implementation work, in C++ or whatever, on rentacoder.com. Define segments of work that don't reveal the intent of the entire project.
A benefit of the subbing-out model is that you would be forced to engineer your entire concept from start to finish and you would have to divide your concept into functional areas.
A variant would be to sub out the development of performance critical sections in a compiled language, while you would develop the 'shell', the user interface, and/or the main application.
The reason I say this is that you're admitting that you don't currently know a language that would allow you to develop an entire redistributable product.
Sun 11 Apr | Philo | Prototype the thing in C# - it's close enough to Java that you should be able to pick it up pretty quickly, and the Visual Studio IDE will help you with your dev time.
If you really need microsecond gains, refactor the areas that need it into C++ (or even assembly language?)
You vaguely mention needing to understand the platform and databases and intricacy - unless you're thinking of a vendor-specific niche, I'd have to push SQL Server/Analysis services over PowerBuilder - both for ease of development and ease of understanding.
If you do sub out parts of the project, be sure to sub out parts that don't represent the whole, so you don't find yourself undercut in the market (this applies whether you sub locally or overseas).
[Yes, I'm wearing my Microsoft hat now, but I honestly believe in the time-to-market differentiators of our tools]
Philo
Sun 11 Apr | Mark Hoffman |
I might suggest to take a step back and assess your business skills or entreprenurial zeal before your technical abilities.
Not to sound harsh, but ideas are largely worthless. It's the ability to execute an idea that separates people. I'll go further and suggest that if your idea is destined for profitability, then it probably isn't novel: There are probably several people with the same idea right now.
Don't be discouraged. As I said before, the ability to see an idea through profitable fruition is beyond most people so even if someone else has the same idea that you do, they might not be able to make it happen.
Eric Sink made a great book recommendation a while back that is a wonderful book for budding entrepreneurs. It's called 'You Need to Be a Little Crazy : The Truth about Starting and Growing Your Business' by Barry Moltz. It's an easy book to read and offers some home-spun advice from someone who has both failed and succeeded in business.
Sun 11 Apr | RP | > > I don't think you're exactly asking about courage. You're trying to figure out how to execute your idea.
That is absolutely right. I don't know where to begin and I am afraid to begin. What if it doesn't make any sense at all?
This seems to be such a huge undertaking that it makes my head go round. Are there any books? Articles? Websites?
Something to help me go along the way.
Sun 11 Apr | RP | Philo:
The thing must be done in C++. My experience tells me that Java or C# simply aren't up to snuff in terms of performance. We're talking about some very very heavy number crunching here.
Sun 11 Apr | Philo | RP, the number crunching isn't in the entire application, is it? You prototype in C#, then once you've got it working the way you want it, you refactor libraries in C++ as necessary.
Or, if you're crunching data, you look at Analysis Services to see if that makes more sense.
However, I'm going to take this all back now and agree with Mark - you're looking at a business proposition, and the first step in any business is a business plan...
Philo
Sun 11 Apr | x | Usually, I'm the first to be a performance bigot, since I
work on small, embedded systems where everything's
slow, sloppy programming is punished harshly, and the
classic 'just buy a faster CPU and more memory' fix isn't
relevant.
But in this case, designing your app
using a scripting language to prototype makes sense; you'll
get a feel for the UI and can work out issues with your
algorithm with small datasets, and if you're looking for
funding or customers, you'll have something to demo.
(This is good both for improving your UI as well as
showing some 'meat' as opposed to slideware.)
If you get funded or otherwise feel confident in going
forward, figure out the slow parts and recode those in C++.
(Note: db's are slow enough that recoding db interactor
code in C++ won't help so much. Number-crunching is
another story.)
Sun 11 Apr | RP | Yes, number crunching is another completely different thing and I expressed myself the wrong way back there.
What I mean is, this app must take as little memory as possible. I've developed in both Visual Basic and PowerBuilder, excelent languages when you want to write db driven apps, and both deliver an exceedingly big executable. And performance isn't that good when you have tons of thousands of records being dumped on you.
Sun 11 Apr | Philo | Dude, with all due respect, you're talking all over the place. 'Must use as little memory as possible' but 'having thousands of records dumped on you'?
'Thousands'? That's absolutely nothing in modern terms. I'll wager most senior programmers on JoS use thousands of records as test sets.
Once again, I suggest you slow down, take a deep breath, and start drafting a business plan, then start working on your requirements. You've got a ways to go before you have to worry about what platform.
Best of luck!
Philo
Sun 11 Apr | Philo | Oops - missed the 'tons'
But my last statements still apply. :)
Philo
Sun 11 Apr | C Rose | On the performance issue, the work I do involves heavy number crunching. As I'm a researcher (I'm not developing shrink-wrap), I use Matlab*, which is a very complete environment for the kind of work I do. It relies on BLAS and LAPACK for its matrix-vector stuff. These are portable implementations of state of the art numerical algorithms. I'd suggest you try to 'vectorise' your numerical problems, as you'll then be able to use the BLAS/LAPACK libraries (via C/C++) to get the best numerical performance (and your code will make use of SMP where available, etc.). These algorithms are also very well tested. They are also free.
On some work I did recently, where I was trying to optimise the computation of a Moore-Penrose pseudoinverse (and had to code in C), I found that GCC on Windows produced faster code than VC++ (by about 10%, and I tried lots of compiler flag combinations). Although the problem was quite specific, the algorithm was fairly generic (for loops, standard C stuff), so I'd expect similar results in general.
People also swear by the intel compilers, but I didn't need the speed that badly to go and buy a new compiler.
My advice is to first make sure your numerical algorithms are correct, maintainable, documented etc. If your program isn't fast enough, profile it, and then optimise the slow bits. It's silly to prematurely optimise, or worry about getting the best performance from day one. So long as you don't shoot yourself in the foot (e.g. by deciding you can do better than all the numerical algorithms researchers), you shouldn;t worry about performance too much -- concentrate on getting the thing to work at all.
*Matlab has a reputation for being slow -- but this is because, for everything other than matrix-vector stuff, it runs an interpreter. So, if you're a C coder and you try to write a matrix-matrix product in Matlab's interpreted language, it will be slow. When you know to use the built-in functions instead of writing your own, Matlab will beat 99.999% of hand-rolled numerical C code easily.
Sun 11 Apr | Konrad | The memory the application takes up may or may not be important. What definitely is important is that it meets the needs the customers perceive themselves as having and are willing to pay for. What is also important is that you go out and meet these customers and make sure you understand them, and they are willing to try out your product, and this can happen on the understanding that it is slow.
My opinion is that you are comfortable in a technical domain so you try to deal with that; and I'm not trying to be demeaning but that is one part in many, possibly one of the smallest parts, of running a business like this successfully. I only identify this because I've done just the same thing myself so I think I see your thinking; apologies if I have actually misread.
Sun 11 Apr | x | As for performance, the most important issue is what does
your market demand for performance? These need to
be answered, and it is rarely 'as fast as possible' (although
it sometimes is). For example, if a program is interactive,
a couple seconds delay in crunching is probably OK. If it's
part of a networked infrastructure with 'user' programs
interacting with it via API's, you may have more demanding
performance requirements.
Be sure to separate 'required by the market' from
'aesthetic'. Personally, I'm a huge aesthete in this sort
of thing, so I went to an area where the market and my
aesthetics complement each other :) But figuring out when
something is 'good enough' is extremely important,
particularly since you always have limited resources and
other things (UI, standards compliance, reporting
capabilities, etc) may be the things which determine
success - not raw performance.
Sun 11 Apr | JSD | Hi,
I have gone through the same experience and started pretty much with an equivalent skill set to what you have now.
It took me some five years and three releases to overcome most of the problems that you will probably have (and our product is number crunching at its best using anything from a few dozen to thousands of records) so be prepared for a steep and long learning curve. Having said that, shrinkwrap apps are not *that* different. You need attention to detail and you need to widen your knowledge to encompass UI design, usability and internationalisation. The first step is getting as many books as possible and read them.
We chose VB for the frontend and C++ DLLs for the time sensitive bits and the outcome wasn't bad at all. If I were to do it again I would probably go for a C++ only solution (either a portable one or MFC). On the other hand I learned a lot during the process and I am sure I would only be in v1 now had I started with C++ for everything.
What does help is figuring out what are the core features that your clients would want to see and concentrate there. If your app is sufficiently important your clients will probably not care if you don't support the latest bells and whistles. Very important: design for stability over speed for the first version(s). If it crashes all the time no one will see it fly over tons of records.
I think that the most important thing is not to despair too early, we are still very far from a large enough client base after all this time and I guess there's at least another five years until it starts in earnest for us.
Hope this helps.
JSD
Sun 11 Apr | the artist formerly known as prince | Whatever you do keep your day job, and farm out as much as possible.
Sun 11 Apr | jm | RP, I'm impressed that you understand the difficulty, and that you correctly identify the need to do it in C++.
I have gone down the path you describe and it's much harder than it seems to the outsider. (You, surprisingly, seem to have a feel for this.)
A VB framework with C++ modules is an attractive option, and it's how I started. Eventually I upgraded to all C++, and this delivered powerful benefits in power and portability. However there is definitely a trade-off.
C# and its .Net cousins are fine for in-house corporate development, but not for commercial apps. Apart from the dependencies, there's also the matter of code discovery.
Where do top candian CS programs come in as compared to the graduate programs in the US ?
Specifically , how good is the Univ Of British Columbia ? Compared to U toronto ?
Sun 11 Apr | Canuck | The University of Waterloo is recognized as best CS/Math school in Canada. Given its widely known reputation I would assume it should figure prominently on a resume, even abroad. I have worked with several graduates from this program and they were all quite gifted engineers and developers.
The Univeristy of Toronto is well respected as well. I work for a firm in Toronto and we hire talent from U of T almost exclusively. We have had great success with thier students. Very well rounded candidates for the most part.
Generally the top three Canadian schools for CS are:
Waterloo
Toronto
Queen's
Ive been investigating Flash and Flex a lot in the last month or so, and I have to say Im imipressed. The latest version of the Flash IDE (2004 MX Pro) can be configured to be used in a way very similar to visual basic (i.e. without any animation constructs like player head, timelines, layers, etc). XML parsing, web services, and integration with RDBMS systems are built in. And Actionscript 2 is completely object oriented, with intuitive (i.e. very similar to java) support for inheritance, interfaces, polymorphism, yada yada yada. And a standard collection of very plain, normal-looking UI widgets now ship with the product (as opposed to the flash trash so often pushed by designer types).
In terms of market penetration, Flash player 6 is at 92%, which is pretty good.
http://www.macromedia.com/software/player_census/flashplayer/version_penetration.html
There are still problems, of course. The largest one I can think of is that flash code is persisted as a .fla file, a proprietary binary format. Even if you externalize your actionscript code to text .as files, this still leaves a substantial amount of your work (i.e. all the graphical layout work) in a binary format, which means you cant diff versions to see what has been changing in your source control system.
The Flash player also apparantly has a memory leak in the Web Services parsing code: http://www.flashorb.com/articles/soap_vs_flash_remoting_benchmark.shtml
What else is stopping flash from becoming the new platform for web UI?
* There doesnt seem to be a good actionscript 2 book out yet (oreilly book comes out next month and should solve that problem).
* Flash has the designer taint that makes developers not take it seriously.
*Macromedia hasnt done a very good marketing job: Ive only discovered these capabilities because Ive made an effort to find out about this stuff.
Any other reasons Ive missed? What potential does flash have to do what java originally promised and failed to do (write once, run everywhere, distribute via the browser)?
Sun 11 Apr | John Topley (www.johntopley.com) | Flash has traditionally had a poor accessibility story, although I hear that they've tackled that with the latest version.
Sun 11 Apr | Mr. Analogy | 'Flash has traditionally had a poor accessibility story,'
Can you elaborate or give some examples of that?
Are you saying that it's got a poor history for supporting features for the vision impaired or hearing impaired.
Sun 11 Apr | Michael Sica (michaelsica.com) | It all comes down to Macromedia's marketing.
Most people probably equate Flash with gaudy web site intros, stupid web sites that they can't navigate without animations and sounds flying all over the place, and advertisements.
I haven't seen tons of ads or PR (write ups by journalists in major geek outlets) touting flash as a great programmer tool.
But maybe Macromedia is waiting until these new features are more mature (read: stable) before they dump a ton of money into marketing them.
...
Another thing that I think holds it back is developer mindshare about price and learning curve. You have to either buy the Flash Authoring Environment ($700) or the Flex server (just came out) for $12,000. You also have learn how to use the Flash product! Not everyone knows about the developer centric configuration. (I didn't think it was that great, it still has a Designer feel IMO, but I didn't use it for too long. Just played with it.)
.... I wish I could pick up all these new technologies in the palm of my hand and just slam them into my head. Learning through osmosis would be so much faster. I'm still learning JSP/J2EE/Java. And quite frankly I don't have time to learn the Flash stuff....
Sun 11 Apr | Michael Sica (michaelsica.com) | Maybe I should have said, "lack of marketing".
Sun 11 Apr | Eric Debois | $12,000? Ill be darned.
Anyway, I think Macromedia have recognized that flash sites is a bad idea and are now trying to evolve the concept out of that area.
I think we will see more of the streaming media part of flash. Its the most widespread, lightweight streaming client after all.
Tell me, can you connect a flash app directly to a DB server?
Sun 11 Apr | Michael Sica (michaelsica.com) | Eric, I could be wrong. But I don't think the Flash player or the server side ActionScript can connect directly to a DB. You'd have to talk to objects on the server through Flash Remoting or Web Services. (As mentioned above the Flash player can consume Web Services.)
Sun 11 Apr | Eric Debois | Well, thats a kinda major drawback then if they are going for the VB market. As long as you are bound by HTTP statelessness you might as well use regular web stuff, and maybe spice it up with XUL or applets if you want to get that 'it looks like a real app' thing going.
VBs strenght was (in my opinion) always the gui stuff, combined with painless ODBC connectivity.
Sun 11 Apr | mystified | <>Well, thats a kinda major drawback then if they are >>going for the VB market. As long as you are bound by >>HTTP statelessness you might as well use regular web >>stuff, and maybe spice it up with XUL or applets if you >>want to get that 'it looks like a real app' thing going.
How are you bound by http statelessness? You can download all the data you need to run your application at application startup (the whole database, in xml, please!). Or you can go back to the server every time the user does anything. Or, you can take the middle path, and connect to the server when it is appropriate for your application.
The fact that http (a stateless protocol) is the way you connect to the database seems pretty irrelevent to me: it's just a communication protocol.
Sun 11 Apr | John Topley (www.johntopley.com) | 'Are you saying that it's got a poor history for supporting features for the vision impaired or hearing impaired.'
Yes, exactly that.
Sun 11 Apr | Eric Debois | mystified >>
Well, Im no protcoll expert, but as far as I can tell it means that the server can not initiate a transfer to a client even thought they are 'in session'. So, in order to get live data the client needs to continually poll the server which can potentially create a serious bottleneck.
Also, can you lock data retreived for editing and stuff like that?
Sun 11 Apr | mystified | re: XUL, it doesn't work on IE, right (correct me if I'm wrong, I haven't worked with it)? If so it's a non-starter.
re: applets, the fact that swing is the slowest, crappiest UI toolkit ever (and that java is not ubiquitously installed on browsers, and is a big-ass download compared to flash) is the reason we're having this conversation. I'm a java bigot, but even I have given up on SUN ever solving these problems.
Sun 11 Apr | mystified | http://www.metasphere.net/web_tools/18.html
Look Mom, no FCS. An interactive chat room built off of Flash XMLSockets and Perl. Server side perl script mimics Flash Communication Server to update all users of the shared event.
>>Also, can you lock data retreived for editing and stuff like that?
Good question. My impression is that one would have to implement that on the server, not in the flash client.
Sun 11 Apr | Eric Debois | Yes, well, thats kind of my point. You cant make a self contained flash app that operates directly against the DB server. I dont really know how VB is used in general, but back when I was still interested, vb apps were often made to work directly with the backend via ODBC. So, I figure that if they want to win over some of that crowd they will need that kind of functionality.
Sun 11 Apr | . | Flash will make an interesting example for a marketing course one day.
Macromedia wants to expand the market by turning it into a developer too, but Flash's designer background will always handicap it in that market.
Developer tools have to provide power and control to the developer, whereas designer tools treat the user as an idiot. Flash has not entirely escaped from that attitude.
Sun 11 Apr | mystified | Dot
We agree that this will be a great case study.
I disagree with your statement that designer UIs 'treat the user like an idiot'. They're in fact pretty hard to use and far from idiot-proof. They're just oriented towards controlling the look rather than the behaviour of a system.
Sun 11 Apr | Matthew Lock | Plain old HTML and a web server is still compelling for most web applications. The user has a much greater control over a normal web page than flash. The user can go backwards or forwards at will, they can bookmark pages, email links to friends, open different links in different tabs or pages, easy printing and previewing etc.
The other reason is that no search engine can index flash movies, so no one will be able to find them, unless they are embedded in a web page.
Im curious: How do people feel about whether spelling variable and subroutine names properly is important? Programmers often arent noted for their command of the finer points of the English (or whatever) language, and some would undoubtedly argue that one can be a great developer without worrying about such foolishness as the arbitrary correct spelling of a word. On the other hand, Ive occasionally had to modify existing code that had rampant misspellings, and it frankly drives me nuts to see things with names like Indentifier, Defintion, Catagory, and so on.
I could go on about why this annoys me personally and why I think its intolerable coding practice in general, but at this point Im mostly curious to hear what the group here thinks. Is arguing for correct spelling as futile as trying to get people to agree on tabs vs. spaces or vi vs. emacs, or is it reasonable to except a modicum of care here?
Sun 11 Apr | Philo | http://mindprod.com/unmainnaming.html
#3 is there for a reason.
Philo
Sun 11 Apr | Robert Jacobson | Yes, I always except good spelling.
(Sorry to pick on you John... you raise a good point, but the irony was just too delicious.)
Sun 11 Apr | John C. | Drat, I should've known that drinking and posting don't mix! Guess I'll have to stop posting then. ;-)
Sun 11 Apr | Mike Swieton | Mistakes are annoying in comments and such. Mistakes in function names and code can cause bugs very easily. Just spell well, it's not that hard.
Sun 11 Apr | NathanJ |
Developers should always spell variables correctly. I don't think anyone can reasonably argue against it.
Also, I hate abbreviations. Some coders like to use abbreviations, but since everyone abbreviates slightly differently I don't like it in my code.
I once worked on an application that dealt with email. The original authors were French. Most of the comments and variables were english, except 'subject' which they spell 'suject'. I thought it was a typo and merrily started fixing all the typos. So now another thing I don't like is when people mix languages.
Sun 11 Apr | Sam Livingston-Gray | Disclaimer: I'm someone who has a spell-checker built into his brain. That being said, I have yet to be disabused of the idea that anal-retentiveness, which can manifest itself as good spelling, is one of the essential qualities of a good programmer.
(Ugh. Sorry for the inversion there; I've been reading Neal Stephenson. Yes, spelling is important. Paying attention to spelling gets you in the habit of paying attention generally.)
Okay, sure, the compiler (for languages that have them) will tell you when you spell the same token differently in the same scope, but in my own experience, the ability to spell things correctly the first time seems to have a correlation to the ability to spot other coding errors quickly.
Sun 11 Apr | Kyralessa | Careful attention to detail is only called anal-retentiveness by those who are unable to manage it themselves. :)
Sun 11 Apr | H1B holder | You should always spell your code and comments correctly because Indian programmers are learn English by reading your code.
(Thats also why you need very long variables names, you cant learn english on abrv. )
Sun 11 Apr | Christopher Wells | I asked a peer to correct a mispelled class name (and I explained that "diagnoses"is the plural not the singular): he agreed willingly, and ask me to tell him if I noticed any other mistakes.
Sun 11 Apr | GD | I once had to maintain VB code that was written by someone who's english wasn't quite mother tongue... I had to actually keep developing with the misspellings because it became pretty much impossible to track through out the code.
Sun 11 Apr | no name | GD: who's -> whose
Sun 11 Apr | GD | Yeah, well i never said my mother language was english either... :)
Sun 11 Apr | Tayssir John Gabbour | Bad spelling gets baked into APIs. Errors result since we don't often have good tools that make spelling irrelevant; plus it contributes to general feeling the code is creaky.
I like programming in a language that encourages encourages sensibly long names, and even works ok with spaces in variable names.
Sun 11 Apr | Portabella | Good naming is hard, but IMO worthwhile.
I hate abbreviations too, or more correctly, I hate bad and pointless abbreviations: Bad ones are hard to figure out, Pointless ones don't save enough letters to be worth the trouble (why 'Passwd' instead of 'password')?
I also hate long names: CustomerEmailPreferencesManager is clear, but IMO quite clunky, especially when it's in code like this:
CustomerEmailPreferencesManager.getInstance().saveCustomerPreferences();
A good project for someone: write a short and sweet cookbook for good naming. Not just why bad naming sucks (we know that!), but how to improve naming on a project.
Sun 11 Apr | not me |
I find it annoying when programmers can't spell 'cat' when you spot them two letters. Having to decipher their variable and function names is like learning a second language.
But hey...let's be honest...What do you expect from an industry that is largely populated by a bunch of un-educated hacks who were too lazy to get a formal education and jumped into the industry because it was the fastest way to make a buck?
Sun 11 Apr | Stephen Jones | If you all coded in MS Word (with 'smart quotes' turned on à la Kallal) then you wouldn't have any problem.
Sun 11 Apr | GML | I worked with a guy that couldn't spell if his life depended on it. He wrote a number of useful utilities and classes for us, one of which was used so often, and was completely mispelled, that I painstakingly corrected the spelling and changed ALL occurrences of it! Talk about a PITA!
BTW, try using Word to write a story who's lead character is names Teh. It's impossible.
Sun 11 Apr | Dewd | Can't you turn off "auto-correction" for "The" at least ? :-)
Sun 11 Apr | . | I think good communications and spelling should be a basic part of any professional job.
I would be happier if people without those basic competencies were excluded from programming, just as they are from other professional jobs. (In other jobs, this occurs because only well educated people get through the preparation systems, due to constraints on supply.)
Do you do anything to indicate that a table is a lookup table? Ive always prefixed them with lu, but that always seems to raise eyebrows...
Philo
Sat 10 Apr | HeWhoMustBeConfused | Philo, why do you feel the need for distinction in the type of table?
The content of the table is expressed by its name, its role in the database is expressed by its relationships.
Just as meta data in column names is a bad thing, so is overloading the name of ANY object with 'useful' information.
Hmmmm ... does this mean you are an ardent fan of 'Hungarian' notation?
Sat 10 Apr | Philo | Because lookup tables are an strident exception to 'normal' tables - they are generally static, subject to different usage, feed dropdowns and selectors, provide lookup information for tables...
I've had utility code that built stored procedures and lookup code for an entire database. How do you suggest I identify which tables are lookups?
And yes, before VS.Net made everything an object and provided additional identification tools in the IDE, I was a strong supporter of Hungarian notation.
Why is metadata in column names a bad thing? You mean you don't put 'ID' in your primary keys?
Philo
Sat 10 Apr | Elephant | Philo:
After poking around some, it seems the general consensus regarding lookup tables is to name them in relation to their activity.
i.e.
activity_status and activity_type
I've also seen some people label their lookup tables with the 'tlkp' prefix which is even more cryptic. Doesn't seem to be any hard and fast rules though. So long as you're consistent, I don't think it should matter much. And if they're raising eyebrows at your naming conventions, put the heat on them. Ask if they can do better. If they can, great! You just learned a better way. Otherwise, they'll hush up.
Sat 10 Apr | DJ | No I don't put any prefixes on tables - don't think it is that common.
Sat 10 Apr | Egor | I too never prefix any tables. Just give them meaningful names with regard to what they hold.
Speaking of them being distinct, you never know what the future holds. Even for lookup tables. It may be relatively easy to rename a variable after its role changes, but think about renaming a table in a relatively developed application.
Sun 11 Apr | John C. | I've never felt the need to distinguish lookup tables in this fashion, though I doubt I'd scream if someone wanted to do this.
Naming standards in my experience are a little bit like code-formatting standards. It's important to have clarity and some level of agreement on fundamentals like this, but the specific approach adopted probably isn't as important as having *some* reasonable approach.
Sun 11 Apr | HeWhoMustBeConfused | I use ID in the name of a column only if the natural description of that column is 'identifier', or similar word.
Some (contrived) examples:
1. In a table of people identified by Social Security Number, the identifying column is (perhaps) SSN, not ID.
2. In a table of countries identified by ISO-3166 country code, the identifying column is COUNTRY-CODE, or simply CODE.
3. In a table where I choose to use a surrogate key, with no natural assocation with any data type, I would probably use ID as the column name.
I don't really have a problem with your approach to naming tables, it just isn't necessary. It also falls into the common trap of perspective ... the fact that a table is peripheral in your initial usage does not mean that it remains so into the future of the database.
Sun 11 Apr | HeWhoMustBeConfused | Incidentally, Philo, the reference you provided in the topic about variable name spelling some delightful comments about "Hungarian" notation. :)
Sun 11 Apr | Philo | Okay, here's my convention for any table used to contain data for a lookup:
Table name: luStatus
PK: StatusID
Nomenclature: Status
Where 'Status' is some invariant predefined list, like 'Operational, Out of Commission, Under Repair' etc.
It's a relatively fixed list of values which in the UI is probably populated by a drop-down list or radio buttons. In the data table when you see 'StatusID' you know
a) it's a FK
b) it refers to a lookup
c) that lookup is most likely the luStatus table
Yes, that can also be discovered by looking at the reference, but when you see it in code or an SP, it's self-explanatory.
Philo
Sun 11 Apr | Sam Livingston-Gray | I've used "tbl" to prefix tables and "tlk" to prefix lookup tables. It gets a bit annoying, though, to not be able to quickly jump to an item in a tables list by typing its first letter. Having to type the first four or five definitely undermines the usability of those interfaces.
Sun 11 Apr | Kyralessa | I use 'tbl' to prefix data tables and 'List' to prefix lookup tables. Examples from a medical database I did: tblPatients, tblVisits, ListMedications, ListDeliveryTypes...
Why 'List' and not 'lst'? I never thought about it much before, but it was probably because 'lst' was already taken; it's the Hungarian designation for a ListBox control.
My List tables are generally for filling ComboBoxes and keying to fields in other tables filled from ComboBoxes, and usually have only two fields: primary key and string data. Which, in ListMedications would be named KeyMedication and Medication respectively, while in ListDeliveryTypes they'd be KeyDeliveryType and DeliveryType. And so I don't have to waste much time looking up field and table names while coding.
Sun 11 Apr | Lou | I recently became a big fan of not expressly naming tables or lookup tables. Instead I like the idea of a three letter abbreviation for the table name, which is then used to prefix every variable:
JOS_Joel_On_Software (JOS_uid, JOS_id, JOS_member_name...)
When I'm coding I rarely have to expressly declare my table during a join and the code looks a lot cleaner. Of course a good IDE would help there, but I'm an SQL junkie who prefers to code by hand.
Sun 11 Apr | Stephen Jones | Why would you want to do this?
The purpose of naming objects is to distinguish them from other objects of the same name. tblQuestions as opposed to qryQuestions or frmQryquestions (link forms to queries not to tables before anybody asks).
I suppose it might be useful at first glance to be able to see which tables are simple static lists, but I would think that would be offset by the lack of agreement on a standard abbreviation.
Sun 11 Apr | Mark Hoffman |
I don't use any convention for lookup tables. I just try to give them a name that makes it easy for someone else to understand what their purpose is. I don't follow some strict guideline; I just call them what makes sense.
The problem with home-grown naming conventions is that while they may make perfect sense to the author, other programmers might not have a clue as to what they mean. In that sense, they become an obstacle to someone trying to get up to speed with your code.
Sun 11 Apr | Ryan | At my current company, we categorize these tables as 'reference data,' and prefix our tables with REF_. So we have REF_COUNTY, REF_STATE, REF_COUNTRY, etc.
The tricky part is deciding what truly counts as reference data. Generally reference data would include content which is used as read-only during most usage scenarios. But reference data does need to be updated from time to tim. (Hell, there are always new countries popping up in the world, and others disappearing.) As another example, user accounts generally aren't edited very often. Does that make it reference data?
Conclusion: the deliniation is not black and white, but really many shades of gray.
But if that's the case, how do you set the line between which tables are prefixed with 'REF' or 'LU', and which are not?
Sun 11 Apr | deja vu | I've had lengthy arguments about this topic with coworkers.. They seemed to be in favour of naming something a lookup, while I personally prefer to make each table name reflect it's content, rather than it's purpose.
The way I see it is this: if you have an employee table, you don't care if it's being used for a lookup or as a datafeed or for modifications; you just want the name to describe the sort of information it's going to have. So even if employee IDs function as a lookup, calling it lu_employee_id or something would just mean you're second guessing whoever uses the schema and telling them, look, look.. here be lookup tables :)
Having said that, I do occasionally have hashtables function as lookups in my code and I name the variables as 'lookup'_ something. Just not database tables, since I feel they can and should be used anyway you want, not necessarily named according to it's common or intended use.
Sun 11 Apr | Philo | I'm trying to examine the grey areas here - to me, almost all the time a table is a lookup or it's not. If a field has a fairly limited, established list of values that can go in the field, it's a lookup. Lookups indicate descriptors or 'types' of things - priority, color, status, etc. Things where the business organization already has a fairly fixed set of values that are 'legal' for the field.
So you normalize those values into a lookup table and put the index or code into the field.
Maybe couching it as a design question:
An application needs a field where you indicate color. There are sixteen available colors. Colors may be added or removed, but not very often.
How do you design that in the database?
Philo
Sun 11 Apr | Stephen Jones | Let's take the color thing.
The first question is is color an attribute or an entity?
If you are a paint factory then color is going to be an entity. Equally for most uses in a database, because instead of talking about 'red' you are going to be talking about a particular chemical formula of paint.
But what about those parking tickets from Philadelphia that tell you the color of the car you got a ticket on. Here it doesn't matter too much. Maybe you want to let the attendant describe the color the way he wants (do you really want him agonzing over whether a carmine colored car was red or pink?).
Incidentally there is no reason why look-up tables should only be rarely updated. If you allow the user to add to the list in a combo box, you can allow of frequent updates.
This discussion incidentally has little to do with whether to prefix lookup tables separately from other tables in Hungarian. I can see the advantage of it, since even in small databases maybe 90% of the tables are going to be lookup tables so it would be useful distinguish the others at a glance. But the problem of there being no agreed standard probably pushes the scale the other way.
Sun 11 Apr | Philo | 'But what about those parking tickets from Philadelphia that tell you the color of the car you got a ticket on. Here it doesn't matter too much.'
*************
'Hey Harry, what color would you call this car?'
'Beige'
Color: Beche
'Okay Sarge, let's see if we can find our burglar - pull a list of all the brown, tan, and beige cars that got parking tickets on that block on that day.'
'Sorry, Fred, nothing showed up'
I suspect this is closer to the truth than either of us would've guessed. My county recently added a mandatory field on auto registration forms - current color, with a list of two-letter color codes (choose the closest).
One of the reasons for providing picklists is to standardize input for reporting purposes...
Philo
Sun 11 Apr | HeWhoMustBeConfused | Your desire to control/validate the data is good. It is your naming convention that is of little value.
I've been thinking about this discussion in terms of 'could this benefit me?'. So far I can see no practical benefit, for me or any user of my schemas and code, in prefixing a table with some arbitrary 'table type'.
I can't think of any database design or modelling methodology that supports 'types' of table, which is also an indicator that this is of no benefit.
It seems to me that you are taking a short-sighted view of the database design. Perhaps you are used to working with relatively small personal or workgroup applications, from the perspective of a coder rather than a modeller. A data modeller would think about the problem in terms of the data (ie, Colour, or State), not about its usage in one particular application.
Sat 10 Apr | TomA | C'mon... if you want to know something about google...
http://www.google.com/search?q=google+search+appliance+price
Sat 10 Apr | Wayne | According to their website:
'Google Search Appliance pricing starts at $28,000 including two years of support and software updates. More information can be found on the web at http://www.google.com/appliance'
Now for my reaction:
$28,000!?!?!
Sat 10 Apr | Li-fan Chen | I doubt you'll be shock at the price when you realize how expensive it is to lose thousands of hours of work because your workers can't find that perfectly good document they wrote last year and has to be rewritten because they can't find it. Thousands of hours!!! And remember, google would be much more cooler in an intranet than an internet because there are no crazy key word spammers. Waht you look for will actually be found with a "I feel lucky".
Sat 10 Apr | somebody | How would the page rank work on a intranet? pagerank is what makes google goole and not msn search isn't it?
Sun 11 Apr | Sam Livingston-Gray | On a sufficiently large intranet, I'd expect PageRank to work just fine. On smaller ones, the results sets should be small enough to fit on a page or two.
Sun 11 Apr | somebody | I'm sorry but isn't page rank looking what pages link to the page that you are processing now?
So on an intranet, where there are mostly word documents, pdf's powerpoints and applications how is it going to know what is more populair?
IMO as pagerank doesn't work on an intranet, you can just use the indexing service of Windows 2000 and higher with maybe plug ins that understand pdf's, officefiles and that can read the metadata from files.
Sun 11 Apr | Eric Debois | somebody>>
http://www.google.com/appliance/faq.html#3
Sun 11 Apr | Philo | SharePoint!!!
The portal server has an indexing engine and a topic assistant that can provide 'best bets' based on search history.
[disclaimer: I'm a Microsoft employee, but SharePoint is still cool...]
Philo
Sun 11 Apr | www.marktaw.com | > Now for my reaction:
>
> $28,000!?!?!
http://www.sun.com/servers/
====
Midrange Servers
Server consolidation, data warehousing, data mining, OLTP, large databases, ERP
Up to 30 processors
From $54,695.00*
* Starting price based on minimal system configuration. Prices valid in U.S. only.
====
Tell me again that $28k is expensive.
Sun 11 Apr | Prakash S | Philo how much is the licensing for Sharepoint?
The CPAN rocks thread below got me thinking. Acutally Ive thought about this before, but that thread inspired me to acutally write about it.
So why should I learn Ruby/Python/XYZ-scripting-language-of-the day when I already know Perl and I have such a huge resource as CPAN?
The main argument I hear is that Perl is ugly. Well the fact is Perl can be made readable with a little bit of effort so to me that argument is very weak.
Sat 10 Apr | Almost Anonymous | I was a PERL programmer. I used CPAN modules to solve projects. I'm (still) impressed with it's power. But's not just ugly: it's strange, it's weird, it's illogical.
If that bothers you then I recommend looking to Python or Ruby or PHP. Otherwise, stick with PERL.
Sat 10 Apr | snotnose | As AC says, Perl will do anything I need it to do. But making perl clean, easy to read, and easy to understand, is *hard*.
Thay's why my scripts are all Python nowdays.
Sat 10 Apr | Ken Klose | I kinda know PHP, and its cool for system scripting and web apps but I couldn't see a way to do Windowing apps. That's why I started to learn Python. So far I like Python and it has several frameworks for windows UIs that are highly spoken of. How 'bout Perl?
Sat 10 Apr | Wayne | If you need to build a Windows UI, why not just use VB6?
OK, so you're not as *cool* as if you use Python, but I guarantee you'll get things done quicker. I don't care about being cool though.
VB is built for building GUI's. Python et.al. are just generaly scripting languages that happen to have hooks into the Win32 API available to them.
Can you even get a decent WSIWYG designer for Windows forms for those languages? (Please don't tell me that a designer doesn't make your work go faster, that's bull.)
If you have Python/Perl/etc. code that you want to use, why don't you make a standard/com DLL wrapper that the VB app could use?
Sat 10 Apr | Wayne | Furthermore, any Windows form IDE/builder for Python/Perl/etc. won't be half as good as VB's IDE since it would probably be open source and wouldn't have even half the development time invested in it.
Sat 10 Apr | Jonas B. | Perl is indeed the most universal language, imho. But it will never be as clear as an specialised language. If you code object oriented you should seriously check out Ruby. It's an awesome language with a very simple syntax. (Which is why Perl 6 will pick up some stuff from it.) Python didn't appeal to me, as I find it has the same drawbacks as Perl while being slower and without cpan. Other people have other tastes.
Sat 10 Apr | Tom Vu | I do alot of work in perl but the perl motto "there's more than one way to do it" makes for some unreadable code. I think python is easier to grasp, has a better object model, and no references (which can be good or bad).
Sat 10 Apr | $^NAME | > But making perl clean, easy to read, and easy to understand, is *hard*.
Perl lets you express whatever you want: clerity, or tersity. Just because most Perl hackers opt for tersity doesn't mean it's 'hard' to make Perl readable--it's damn easy. Just stay away from $_, use statement modifiers, import symbols by name, etc., etc.
On the subject of statement modifiers, they're one of Perl's best features. You never have write C-style crap like this:
if (!some_func())
return 0;
'if not this is true, return zero'
Perl let's you say exactly what you mean:
return unless (some_Func());
Sat 10 Apr | T. Norman | 'The main argument I hear is that Perl is ugly. Well the fact is Perl can be made readable with a little bit of effort so to me that argument is very weak.'
Do you work alone or with a crew of highly capable programmers who believe in writing readable code? Or do you work with mostly average programmers who have the attitude 'it works, I don't care'? If it's the latter, you'll be better off with something other than Perl.
Yes, one can write ugly code in any language, but some languages encourage ugly code more than others.
Sat 10 Apr | Egor | The 'problem' with Perl is that it puts a lot of responsibility on the programmer. You have grow up professionally to a certain point to be able to take responsibility, and many occasional or hobby programmers never will.
Speaking of reading others code, I get to see *a lot* of code written by others. And it's always very nice for me to know that the system I'm going to fix/modify is written in Perl. A much better chance the original developer knew what he was doing.
Learn Python or PHP to get your feet wet with scripting, then learn Perl to get real work done effeciently. I'm glad I did.
Sat 10 Apr | deja vu | Well, for my view.. Perl was the first scripting language I learnt, and it's probably the one I know best. For any quick hack or anything under 100 lines that I think is cool to do (quick automation, grab something off the web) Perl is my automatic choice.
I don't want code clarity then, I want to finish the job.
I know Python, I like the language.. and I'd probably use it if I had to, but it doesn't have CPAN. For me, the only reason to really use Python is wxPython. Yes, there is a Perl port, but I don't like how Perl integrates wxWindows widgets, Python does it in a much cleaner, intuitive fashion. Almost anything else in Python is replaceable with Perl.
For UI stuff on Windows, I use C#. I have never learnt VB, and I can just barely read Basic code. I played with Delphi a bit, if I really had to, I'd use it too, but C# serves my (admittedly modest) needs in the UI area.
For everything else... there is Java :)
Sat 10 Apr | deja vu | err.. one addendum. For anything webby, I'd consider Perl (mod_perl or CGI), PHP and servlets, depending on many factors. I haven't used PHP outside a webserver yet. Not sure if there is a need for it, for me.
Sat 10 Apr | Likes long walks, short piers | REBOL, folks. REBOL. (look it up)
Sat 10 Apr | fool for python | Use watcha know. Unless there's the slightest chance that someone else will ever have to understand your code. In that case, use watcha know unless it's perl ;-)
Forth rules.
Sun 11 Apr | Andrew Burton | 'So why should I learn Ruby/Python/XYZ-scripting-language-of-the day when I already know Perl and I have such a huge resource as CPAN?'
Speaking as JAPH, I think learning other languages is a good (and required) thing for several reasons:
1. Learning other langauges can show you other ways to do things, and teach you new ways to think. Learning various ways to do things is wjhat Perl is all about.
2. Learning other languages makes you more valuable to an employer (or potential employer). It shows you're ready to learn things, aren't afraid to learn new things, and will even learn new things on your own time.
3. Learning other languages can help you understand Perl things better. Playing with Tkinter opened my eyes to a couple of things with Perl/Tk. Dabbling with Common Lisp taught me a few new ways to look at arrays and hashes.
There's more reasons, but those are my favorites. Just remember, it's easy to say, 'All I need is Perl' today. However, who knows what you'll need a few years from now.
Sun 11 Apr | Matthew Lock | I never bought the argument that perl is ugly. I've yet to see a language which makes building a 2 dimensional array prettier than:
my @matrix = (
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
);
or a language that makes declaring a hash of hashes prettier than this:
my $users = (
matthew => {
age => 29,
country => Australia
},
bob => {
age => 25,
country => UK
}
);
It it would be even prettier if I could use a monospaced font here!
Sun 11 Apr | Matthew Lock | Whoops the above should read my %users = (...
Not enough coffee!
Sun 11 Apr | Matthew Lock | I am also addicted to this perl feature. You can use symbols other than quotes if it's incovenient.
For example instead of:
my $html_string = '';
I can go:
my $html_string = qq{};
Now to me, that makes for a pretty piece of code.
Sun 11 Apr | son of parnas | Mathew, you could also use single quotes so you
wouldn't need to escape the double quotes.
Sun 11 Apr | Dewd | Matthew,
With Ruby:
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
users = {
:matthew => {
:age => 29,
:country => 'Australia'
},
:bob => {
:age => 25,
:country => 'UK'
}
}
The scope of the variables can be changed with @, @@ and $ depending if you want them to belong to the object, class or global variable, respectively.
The hashes can have any object as key. I used 'symbols', as they are internalized strings (only one copy of the string is stored).
The Perl version has a little edge in its hash creation, but I think Ruby's is not bad as well.
Sun 11 Apr | Dewd | With Ruby:
html_string = %q{}
Sun 11 Apr | Giovanni Corriga | No wonder that some say that Ruby is Perl done right.
Sun 11 Apr | Matthew Lock | Alrighty! How about this insert query for pretty:
$dbh->do( qq{
INSERT INTO users ( name, address, phone, email )
VALUES( ?, ?, ?, ? )
}, undef,
$name, $address, $phone, $email
);
AND perl's DBI will autoescape the variables to be substituted so there's no chance of an sql-injection attack.
For the record I have nothing against Ruby. I'm just trying to demonstrate that the freedom Larry Wall gave with the perl syntax means you can make some extremely pretty looking programs.
Scenario:
------------
The protected mode is Causeway 32Bit DOS-Extended environment. There is call _go32_dpmi_simulate_fcall which helps to execute real mode FAR calls from protected mode.
Sample code:
----------------
@example
_go32_dpmi_registers r;
r.x.ax = 47;
r.x.cs = some_segment;
r.x.ip = some_offset;
r.x.ss = r.x.sp = 0;
_go32_dpmi_simulate_fcall(&r);
printf(returns %d\n, r.x.ax);
@end example
CS and IP indicates address of the call. The CPU registers are loaded from the structure located by r.
The Problem:
----------------
What we have to do if we need to pass parameters for the FAR call ( which is given in CS:IP ) ?
A solution for this will be well appreciated.
References:
---------------
http://www.devoresoftware.com/cwwman/page_48.htm
http://eprom.myetang.com/intr/rb-5800.htm
Thanks!
Sat 10 Apr | Christopher Wells | Normally when you 'pass parameters' you pass them on the stack. These ...
r.x.ss = r.x.sp = 0;
... imply to me that you have no control over what's on the stack of the function you are calling.
If you have a small number of parameters to pass, you could try passing them in registers (e.g. r.x.bx, r.x.cx, r.x.dx, r.x.di, r.x.si).
Another possibility might be to write your parameter values into a global variable: a structure at some address in real-mode memory.
Disclaimer: I don't know _go32_dpmi_simulate_fcall and I didn't understand the References you gave.
Sat 10 Apr | Patrik | By reading up on the DPMI stuff you supplied, you could try the following:
Use GetMemDos to allocate a number of paragraphs you need; paragraphs are 16 byte chunks if memory serves correctly.
Here are the docs for that call
AX = FF21h
BX = number of paragraphs to allocate
Return:CF clear if successful
AX = real-mode segment of allocated block
DX = initial selector for block
CF set on error
If you set up say 64 paragraphs (1K) of conventional memory to be used as your real-mode call stack and pass that in as SS:SP of the DPMI real mode call structure.
By setting the SP to 0, DPMI allocates a stack; but try to pass your own allocated memory in the SS:SP struct.
Sat 10 Apr | Patrik | I dont know how much parameter data you need to send, your post doesn't say. However by moving the parameter data to the real mode memory and set SP accordingly, you should get a usable stack frame.
I think SP gets decremented; it works in a top down fashion if Im not misstaken, so you have to move your parameter data in the correct order and set SP to the highest address for POP to work correctly in your real mode routine.
Sat 10 Apr | Patrik | Sorry...
It should read...*set SP to the lowest address*
Who said assembly programming is hard? :)
Sun 11 Apr | Cherian Nair | Thanks a lot for the responses. I got something to try.
Sun 11 Apr | Cherian Nair | Number of arguements varies.
Borland just notified its CodeWright customers in an e-mail that the software has been discontinued. Existing support contracts will be serviced but there will be no new development. Nevertheless, they still _sell_ CodeWright licences... huh?
This comes as a bit of a surprise since they had produced a new CodeWright for .NET version soon after acquiring the software from Premia. Guess its getting harder and harder to compete against Visual Studio on one hand and the myriad of free/cheap editors on the other.
Anyway, this was one of my favorite programmers editors and I thought others might be interested since many here are weird enough to become emotionally attached to their tools. ;)
Sat 10 Apr | Knowledge Seeker | Probably cutting-down their competition?
Sat 10 Apr | HeWhoMustBeConfused | Perhaps Borland is to become the SCO of the developer tools market. Stop making anything of value, get rid of everyone but the lawyers, and start pushing writs out the door.
Dreams aside, it is really sad to see the death of a once great software company, especially when there is STILL a market for good, low-cost, easy to use, development tools.
Sat 10 Apr | Fred | Hopefully, they'll do like they did with Interbase, and release the code as open source instead of just killing it, so at least someone can try to keep developing it.
Sat 10 Apr | Tony Chang | Codewriht has been by favorite editor. i guess the fact it had cot sold to Borland escaped me.
It is quite obvious that, since CodeWright was much superior to the comparatively crappy Borland editor, Borland bought it with the only intention of destroying the product and creating a monopoly for themselves.
The Borland of old does not exist. All its key members have left to microsoft. Let's show our support for the Borland of old by boycotting Delphi and using exclusively microsoft products.
Sun 11 Apr | Tim Sullivan | >Borland bought it with the only intention of destroying the product and creating a monopoly for themselves.>
Ah, yes, the unstoppable Borland juggernaut with their monopoly on editors, printing money faster than anyone can count it.
Please.
I suspect that the reality was that the market for a 'better' editor was slim to none, and Borland bought it for reasons other than to sell it.
Sun 11 Apr | no name | 'it is really sad to see the death of a once great software company'
Companies cannot be great. Great products come from great people. When those people go, so goes every shred of the greatness.
Sun 11 Apr | Dobie | Borland: eliminating editors, one at a time. Y'all remember they bought Brief, then discontinued that (to make room for CodeWright perhaps, but IIRC there was a good separation in time). I believe Visual SlickEdit is a small company, might they be next?
Why is it that programmed _text_ content are not copiable *everywhere*? Notable exeptions include Message Boxes, (albeit pre-2K and even then a clumsy key combination. XP seems to support a simple ^C), Window Titles and Button Labels. When something can be put in, it should be able to take it out as well. Right?
Sat 10 Apr | Julian | Here's the case that annoys me the most. After a file search in Windows Explorer, you can't copy the name of the directory containing one of the files.
Sat 10 Apr | Tony Chang | I agree it should all be copiable.
Sat 10 Apr | Eponymous | There are many utilities that add 'copy path' onto the Windows Explorer context menu. Google 'context menu copy path' or 'right click copy path' for them.
I'd post a link to the one I use but I can't for the life of me find it.
Sun 11 Apr | one meeeellion dollars! | Borland Delphi's dialog boxes allows you to Copy it to clipboard.
Score one for Delphi.
Sun 11 Apr | Roose | It works for a lot (all) windows dialog boxes:
Try Start->Run->Enter '\\a', and then hit Ctrl-C, then you get this when you paste it into a text editor:
---------------------------
\\a
---------------------------
\\a
The network path was not found.
---------------------------
OK
---------------------------
[I posted this in Ask Joel, and decided to post it here to get more feedback. If there are any finance nerds out there, read on and let me know what you think.]
There are two problems with expensing stock options:
(1) The expense will vary over time as the stock price changes
(2) The value of an option may have nothing to do with the actual cost to shareholders.
Lets look at an example using Ciscos 2003 stock price:
Imagine that in January of 2003, when Cisco was trading around $15, Cisco granted 100 options to various employees with each option having a strike price of $30. Lets say that these options expire in five years, that is these are January 2008 options, and they vest in two years. Therefore, the employees would only be able to exercise between January 2005 and January 2008.
Using a Black-Scholes calculator and entering in some educated guesses on volatility and interest rates, we get back a value for each option of around $4. Cool. Cisco then subtracts $600 from its balance sheet as an options expense.
So, heres where Cisco stands in January 2003:
stock price: $15
options granted: 100 (Jan 2008) with a strike price of $30
options expense: $4 x 100 = $400
In January 2003, Cisco is showing an expense of $400 that hasnt actually occurred. Cisco has not spent $400. They have merely granted their employees some options that may or may not eventually be exercised that were valued at $400.
Now, lets fast forward to January 2004:
Cisco has rocketed to $25. We run our Black-Scholes calculation again and find that the employee options are now valued at around $9. Hooollly Jesus! Does Cisco have to subtract another $500 from their balance sheet just because their stock price has gone up? That seems insane. And what if Ciscos stock price had went to $10 or $5. They could add back income to their balance sheet.
All of this balance sheet chicanery would occur without any money changing hands. And, if Ciscos stock price does not rise above $30 before January 2008, all of the options expense would have to be added back to the balance sheet because no actual expense would ever have occurred.
Its also important to note that in-the-money options that dont correspond to actual shares are included in the diluted earnings per share calculation. Therefore, the expense would also need to be backed out once Cisco rises above $30, otherwise the expense would both subtract from the e (earnings) and add to the p (price) in the P/E. It would count as a double-whammy against the corporation when it should at most be a single-whammy.
That pretty much covers point (1) above. Now, lets examine point (2).
Why should investors even care about the value of employee stock options? Answer, they dont, or at least they shouldnt. Warren Buffett likes to argue that options should be expensed because the corporation is essentially giving away a benefit without showing an expense on the balance sheet.
It is true that options are a benefit and they may end up diluting the shareholder base, but it is also true that the options may end up costing shareholders nothing. But notice, that in any event, the option will never actually cost the company money. If the option is exercised, it will merely result in the issuance of more shares. The result is a dilution of earnings, not an actual expense.
For example, a company with $10 in earnings and 100 shares priced at $1 each has a P/E of 10. If this company then grants employees 10 options that are exercised, there will be 110 shares outstanding giving the company a P/E of 110/10 = 11. This is the only way that options will affect a company. There will never be an actual expense; there will just be some additional number of shares issued which results in diluted earnings and a higher P/E.
Because there is no expense involved, what we need is not the Black-Scholes option valuing formula, but a formula that gives us a likely number of shares outstanding given the current number of out-of-the-money options outstanding using the present and historical stock prices (in-the monies are already included on a 1-for-1 basis).
Lets see if we can come up with some type of formula that will do this for us. What would this formula need to do? Well, it needs to give us a percentage factor that we can multiple by the number of out-of-the-money options to give us a pro-rated number of shares outstanding. If the formula spits out 50%, this would mean that there is a 50% chance that the options will eventually be exercised in the money. So, if there were 100 out-of-the-monies outstanding, we would multiply by 50%, giving us 50 shares that we should add to the outstanding shareholder base.
This formula would be very similar to the Black-Scholes formula, but instead of giving us an option value, it would give us a likelihood that the option would get to the money before it expires.
I dont know much about the Black-Sholes model, so I dont know how to convert it to the type of formula I want, so for my purposes, Ill just use the option value as computed by Black-Scholes over the stock price to give me a factor that I will use in an example below.
Well use Cisco again, and assume 1000 shares outstanding.
In January 2003 we have:
stock price: $15
shares outstanding: 1000
options granted: 100 (Jan 2008) with a strike price of $30
options expense: $4 x 100 = $400
factor: 4/15 = 0.27
So, to get the pro-rated shares outstanding, we do the following:
1000 + (0.27)(100) = 1027.
Now, instead of a magical $400 expense on the balance sheet, we have increased the number of shares outstanding based on the likelihood that the outstanding options will eventually be exercised in-the-money. This keeps unnecessary, confusing expenses off the balance sheet and puts the cost of the options where it may eventually end up: expanding the number of shares outstanding.
Now, lets look at January 2004:
stock price: $25
shares outstanding: 1000
options granted: 100 (Jan 2008) with a strike price of $30
options expense: $9 x 100 = $900
factor: 9/25 = 0.36
pro-rated shares outstanding: 1000 + (0.36)(100) = 1036
If Cisco had earnings of $100 in January 2003 and January 2004, we would get a diluted P/E of 1027/100 = 10.27 in January 2003 and a diluted P/E of 10.36 in 2004. Under this scenario, options would still be expensed, but the expense would show up where it belongs, in the P/E and in the diluted shareholder base, not on the balance sheet or income statement.
Sound reasonable?
Sat 10 Apr | grunt | Yaaaaaaaawwnnnnnnn!!!!!!!!
Have you seen the title of this forum? It says 'Fog Creek Software'... !!*SOFTWARE*!!
I couldn't care any less about stock options or expensing them...
I am suprised and disappointed Joel replied at all.
This forum is getting out of hand.
Sat 10 Apr | no name | I posted this in the other forum too. It is actually an interesting topic for software developers because, according to James DeLong, it's a useful way to reward intellectual property and the people who create it.
He says the move to expense options is actually politically motivated, and essentially represents an attack on staff.
http://cei.org/gencon/025,03055.cfm
In case you're wondering, I have no connection with DeLong. It's just that whenever I see allegations of political motivation in scenarios involving lots of money, I take an interest.
Sat 10 Apr | Philo | Grunt, a quick lesson in forum lifetimes...
NewForum opens, and fairly quickly gains a crowd of people posting questions, learning on-topic stuff, etc.
As NewForum starts to mature, the initial rush of people settle downand enjoy helping new members of the community.
NewForum reaches its plateau. Now one of two things will happen:
1) The 'old hands' will stick around to socialize, have conversations, ping new ideas off each other, etc. A nice side-effect is that they're also there to help out newbies and occasional visitors.
2) Someone (either the moderator, or the group itself) will generate some manner of excluding the horrific 'off topic discussions.' Because these people simply cannot manage a delete key (and by the way, this argument was dubious on mailing lists and CompuServe. When it's on a web based forum you really have zero excuse), they don't want anyone talking about anything except what they want to read.
Yes, read. Oddly enough, I've found that with a few exceptions, often the loudest voices about signal/noise are people who don't post.
Anyway, they put a forum gestapo in place. Net result - since the 'old hands' can't talk about what they want to talk about, and have no interest in the FAQ's (which are all that are now on topic), they leave. So you end up with a boring tech assist forum full of churn. It might be an okay place to go to ask 'how do I connect my web page to a database' but you'll rarely get a full response to 'what is the best way to design my application.'
I tend to favor the former, and have seen a lot of good communities destroyed by the latter. If you don't want to read about stock options, here's a thought - don't click on that link.
Philo
Sat 10 Apr | Anon-y-mous Cow-ard | BTW, I've got this '99 Ford Taurus thats making a klunking noise when you turn left. You guys have any idea whats causing this.
TIA,
AC
Sat 10 Apr | Simon Lucy | Physics.
Sat 10 Apr | grunt | Philo,
I have the right to express my thoughts and feelings as much as you and the poster of this thread. I do not like or want to be on the sidelines as you suggested if I don't like something.
As a matter of fact, what you suggested is the very problem of this country (USA in this case). People say they dislike (or hate) this and that, but when time comes to *show* it (i.e. vote), there is noone around to say anything. That kinda crowd is doomed and deserves to get whatever it is they are complaining about.
Sat 10 Apr | Philo | Grunt, where did I say you couldn't express your opinion? You said what you thought, I disagreed and explained why.
Philo
Sat 10 Apr | no name | > I've got this '99 Ford Taurus thats making a klunking noise when you turn left. You guys have any idea whats causing this.
Yes. Try examing the rubber sleeves over the suspension arm. On our car, it became cut by road debris, letting water and dirt into the steering arm.
Sun 11 Apr | Will | Back on topic...
I'm not enough of a finance nerd to comment on the details of your post, but companies need some type of cost for options. While options may have been trumpeted as a way to spread the wealth among the staff, they've been used excessively as part of CEO compensation.
While not the only reason, stock options have been a significant incentive for aggressive managing of earnings (and manipulation of stock price) in some of the worst financial scandals of the last few years. It's clear to me that the ability to issue options without any cost has led to their overuse.
On the other hand, the downside of expensing stock options occurs in private companies without any liquid market for stock. Their, options are 'if we go public' bets designed to encourage employees to grow and reward them when they are successful. (although the notion that an IPO=success can be rather dubious). Creating an artificial cost for stock options assigns a real value for paper money that may just not make sense.
Sun 11 Apr | John C. | I don't necessarily agree that expensing stock options is a good idea, or that Black-Scholes is the right way to value options even if so. (Frankly I don't understand the issue well enough, and I do worry about the effect it would have on startup companies.) But I do want to comment on what seem to me to be mistaken assumptions in the original post.
'All of this balance sheet chicanery would occur without any money changing hands.'
That's kinda how accrual accounting works under normal circumstances anyway. If you sell a product in July but your customer doesn't pay you until January, you book the revenue in July, even though you didn't get any cash until the following year. Or take depreciation, where you spend a bunch of money on an asset but spread the expense over a number of years for accounting purposes.
'For example, a company with $10 in earnings and 100 shares priced at $1 each has a P/E of 10. If this company then grants employees 10 options that are exercised, there will be 110 shares outstanding giving the company a P/E of 110/10 = 11. This is the only way that options will affect a company. There will never be an actual expense; there will just be some additional number of shares issued which results in diluted earnings and a higher P/E.'
All things being equal, you'd expect the issuance of 10% more stock to reduce the stock price by about 10%. Otherwise companies would have discovered the financial equivalent of a perpetual-motion machine: We're worth $1 billion today, but if we do a 2:1 stock split, we'll suddenly be worth $2 billion! Sorry, when you double the amount of stock outstanding, you halve the price per share. P/E is a derived measure that stays constant because both price and earnings have changed by the same factor.
And while dilution may not cost the 'company' anything, it certainly costs the *shareholders*, because their stakes are now worth less than they were.
Sun 11 Apr | Ankur | Of course they have to keep updating the expense account as the stock price changes and the Black-Scholes equation changes.
It's called 'Mark-to-Market', and it's what a company has to do for their liquid securities anyway.
Sun 11 Apr | Dino | 'That's kinda how accrual accounting works under normal circumstances anyway...'
Kind of, but not really. Booking revenue before the company actually receives it and depreciation both involve transactions that have already occurred. The company has either contracted to receive payment or has bought something and is spreading out the cost.
Option grants only involve potential transactions and the company will not actually spend any money if the option is exercised.
'Sorry, when you double the amount of stock outstanding, you halve the price per share. P/E is a derived measure that stays constant because both price and earnings have changed by the same factor.'
Option grants do not involve the actual issuance of shares. Therefore, the granting of an option will not affect the supply and demand for the stock in the market. That is why the 'expense' of an option grant is best measured by a derived measure like P/E. Granting an option (especially an out-of-the-money option) is not the same as issuing shares. Thus, an equation that computes the 'expected' number of shares outstanding given the current stock price and stock price history that could be used to compute an 'expected' P/E would best measure the hit shareholders might take if the options were ever exercised.
'It's called 'Mark-to-Market', and it's what a company has to do for their liquid securities anyway. '
Securities owned by a company have an easily measured value based on their current price in the market. Stock options (which may never be exercised) cannot be easily valued, and in any event will end up costing the company nothing, so there should not be an expense for them on the balance sheet.
Watching The Apprentice last night reminded me of one of my pet peeves... What do people think about the value of loyalty in workplace? What exactly is loyalty?
I had a boss who flipped out when a guy left our startup and joined a competitor. He kept going off about wheres the loyalty? I kept thinking, if the guy worked for me, I why would I want him to stay if he thought hed be better off elsewhere?
Ive always thought that loyalty is evil and causes companies to collapse. Its one thing to stick with the company thats going through hard times because you believe in the products and vision, and therefore think its in your benefit to tough it out. But it seems to me, the company would not only be wrong, but foolish to expect the employees to be loyal. Respect must be earned, and continued respect should be earned continuously.
And yet, it keeps coming up, most recently when The Donald said that he was looking for loyal people. Why would someone strive to fill the organization with ass-kissers incapable of analyzing and adequatly reacting to the internal problems? Wouldnt that render the company incapable of resolving those problems?
Fri 09 Apr | Sassy | Employment is a business transaction.
- I work, you pay.
- no work, no pay.
- no pay, no work.
Loyalty is nice, but you can't buy it.
Fri 09 Apr | genius | I don't even think it's nice. I think it does more harm than good.
Fri 09 Apr | Cristian Cheran | This usage of the concept of 'loyalty' from that business manager is weak and decidedly twisted.
If he wanted loyalty maybe he should have offered better conditions in the first place (better workplace, better payment, etc) instead of waiting the apparently-not-enslaved-enough to blindly bear with him through his bad business decisions(?)
Fri 09 Apr | you're fired! | Loyalty to one's employer went out with the 80's.
Fri 09 Apr | Justin Johnson | Loyalty, as something that companies are *owed*, is a joke concept used to guilt employees into working unpaid overtime.
Loyalty, as something earned by good employees and good managers through respect, hard work, and fair reward, still exists, but rarely.
Fri 09 Apr | Bored Bystander | I disagree with one point you make, Genius. I see where you're going with this and I mostly agree, but I don't see culture of loyalty itself as the problem. The problem, as always, is how the imperative to loyalty is used or misused. Just as some love is 'wrong' - sick, jealous, twisted or manipulative.
The most common behavior that I've seen, especially in technology with its huge training and learning curve burdens, is the following. A company will constantly preach loyalty as a virtue among its employees without providing rewards proportionate to the loyalty expected. It happens in many different contexts.
A concrete example (used to happen pretty often years ago, I don't know if it still does) is the company that 'scrapes' someone off the street with minimal professional technology background, and allows them to come up to speed on the job. Generally, it's really small, underfunded tech companies doing the scraping who bet that they can acquire really cheap programmers (for instance) by simply underwriting a greenhorns' mistakes for awhile.
The problem with this practice is that such companies will sometimes find a latent prodigy who takes off, but they will not advance the employee's pay in accordance with his skill and expertise. IE, the person comes in at tech support wages, and they are expected to stay at a COLA wage progress despite the fact that their value has exploded. Right or wrong, such a person will generally find a better situation. Then, the next person who interviews for a development position with such a company will have to suffer through the bag of wind owner bitching about 'backstabbing disloyal programmers' who bolt once they learn something on company time.
Programmers are generally really 'smart' people and as such, are persecuted in the business world just like the smartest kid in the class. Being very talented (and earning the big bucks once in a while) is often regarded by the often stupid drudges in non technical career tracks as 'unseemly' and deserving punishment. All the while business usually has very, very little loyalty toward technology workers.
When I hear a lot of 'loyalty' talk, I mentally translate: the business using the term is probably a shithole and doesn't pay very well (except for the owners.) So persuasion and guilt are used instead of market pay.
Fri 09 Apr | son of parnas | Loyalty == serfdom
Fri 09 Apr | Alex.ro | >> the business using the term is probably a shithole
Bored, you are very right.
I used to work for a place that, as Peopleware puts it, you'd have to be 'sick' to work for.
Basically, every day at the office was a realization: 'yep, I need to leave this place, fast.'
Genius -- don't know what you startup is like, but a lot of places are dumps and people are *aching* to stick it to the boss by leaving.
Better pay wouldn't help really (or it would have to be hugely better). Just make it a place you'd be 'out of your mind to leave.'
Fri 09 Apr | Clay Whipkey | I would never hire someone who would say that loyalty is a bygone concept. I do agree that to use the word 'loyalty' when it is completed unmerited is ridiculous. Of course, in the case explained by Genius, if the bossman could understand why it was unmerited, the guy may not have wanted to leave in the first place.
In my startup, we recognize that this is a golden opportunity to create the near perfect environment. Everything we wish our current jobs were. We will treat each other with respect, and in turn we will expect loyalty. If one of us decides to leave because it is obviously *right* for their family, that would not be disloyalty. If one of us decided to leave, joining a direct competitor, and did so only for a bigger paycheck (we are all splitting revenues equally here), that would certainly be disloyal. If I were looking to hire someone and they disagreed with that definition, I wouldn't hire them. Period.
So maybe the cynicism towards loyalty applies to the evil corporate bosses, but don't go making that your creed, because you may alienate the best opportunities.
Fri 09 Apr | the capitalist |
Don't confuse loyalty with ethics.
An employer doesn't owe an employee anything beyond a paycheck. (Spare me all the OSHA crap for now)
An employee doesn't owe an employer anything beyond the work for the paycheck.
It works better this way. If a company needs to shed a factory because it's unprofitable, then it should do so and release those workers to be better used in the marketplace.
Likewise, if an employee finds a better job then they should leave. This doesn't mean that they screw their employer on the way out.
Your're free to leave at a moment's notice and they are free to fire you on a moment's notice. I prefer it that way.
Fri 09 Apr | Bored Bystander | I'm a bit jaded on this subject. I have heard the loudest cries of 'foul' on employee loyalty from companies that created work environments that had some horribly distorted notion of 'good place to work'. Also, the companies that preach loyalty the most fervently tend to be the places that deserve it least. It's kind of a law of physics. The companies that deserve loyalty never seem to have to make a point of it.
I've seen someone bolt from a position at a small SW vendor (not a programmer, BTW) who was on the edge of a nervous breakdown from the job's duties. The owners piously acted like the person stabbed them in the back. And have seen the equivalent at a few other places, too.
Anymore, I am like a cop: I just don't believe only one party's account of a situation. And I own an s-corp and could be in the position of a boss someday, so I do tend to see the owner and the employee's sides at the same time...
Fri 09 Apr | Kyralessa | Since I just got laid off (from a university, no less) I'm probably not the guy to ask about loyalty right now.
But since you ask, I'd say the boss is asking the right question, but he's asking the wrong person. Instead of asking others why they're not loyal, he should be asking himself why his leadership doesn't inspire loyalty. As others have pointed out, loyalty doesn't come automatically in _any_ setting, let alone in a business setting.
Sat 10 Apr | a | I've done the loyalty thing twice, going beyond the call, and then declining a better offer to avoid leaving the company in the lurch.
Both cases I got shafted shortly after, more or less due to management changes.
For me now, loyalty is cheap. I look for signatures on documents, up-front payments and ownership of my work.
Sat 10 Apr | genius | First, I want to clear up some interesting misconceptions (existence of which I found quite interesting in itself). I don't work for the company anymore, but when I was there, it was a very good experience for me, and I did like my boss (who was the CEO of the startup). The other guy, the one who left, became more and more disgruntled with the company; I'm not in a position to say how much of it was because of the company, and how much was personal. So, I don't really have a problem with other things there, I just found it curious that the CEO took the guy's leaving so personally.
The people's responses so far have been in line with what I was thinking. I can somehow see some logic where a company might object to a person going to work for a competitor, but I think it's a matter of contractual obligations rather than morals: if there's a noncompete clause, obviously something like that is unacceptable, and there are ways to legally preclude it; otherwise, it's implicitly ok...
I guess what I'm mostly wondering is, is there a better definition of 'loyalty' other than 'expecting less than reasonable under market conditions?'
Sat 10 Apr | KayJay |
I guess what I'm mostly wondering is, is there a better definition of 'loyalty' other than 'expecting less than reasonable under market conditions?'
'Holding a non-trivial value for another's support to you'. Loyalty and Gratitude are mutually inclusive.
Sat 10 Apr | T. Norman | I think the loyalty Trump was referring to was more of a 'professional loyalty' than personal loyalty.
It's not about staying with the company for better or worse. After all, Trump himself fires lots of people -- where's the loyalty there, right?
I think it's more about being able to trust someone to do their job while they're employed by you, and trust them to keep their word. Like the opposite of Omarosa. They also won't do or say things to make you look bad, or undermine the company's interests for their attempt at personal gain. They may leave to join the competition, but they won't divulge secrets to the competition.
Still, it does seem like many of Trump's execs have worked for him for a very long time. Even Carolyn at 35 years old has been with him for 10 years. So maybe he does do things to foster a personal loyalty with them, since once he has their personal loyalty the professional loyalty will follow naturally.
Sat 10 Apr | """ | Definition of Loyalty: Something a company expects from you but doesn't offer in return.
I am loyal to myself and my spouse. I would have no qualms about going to work for my company's competitor because I know they would have no qualms about firing me if it suited their interests. In fact, I've seen companies merge with their competitors and fire 1/2 of each staff. Happens all the time, just read the business section.
I've heard about companies that were loyal to their employees, but I've never actual worked in one. Or been around one.
If a company offered me loyalty I would probably reciprocate, but I ain't holding my breath.
Sat 10 Apr | www.marktaw.com | If I were an employer and hiring, in addition to 'smart and get things done' I would want someone who genuinely seemed enthusiastic (implies he gets things done) and seemed loyal. Why? Because I could squeeze more work out of them. Being an employer is all about getting your employees to do more for less, and if playing on their emotions is what it takes, then so be it.
Or maybe I'm cynical.
Sat 10 Apr | Bored Bystander | Mark, I think that's really how it works in the business world. Or at least in the SW development world.
I don't think you're being unduly cynical, that's just keeping it real...
I think in general terms of 'marketing', making the sale in any context is all about dispelling fears and making things seem 'better' than they really are. IE: as a one person S corporation, I find it useful to use the editorial 'we' in my marketing materials. It's the truth in the sense that I can find and pull in subcontractors on demand. And in the future it MAY be the literal truth.
So in marketing-speak, a company that is hiring candidates will present jobs as 'career positions' and will speak glibly of loyalty, while the actual result (in the best case) is going to depend upon whether the company can make its numbers as it expects to. And the company will find it most useful to select candidates that embrace that flavor of forward looking vision.
This is basically also saying that if you've seen many gross exceptions to this rule such that you aren't 'buying it' anymore, companies will pick up on it and so you will not be a desirable candidate even if you have the skills and track record. That has happened to me over the years.
Sat 10 Apr | Alex.ro | >> Or maybe I'm cynical.
You'd be disrupting the kwan.
Sat 10 Apr | Alex.ro | By that I mean, you'll be building up negative energy that will eventually crumble the company.
Gee, that actually happens everywhere.
Sat 10 Apr | Tony Chang | > If one of us decided to leave, joining a direct competitor, and did so only for a bigger paycheck (we are all splitting revenues equally here), that would certainly be disloyal.
Clay you are such a freaking hypocrite. You know that you would sell out any of your employees for five dollars. If it were any other way, you would give them all substantial equity in the company instead of talking BS about loyalty in an attempt to manipulate the poor saps befyore you screw them over.
Sat 10 Apr | no name | '''You know that you would sell out any of your employees for five dollars'''
Nonsense. Clay would only do that for 5 dollars per share, not per employee.
Sat 10 Apr | Tony Chang | Both loyalty and respect are things that are EARNED, not given freely.
A tip: Beware greatly at anyone who demands loyalty or respect without having earned it. 100% of the time, these are con artists who will shaft you the first chance they get.
Sun 11 Apr | not me | ' 100% of the time, these are con artists who will shaft you the first chance they get. '
Beware of people who quote statistics. 98% of the time, they are just making it up.
Sun 11 Apr | Mr Curiousity | Different perspective on loyalty :
http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=131678
Databases satisfy a general program: that of working with lists.
There is another way of working with lists that is remarkably easy and fast to develop with: the Python way.
In Python, lists are very powerful and dynamic.
So for solving the working with data problem, we have 2 powerful solutions:
1. databases - better at persisting data
2. powerful lists (containers) - better at manipulating data, at programming with data
So, I think that in order to solve the famous impedance mismatch we have to somehow merge the two models.
Some people will propose to invent a new language to do that.
Other people want to just add a class library.
I think that, in order to get a powerful unified model, both the language and the database need to change.
There is a lot of work to be done in order to achieve this great unified model.
I dont think this will happen soon.
Businesses are looking for proven solutions, so they dont want to change the database.
If a big player like Oracle and Microsoft takes a strong initiative in that direction, it may happen.
However, there doesnt seem to be such an initiative or the interest to take such an initiative, in spite of the fact that such a unified model would make programming significantly more efficient.
All they are interested in is creating glue solutions.
For example I consider that ADO .NET is yet another wrapper for the database, which is a lot harder to program with than with something like Pythons lists.
So.. the impedance mismatch, the gap between programming and databases, is never really solved once and for all.
:-(
Fri 09 Apr | Just me (Sir to you) | 'Databases satisfy a general program: that of working with lists'
You mean you are using cursors for everything?
Fri 09 Apr | Matthew Lock | I wouldn't say databases were lists. They are more like arrays of hashes, were the record is the array, and the fields are the hashes.
Fri 09 Apr | David Roper | Not only does Python have very powerful list processing, but also native support for tuples which (at least to my reading) seem very close conceptually to tuples in Codd's relational model.
Because of this I thought at one time about using Python as a data query language, but hit a mental wall on scalability. There are persistence frameworks for Python which save tuples and lists transparently, but the whole shebang gets retrieved to memory for processing meaning that you really don't want to be working with multi-megabyte, let alone gigabyte datasets. A strong reason for using an RDBMS, however, is exactly to avoid this problem by reducing the amount of data retrieved into the application by pre-selecting only the records of interest.
What seemed to be needed was either an RDBMS that included a Python VM so that you could dispatch Python (?bytecode) to the RDBMS instead of SQL, or perhaps a Python to SQL translator embedded into the Python interpretor (which was well beyond my poor skills!).
Fri 09 Apr | MX | I consider that, if you use programming language terms, and not database terms, a table is simply a list of structs (or Pascal records).
It's very plain and simple:
table = list of structs
A database contains several tables.
My wish is to:
- use a table or a query result as easily as I use a list in Python
- use SQL on my lists as easily as I use it on an SQL Server database
- use the same data types when doing general programming and when accessing the database
Fri 09 Apr | MX | 'Databases satisfy a general problem: that of working with lists'
> You mean you are using cursors for everything?
No, I don't mean that. Please see my message immediately above.
Fri 09 Apr | Andrew Hurst | --
I wouldn't say databases were lists. They are more like arrays of hashes, were the record is the array, and the fields are the hashes.
--
Thats exactly how I represent them in my perl code. I have functions I use that when called with a sql statement and some bind variables return a list of hashes, and I just use that in my code.
Works like a charm. The only downside is saving back to the database, because I need to roll the inserts/updates by hand. I haven't looked into ways to make the hashses self-aware enough to be able to just pass a modified hash to some other wrapper functions.
Fri 09 Apr | John C. | Isn't relational database theory based on sets (unordered), rather than lists (ordered)? Not that I think it's that important to the topic at hand, I'm just feeling a little pedantic this morning.
Andrew, you might want to check out Class::DBI if you haven't already. It provides a very simple yet quite powerful mechanism for instantiating Perl classes out of database tables. That module and the fact that Perl has intrinsic support for NULLs (because any scalar can be undef) goes a long way toward solving the impedance-mismatch issue for me. I feel like I get to concentrate on my logic instead of on annoying housekeeping.
Fri 09 Apr | Andrew Hurst | John, Thanks for the pointer.
Unfortunately most of what I do nowadays is cgi, and without much OO support at that. Mostly just lots of code 'require'd in and run procedurally. No need for anything complex.
Though this project has been dragging a little lately, maybe I could spruce it up with some OO...
In related news, I think one of the quickest ways to unmaintainable code is 'boring' problems. People keep thinking of ways to solve the problem better and keep it interesting. Thus too many layers of abstractions.
Fri 09 Apr | Nick | >>table = list of structs
How about,
table = b-tree of structs
?
Fri 09 Apr | Andrew Hurst | A table would be a b-tree of structs depending on the indexing. I would think that that structure wouldn't be too useful in a program, because you wouldn't want the whole talbe in your program at once. More likely the database could do any sorting or bulk manipulation of the rows.
In your program (generally) you're more likely to only want a subset of the data at a time. Web pages, local programs, etc with more than a few hundred rows are probably information overload.
Fri 09 Apr | Ori Berger | A relational table is, by definition, unordered.
Many uses do require order, which is why the 'order by' construct was introduced into SQL. However, it's a kludge at best; Try to, e.g., sort a list of entries by a 'time_of_day' field, and query the standard deviation of time between subsequent entries.
APL (and K) have a concept that is sometime called 'arrables' (array + table), that embraces order and makes it part of the table definition; It makes many things considerably simpler.
Fri 09 Apr | MSHack | While MX makes a solid philosophical argument, I believe they missed it with:
'there doesn't seem to be such an initiative or the interest to take such an initiative, in spite of the fact that such a unified model would make programming significantly more efficient'
There isn't an initiative because the benefit of more efficient programming can be captured in a multitude of manners (off-shoring for one). The thought that it would result in _significant_ improvement is nearly impossible to prove without one and the cost of creating one on the possibility is a mismanagement of the cost/benefit model most DB companies are willing to accept.
Of course, with OSS, it is possible one could build it into something like MySQL and prove it. The question is are you _that_ certain?
Sat 10 Apr | Tom H | 'Of course, with OSS, it is possible one could build it into something like MySQL and prove it'
http://gadfly.sourceforge.net/gadfly.html
Sun 11 Apr | Chris Kennedy | DBMS != persistent storage.
DBMS = Database *Management* System. That is, all the things you need to manage the database store have already been built in and optimized. People who treat Databases that are under the management of a DBMS as simple persistent storage are re-implementing code that has already been done for them and wasting more time than by simply learning how to use a database management system correctly.
It does not matter what DBMS system you are using, you must know how to use it effectively. If you wish to use an SQL DBMS (note: not a true Relational Database Management System - SQL allows duplicates! to speak nothing of allowing nulls ), then please learn to use all of it's functions. Most of the complaints I have seen relating to usage of SQL DBMS can be solved by using Stored Procedures. Anyone who is using adhoc SQL queries in their program code is asking for trouble. SQL belongs _inside_ your SQL DBMS managed database!
Stored procedures will handle updates, selects, transactions, multi-table updates, etc. and can be treated similar to function calls in your program code (not to mention being extremely more efficient). If you can't write stored procedures, either learn or find/hire someone who can. Programmers should stay out of the database at all times, and only use provided interfaces (stored procedures) to access or update data.
If you aren't going to use the features of a DBMS, then why the hell did you aquire one?
NOTE: above rant does not apply to people who are not using a DBMS, but then the question 'Why aren't you using a DBMS?' comes to mind...
What would you recommend for the following:
For an Intranet site I need to be able to do full text retrieval (Google style) on a collection of HTML reports. The size of the collection is in the few GB order. The Intranet platform is W2k3-IIS 6.0-.NET-SQL Server 2000. I am currently leaning towards looking into SQL Servers full text facilities (have not used those before).
I can store the relevant text portions in SQL Server or just on the file system, whatever. Since the reports are structured, simple regex operations can take care of any HTML artifacts etc., so you can think of the HTML files as really just text files if needed.
Does thie SS2K full text sound like a good approach? What would you do?
Fri 09 Apr | Geert-Jan Thomas | This is one I heard of recently:
Store the full texts in one table
Split up the texts into words an put the words into a second table.
Create a third table linking texts to words used in the texts.
This enables you to search on words used in a certain text.
Fri 09 Apr | Matthew Lock | It's suprisingly hard to write a good regex to strip HTML. 3 common problems are tags like this:
P tag
and when the tag is spilt across multiple lines like this:
My
Website
and the use of HTML comments
http://www.4guysfromrolla.com/webtech/073000-1.shtml
http://www.aota.net/forums/printthread.php?threadid=12016
Fri 09 Apr | Just me (Sir to you) | Matthew,
this is not for general HTML, it is for a specific type of HTML reports and luck has it these report files are rather regex friendly.
Fri 09 Apr | Gwyn | > Split up the texts into words an put the words into a second table.
I quite like this approach. IBM's Infoman product performed extremely well because they adopted this (quite a lot of years ago). Much bigger database (but only about twice the size or so) and slower inserts but very quick queries,
I don't, however, know what SQL Server offers on this front in terms of full text searching... or how good it is.
My only addition would be a dictionary to exclude indexing the common words like 'the,at,in,on,to,a,I,be,my' etc.
Fri 09 Apr | Name withheld out of cowardice | I don't think I have enough information to answer your question but making a few assumptions (including that you want high performance) here is what I would do.
(Assuming these are lots of normal sized files not a few gigabyte files) I would store them in the file system and set up a hierarchy such that each folder contained only a few files on average and the floder location of a given file could be deduced easily from its name.
I would index each word in BerkeleyDb. The keys would be the words and the values would indicate the filename and position the word begins within the file.
Fri 09 Apr | Just me (Sir to you) | Files are around 50k each.
Given that no one seems to jump out and shout: SS2K full-text is a nightmare, I think I will try it out.
What it promises over the DIY suggestions is:
- Catalog management and background indexing
- proximity queries: A near B
- Inflectional forms of verbs and nouns (drives, drove, driving, and driven also match queries for 'drive')
It has more features like multilanguage stuff, ranking and indexing different file types (.doc, .xls etc.), but those do not apply to my case.
It also looks like it comes with its own buildin HTML indexer, so that saves me a few lines of code.
Of course what is appealing in the basic DIY cases is the simplicity. SS2K full-text still feels a bit 'black box' to me, but at least it does not have the 'voodoo' feel of SS2K English Query.
Fri 09 Apr | MX | MySQL also has full-text indexing and full-text searches.
Fri 09 Apr | Just me (Sir to you) | MX,
does it have any advantages over the SS2K full-text?
Fri 09 Apr | Pakter | I think most people missed the point.
The OP is planning to use SQL Server 2000 to store and index full text.
I've used it. It is suitable, though slower than specialized tools. In theory, you should be able to test it easily (Check tool TEXTCOPY.)
But a few GB of text can be a big number of files, and you'll probably need plenty of RAM.
Fri 09 Apr | Egor | Guys suggesting to 'store words in another table': this is essentially how *every* modern full-text search subsystem works, MS SQL built-in or not. The 'table of words' is just handled behind the scenes, and is called inverted index. If a DBMS can't do that, it said not to have full-text search capability ('LIKE' isn't full-text, as it operates on strings, not texts (words)).
Just me, if your version of MS SQL supports full-text search (some cheap versions seem not to), just go ahead and use it - you will hardly invent anything better. MySQL has this facility included by default, and it's fairly versatile fast.
Fri 09 Apr | Just me (Sir to you) | Pakter,
that is correct. I expect load on the system to be really low. New reports are pulled in overnight, and I have the luxury of sequencing the retrievals (setup with persitent query profiles and email delivery of reports). The DBMS machine has currently only 512Mb installed. I'll see how it fares. Thanks for the textcopy lead. Google turned up some interesting stuff on that.
Fri 09 Apr | Just me (Sir to you) | Thanls Egor,
My SQL Server setup does have full-text capability.
Fri 09 Apr | Simon Lucy | SQL Server's 'Full text' retrieval is external to the database itself, which has always led me to believe that it doesn't have an inverted index.
In any event it is pretty trivial to create a word index table, its something I routinely add to every system I do that handles text.
Fri 09 Apr | Egor | Simon Lucy, I wonder what line of thought could lead you to believe that system is unlikely to have inverted index because of being an add-on? How else in the world could a fulltext search engine function?
FYI, fulltext engines that use RDBMS to store inverted indexes are *times* slower on any substatial datasets. Few ones that have half-decent performance use sophisticated multi-table structures to work around this.
Sat 10 Apr | Jagger.NET | Lucene.NET - http://lucenedotnet.com - Lucene.Net is a high-performance, full-featured text search engine.
Sun 11 Apr | Koz | I've not used lucene.net. But the original Java version is amazing. Have a look at this post
http://madbean.com/blog/66/
Im doing this one or my tablet, so forgive any typos due to the text recognition
LOL! Mrs.Philo probably nailed the reason the relatives were on the jet. Amy requested not to go alone.
-Job interviews?
And Nick going on about this is what its about?
Lou! The what is your weakness question rears its ugly head.
The MTV editing sucks
-definitely agreed with the comments about Nick. Interesting observations about Amy.
Robin has said You can go in now every week -Does 16 lines count for your SAG card if its over 16 weeks?
Interesting juxtaposition of the Miss USA pageant with the Apprentice-two elimination tournaments
Amy nails Nick, and not in a good way.
Nick doesnt have a poker face, and his finally gone. Its just as well Troy went last week-he wouldnt have made it this week.
And poof, Amy is gone, without those two magic words.
A 13 week accelerated MBA?? I dont think so...
When you come back tomorrow youve going to face your toughest task yet Making Omarosa work?
Okay, I am thoroughly disappointed with this show-obviously they taped the interviews and some executive decided it was too boring for US audiences, so we get that fast cut nonsense and two people fired inside twenty minutes.
Shades of Survivor-the defeated return
What the hell? Both leaders throw away everything they learned and dont ride with their teams. (tho perhaps the Donald ordered them to)
Good-Bills delegating well, but Nick seems to be feeling a bit of sour grapes. And its nice to see Omerosa got to sit down for dinner. (And damn it, nothing is going to interrupt dinner!) Incidentally, of those Omarosa supporters - still think shes a good choice and was just portrayed poorly?
Oh how very sweet to see Omarosa get caught with her knickers down so very blatantly. By the way, this woman is *exactly* what my boss at Camel was like. Heidi called it right that Kwame was avoiding conflict - Ill bet Bill wouldve booted someone who did that without a second thought.
This is also an interesting place to muse how Troy wouldve done - would he have had the chutzpah to confront someone who screwed up like that?
Ah... Bills utter complete undoing - What Leslie thinks doesnt matter Uh-huh. Until the next time Leslie has to make a decision and youre not around. Not a good attitude for a leader.
Oh my god - Omarosa skipped dinner? More importantly, there seems to be no organization in this group whatsoever. Of course, Omarosa is the root of the problem so she needs to STFU. (and why are they flailing? Didnt Jessicas manager just say something to the effect that shes not coming in until later?)
And in return for her screwing up the transportation arrangements, Kwame puts Omarosa in charge of the TALENT? That alone puts him in last place...
To be continued next week... :-)
Philo
Thu 08 Apr | Gerald | I liked how Kwame asked Mark, the guy who runs the Taj Mahal, what makes a successful event and he basically responded that it was all about taking care of the talent. So what does Kwame do, he puts Omarosa in charge of the talent, WTF?
This feels like the Seinfeld episode where you do the opposite of what your instincts tell you.
Thu 08 Apr | Omarossa defender | I have more sympathy for Omarossa after this episode. Dianne's repeated snaffus ('We lost the band, we lost Jessica Simpson, we lost her luggage') smelled like the producers were deliberetly creating fake problems just to watch the candidates deal with them, and Omarossa caught the brunt of that.
At one point, Kwame said something like 'I'm used to working with competent people. I would never hire....Omarossa...She was blah blah blah' -- you could definetely hear the editing skip in his voiceover when he said her name. For all we know, maybe he actually said 'I would never hire Diane' and the producers just cut his words!
The thing at dinner where she got a work-related phone call and then supposedly wouldn't tell anyone what it was about was so ridiculous that there _must_ be more to the story than we were shown. Call her a b*tch if you want, but even a b*tch would have simply said 'That call was Diane with a problem, but I took care of it'. The only explanation for Omarossa refusing to answer a simple question (twice!) must be that the producers edited out what the question actually was. Maybe somebody made some inappropraite joke or something and she refused to discuss it, but I guarantee you there was more going on than we were shown.
The editing tonight was clearly done to make her look bad.
Thu 08 Apr | in a nutshell | '''The editing tonight was clearly done to make her look bad'''
Easiest job in the world! Where do I set up?
Thu 08 Apr | Keisha Jackson | to Omarossa defender:
Wake up baby. Didn't we all see the big 'O' lie and say that she didn't actually speak to Diane -- it was just messages? How do you defend that? The woman is a first-class LIAR and is probably intentionally screwing up to get back at Kwame. I think she has a real problem with lying -- I mean real problem that needs psychiatric help. She's scary.
Thu 08 Apr | Dennis Forbes | Omarosa's behaviour, if it was as it appeared (I'll allow the doubt that it was amazingly misrepresentative editing) was bordering on sociopathic. She is an absolute saboteur, and if it doesn't come out that she was tasked with being trouble for Kwame to test his leadership (in which case she'll come out smelling of roses), then she has absolutely destroyed any credibility she will have in business. Based upon that showing tonight I wouldn't trust her scooping dog shit.
'Did you scoop it?'
'Oh yes.'
'It's right there. I can see it on the ground!'
'What? No this is all a misunderstanding. Did you say scoop? I thought you said poop it'.
Thu 08 Apr | www.marktaw.com | 1st half
Bill is GOOD, putting words into his interviewer's mouth so obviously. 'I'm too much of a perfectionist, it's a flaw.' Once he said that his INTERVIEWER was defending him. 'Being a perfectionist is a good thing, it means you keep striving.'
He also has no problem with interrupting you, with an 'I respectfully disagree,' or, 'Wait, I had a very good education.' Out of all the candidates, he's the only one who really talks with authority. Everyone else seems to be waiting to be judged. Basically, he talked as an equal with his interviewers - yes he's being evaluated, but no his ego doesn't need you to give him approval.
Kwame has an annoying habit of ending every sentance as if he's about to say something else. He doesn't always do it, but I saw it a lot, and it bugs me. Not the way a leader should speak, though it does encourage the people around him to talk.
Nick is 'the ultimate salesman' and little more. Amy really fell apart this episode. I can see her running a business that deals mostly with retail customers, but the interviewer was right - when someone on a job construction site said 'Missy, you don't know what you're talking about,' she'll fall apart.
2nd half
Bill put together a much better team than Kwame.
Amy, Katrina, Nick.
Troy, Omarosa, Heidi
Katrina was a surprising choice for him given his issues with her before. Maybe he was hoping Kwame would get Nick so the romance he engineered wouldn't get in the way? Kwame had to choose Troy... why Omarosa? The game may have been one or lost right there.
Bill's issue with the manager at the golf course reflects exactly his issue with Katrina, even what he said, 'get out of my way, I know what I'm doing,' is basically exactly what he said about Katrina. He does need to work on his interpersonal skills, he forgets that he's doing business with the golf course, even if it is owned by the same parent company.
Bill seems to have issues with 'competence.' Everyone has to pass his measure of competent/incompetent, and it's either you're on the team, or get out of my way. The woman treated him like he was incompetent (his words, I believe), and suddenly he was incapable of working his magic with her.
Omarosa, what can I say. Whatever her personal drama, she insists on dragging everyone into it and getting it to the point where she can say 'He/She's, incompetent/hates black people/is trying to defend himeslf from a lawsuit, etc.'
Classic moments: lying about what the phone call was about & telling Kwame she'd take care of everything and then telling Troy Kwame needs to be more hands on.
Kwame 'I'm used to dealing with competent people' Jackson does need to grow a pair. He was on the phone with that woman arranging the transportation, but didn't investigate deeply into what was going on - he could've gotten to the root of the problem right there or re-delegated the task, but continued to let Omarosa 'handle' it. Using 'I can't fire her because of the rules of the game' isn't a good excuse, it's not about the game, it's about the task, and letting someone he knows to be incompetent handle the task is not good. The manager of Trump Taj Mahal outlined what a successful project would be - the talent feels taken care of, and he isn't doing it.
His comment about projecting confidence even while things are falling apart really seems to me to get to the root of his personality. He wants to be the 'quiet confident' guy who lets everyone else do the work for him, and doesn't care when things are falling apart while he's being the confident guy.
In fact, Kwame v. Bill is a really interesting line up. They're exact opposites. Bill does everything himself and 'get out of my way' and Kwame does nothing. Everyone on Bill's team is 'incompetent' and everyone on Kwame's team is 'competent.' Each to the point, it seems, of personal character flaw, where they can't see the bigger picture.
Thu 08 Apr | Keisha Jackson | Did anybody catch Donald Trump on Saturday Night Live saying 'you can't trust anything Omarossa says' during one of the skits?
Think that means she's a pathological liar -- or that she was tasked to lie? My bet is on the former. She has to be the center of attention so in addition to being patholigical liar, she's has a serious personality disorder. Who would hire that viper?
Thu 08 Apr | Brad Wilson | And yet nobody mentions the most important moment of the evening: SPIDER MAN 2 LOOKS AMAZING!
:-D
All I have to say is: who needs the finale? It's a lock. Bill's the winner. I was a little surprised Trump chose Kwame over Amy, but not much.
Fri 09 Apr | NoelleTrumbull | How could anyone be surprised that 'the Donald' fired Amy? She was the last female left, in a game where the women stomped on the men in the first episodes. Then, 'Mr-Perpetually-Bad-Hair-Day' lets the groups switch around, and suddenly, it's the ghost town of women.
Then, Trump decides to let Amy's one bad day of interviewing completely outweigh the fact that her track record of proven performance is light years ahead of anyone else on the show. I mean, really, what was the point of having these weekly competitions at all, if the Don can arbitrarily fire anyone?
No- I'm not surprised that the Don fired Amy...I'm surprised she lasted as long as she did. Say what you want, but Mr. Trump is SEXIST.
By the way, Omarosa gives a bad name to hard-working women EVERYWHERE. That witch needs some serious medication.
Fri 09 Apr | T. Norman | Seems like she came back for no other reason but to inflict vengeance. Vengeance on the team members she had conflicts with and on Trump for firing her.
More on Odorosa Manigoat-Stalwart:
http://abclocal.go.com/kabc/ontv/040804_ENT_trump_oprah.html
Fri 09 Apr | Lou | The single most surprising thing to me was during the round of four questioning by Trump - Bill was offered a free shot at anyone at the table (Nick had already been called out by Trump and Kwame) - and he chose to go after Nick instead of whomever he thought was his biggest competition. That was poor decision making. It's always easy to lay it on thicker to the person who's already getting dumped on, but it often isn't the right decision.
I do like how Bill would say, 'I respectfully disagree - I ....' He offered relatively coherent responses to most questions and wasn't afraid to make things into a conversation instead of the more typical one way discussion. It became obvious (to me at least) during the inteviews who had been prepared for tough interviews and who had not. Bill, through his experiences running his own businesses had developed a method of handling them, and clearly Harvard help prepare Kwame. Nick and Amy suffered for a lack of coherency in their interviews. Fortunately for them that is something which can be worked on.
Even though we didn't see much of the interviews it was very tellling to see the first couple of seconds and the faces the candidates made. I can't imagine going through a full day of interviews that tough (and I've had a half day that tough) - exhausting in every way I'm sure, and then to go and face Donald and try to be coherent, wow.
And Philo, did we ever really doubt that the question would come up, it's too easy (note that the executive assistant brought it up - and very interesting that Trump used her as an interviewer and that she was as persistent as she was during the interview). Excellent episode, I just wish we had seen more of the interviews.
Fri 09 Apr | Nick | I wasn't able to chime in on last week's firing of Troy, so I want to get this off my chest. Nobody mentioned that Trump's got a Wharton MBA. No way is a Wharton guy going to hire a high school grad to run one of his companies. I just can't see it. Knowing now that this week was interviews, I'd say Trump was just doing a little HR pre-screening.
When Omarosa took the dinner-time phone, I immediately thought that she'd been planted as a saboteur. Add to that Trump's lead-in to the show about employee loyalty and the 'few things' that Katrina added to the garage, and I'm turning into a full blown conspiracy theorist [maybe I could get a job at Air America?].
Did anyone catch Carolyn's look at the piles of boxes? Isn't that the golf course she runs? It doesn't project a very professional image, and I'm damn sure she would have found alternate arrangements if she were running the tournament.
As for Kwame, apparently Harvard B-School doesn't teach the difference between composed and catatonic. That team sure likes to sit around and eat a lot. If I were him I'd be living with a phone in my hand. All the good executives I've known were very hands-on at least one level below them. They may not be performing the activities, but they always knew the status of them.
Worse question response has got to go to Nick when asked what he'd do on the first day of the job. His answer 'I'd come in with a vision' reminded me of oh so many bungee bosses I've seen. At least the interviewer called his $#&% on it.
Fri 09 Apr | Kiki | There are all kinds of people who make up our world, and inevitably our work world. This show is great because of it's realistic drama that we can all relate to. I've met 'Omorosa, Nick, Amy, and the others (including what one may consider either good or bad characters/personalities.)' in the different workplaces I have worked, as anyone out there must have at some point.
There are many types of situations that we have or we are facing at our actual workplaces and we can vent through this show to try and understand our situation better and maybe find a way to work it out. Inevitably, it is about how we choose to react to the person/situation that we find annoying/negative/displeasing.
In my experience, it all depends on how much you want to keep your job. Those who annoy you may be there forever, and the boss will not let them go, for whatever reason, even if they know of some of the friction or situations they have caused. If you love your job, will you leave it because of someone who annoys you? Yes, even if they are blatantly lying, sleeping on the job, not taking ownership of a responsibility that comes spontaneously (that demands immediate attention, no matter what, where, when it is), or even jeopardizes a project? Only you can answer that question for yourself and the reason why you choose to stay or leave.
Occasionally, you think you have a 'win', and that 'annoying person' gets fired, and then someone else comes in sometimes 2X as 'bad'! Or you face the same 'challenge' at your next place of employment. The challenge is really about how you decide to deal with it within your own mind. So, I love the mix of characters just because it's real! Can you imagine how boring this show would be if all the candidates were perfect-if that could be! We would have nothing to talk/write about!
That said, the one interview question asked of Amy, 'Having worked with the company for 12 weeks what is your impression of its structure?” Can't believe she could not actually answer the question, and spoke to whatever she had on her mind rather than focusing on what the question was?!?! (Definitely being catty here.) OK She was nervous, but if she at least answered the question-even with a ridiculous answer regarding the structure-it would have made more sense to me.
Anyhow, Trump did not build those beautiful, elaborate properties haphazardly. There are very intentional foundations, and attention to details that cannot be overlooked. My point being, that he has said he has some hits and some misses when hiring, indeed in his businesses as well. But he comes out on top, because he is perceptive, thorough, and competent and he watches out for every detail because it benefits him when all is said and done.
Remember how he checks his properties starting at 7:00am. Though he may not scrutinize everything, those workers know that he is coming to see their work, so Trump can count on the fact that these people will perform. I'm sure he will notice someone is not doing their job by noticing if some detail is unattended.
He knows whom he wants to work for him and he is not going to let ridiculous actions go unnoticed. However, he is compassionate with a high regard for others in general (Unless you burn him! -'An eye for an eye.'-From his new book.). Also, he is a fabulous diplomat to consistently praise everyone, including in interviews-Oprah- etc, and to give constructive criticism (Enveloped in a very loving package of kind words. PS. With praising before and after.). So I don’t think he is unaware of what is going on behind the scene. He probably watches all the film, we don’t get to see, with those snacks he likes to buy, snuggled up to his girlfriend before bedtime.
Kwame and Bill are excellent final candidates for many reasons. It will be interesting to see how they win. Bringing in their former fellow colleagues was excellent because this happens all the time. Getting a promotion within your company structure and your once equals, 'pals' even, and not, are now your employees.
Bill is an overall good leader and I think that his team members will not do anything to make themselves look “bad”-Trump is still watching-not to mention potential employers etc. The only thing that could be detrimental is himself-he’s ego might get in the way of understanding protocol.
I wonder how Troy is perceived. Either as loyal or disloyal? Taking Kwame to the boardroom with him, to me, indicates disloyalty on several levels. Even though he seems eager to please will he be disloyal again on some level? As Trump said as the final 4 entered the boardroom tonight-‘Once someone is disloyal to you, they will be disloyal to you again.’ Otherwise, Kwame started off with a strong sense of accomplishment by setting up his strategy ASAP.
Can’t wait to find out the final outcome!
Fri 09 Apr | you're fired! | While I'd never hire Omarosa to work for me, I'd certainly let her suck my cock. :-)
Fri 09 Apr | Sexit | Editing is everything--just because we saw clips of Bill remaining calm in the interviews and Amy scatter-brained doesn't necessarily mean Bill was more prepared. It just means the producers wanted us to have that impression.
And as for Omarossa--I agree with Defender that she was set up. Wasn't it an awfully huge coincedence that there were cameras in Diane's office ready to record her side of every phone call with Omarossa? Of course not! Obviously, those phone calls from Diane were staged, and I'm not sure that Omarossa was actually lying when she said she didn't talk to Diane at the restaurant. Here's how it *might* have gone down:
Omarossa gets a personal call (that wasn't from Diane) in the restaurant, and leaves to take it. While gone, she also checks her voice mail and sees a message from Diane, so she calls back and leaves a voice mail, then returns to the table. Since the call was personal, that's why she told Troy the call was none of his business. Then the producers told Diane to lie about talking to Omarossa in order to make drama.
Is that how it actually happened? Who knows? But for those who say 'We saw Omarossa lying' -- no we didn't. We saw what the producers wanted us to see, and the truth could have been almost anything.
Fri 09 Apr | Just me (Sir to you) | How much of The Apprentice is faked?
from:
http://www.dylangreene.com/blog.asp?blogID=427
'Some interesting Apprentice info:
The board room is on the same floor as their swank apartment.
The elevators outside the board room are fake and just lead to another hallway.
The young woman who rented the apartment Troy's team renovated already obtained a lease before the show decided to even renovate that apartment. She received $2000 in free furniture her involvement, and knew that no matter what rent she negotiated for, she'd be paying her original rent.
That apartment was empty because the previous occupant jumped out the window a month earlier.'
Fri 09 Apr | Noname | I wouldn't trust Omarosa to suck without biting.
Fri 09 Apr | in a nutshell | Trump doesn't have a Wharton MBA, he has a bachelor's degree from Wharton business school (the undergrad college).
Fri 09 Apr | in a nutshell | Remember Trump's spiel about 'loyalty' at the beginning? Omarosa and Nick were told to be saboteurs.
Fri 09 Apr | T. Norman | Kwame's problem is that he's apparently only dealt with good, competent people throughout his career. Hence the trusting, hands-off approach and his inability to deal with a screw-up like Omarosa.
Fri 09 Apr | Dennis Forbes | 'Obviously, those phone calls from Diane were staged, and I'm not sure that Omarossa was actually lying when she said she didn't talk to Diane at the restaurant'
For sure the whole 'lost band' situation is just a manufactured event (that everyone but them is in on), all as some sort of management test. As you mentioned this is why they had cameras with Diane to be ready for this drama.
Having said that, I do think that Omarosa did indeed interactively speak with her -- the footage is of Omarosa interactively responding to Diane's comments with appropriate (to snakes) responses that only made sense in that context. I think it's quite certain that she did speak to Diane. Couple that with her bizarro world comment back at the table: 'I don't want to go there!'
I'm still giving her the benefit of the doubt and presuming that she's 'The Mole', and she'll be smiling and being congratulated with helping test Kwame, but given prior incidents there is the possibility that she is a totally off the wall conventional liability.
BTW: Happy Easter!
Fri 09 Apr | apw | The best thing that came out of this show is the spread in FHM "The Women of 'The Apprentice'"
Fri 09 Apr | www.marktaw.com | To all you conspiracy theorists out there, I'd like to remind you of my 'standard disclaimer' regarding this show. We can't know everything that happens, or how editing may have affected our perception. We can only comment on what we've actually seen. To try to go 'behind' what you can see to justify your opinions seems a little obsessive.
It's apparent to me that Omarosa's constant re-spinning of everything that happens actually plays in to your beliefs that there is some sort of greater evil at work in the world. She's a master of telling you something that's just within the realm of plausibility, and outrageous enough to be true.
Insofar as I recall, she had a conversation when she walked away from the table 'I'm at dinner / I'm sorry I can't hear you' And my favorite 'I'm in the middle of ... can you just take care of it for me?' In the middle of what Omarosa?
Is this really the same crowd who told me a few months ago that they wouldn't fall for sales techniques designed to short-circuit your logical mind?
I've been to Trump Tower often on lunch breaks. I even saw 'The Donald' there once with his Miss USA beauty queen at a press conference, which he held right in front of that waterfall. It's a great space and I love the waterfull (something about water in motion, especially in such a concrete city), but I don't think it would attract tourists just for that. There's two outdoor waterfalls - one of them extremely beautiful - within a few blocks of Trump Tower, and Central Park as well. Maybe the waterfall attracts people to the jewelry store or foreign currency exchange, but certainly Nike Town does well on it's own.
I wouldn't mind eating dinner at that restaurant though, maybe not as romantic as some spots I know, but once you've exhausted those, this is a good choice.
It's not a very big building, maybe 10 stories, lots of retail space, and some offices space on the higher floors. As you saw with the waterfall, it's also very open on the inside for the first 6 or so stories, limiting the actual office space & retail to what fits on the perimiter of the building. The apartment & boardroom are probably one of the few floors that are above the atrium & are complete floors.
It would make sense to me that 'the boardroom' is a set. Do you *ever* have meetings that way, where it's 3 v. 16 chairs, and someone comes out of an almost secret door in the back of the room? It's staged that way for dramatic effect. If Trump kept one of his business contacts waiting in a room like this only to appear out of nowhere, he'd be laughed at, and the other person would leave.
It also makes sense to me that if you're going to set a stage like this, you'd do it on 1 floor, rather than going through the trouble of renovating space on different floors, though it does make me wonder how well his business is doing that he can spare an entire floor on 57th street in Manhattan. It reminds me of an article about Trump Plaza on Columbus Circle - a huge hotel that overlooks Central Park - the day it opened it had 1 guest.
Kwame has more problems than only having dealt with competent people. First of all, if he worked at Goldman Sachs, I can *gaurantee* you he's dealt with incompetent people. Goldman is large enough to be beaurocratic, and any beaurocratic organization is going to be filled with people who just want to carve out their own little power niche. He must have dealt with one of them at one time or another.
Secondly, Kwame, like Troy, just wants to be liked. I'm not sure what it is about him, but he's afraid of getting in to the details. He's great when it comes to the pep talks and early planning, but once things start rolling, it's all about covering up his own feelings of inadequacy.
Good point about Trump being involved in the construction on a daily basis. He's not micromanaging, but he's involved. The scenes with him walking around the construction site asking about the quality of workmanship and what some things would end up being like were reminiscent to me of the scenes of Bill walking around Planet Hollywood making sure everything got done.
I was surprised at just how sharp & blunt his interviewers were, but then I realized, Trump is the same way, and like attracts like. This is definately a case of 'A's hiring A's.' He's not hiring people who make him feel good, these people will call him out on anything he does. Though George and Carolyn still seem to be subservient to him, or maybe it's a trained negotiating tactic that prevents you from playing one of his henchmen against him. Don't give the people in the room with you any power, and you won't try to win them over or play them off each other.
My guess is, however George and Carolyn were chosen because their jobs aren't as intensive as the others, and they can take a month and a half of only working a few days a week.
Last week Trump already told Kwame he 'never stepped up.' The long and short of it is, we all know he won't get hired.
Regarding Nick & Amy. I would bet money at this point that Bill could win Amy away from Nick, and if the show had a few more weeks left in it, he might try exactly that to make them both completely ineffective around him. In the boardroom Amy does nothing but insult Nick and praise Bill.
Bill seems largely a good student of character, and has little trouble saying what needs to be said to make the other party react a certain way. Trump seems like this too. Nick would like to be, but is too emotionally involved in anything that gets said. Involved, that is, in trying to make himeslf look good.
Or let me put it another way. Nick & Amy acted largely independantly in the businesses they were involved in prevoiusly. Amy worked for a 'high flying dot com' business, and Nick is a salesman. Bill started 'several' successful businesses and Kwame works at Goldman Sachs.
Nick & Amy come from backgrounds (and may have intentionally put themselves there) where they are not constantly being judged by supervisors. Nick's boss probably doesn't care how he does his job as long as the bottom line is there, and Nick probably devours sales books & tapes in his car. They make him feel good, and he can depend on them to make him feel good. Real humans are less predictable.
With Amy, the same thing. My guess is at the dotcom the didn't care what she did as long as she got the job done. She's used to being creative and not working in a beaurocratic environment. She knows how to get things done, but is not used to being judged on how she does them.
Kwame is under constant scrutiny & has to defend his job position at all times in things like weekly staff meetings and semi annual reviews. This is why he interviews well. He went to Harvard to be trained to be this way, his professors probably also subject him to the same scrutiny, and he handles it well.
Bill has a certain self-confidence (well, maybe egomania is more like it), and as I've mentioned before, if he's started, run, and sold, a successful business, is probably the candidate with the least actual need for this job, which allows him to be more candid than the rest - if he doesn't get it, he maintains the same comfortable lifestyle, while the rest are looking for a job.
Finally, I'd like to repeat something I said a few weeks ago. One of the things I like about this show is not that these people are examples of others we have to deal with at work - obstacles to getting our job done, but that in the real world, work gets done in spite of your own personal foibles, and nobody is free from them. These probably are the best of the 215,000 people who applied, and as Trump says, they'll all be successful in their chosen fields.
I seriously doubt I or anyone else in this forum would perform much better on this show. So the most important lesson here is to take your lumps and get the job done.
Or: Which Apprenticea are You?
http://quizilla.com/users/lexclark/quizzes/Which%20Apprentice%20are%20You
I took the quiz and I'm most like Amy. Go figure.
SPOILERS (rot 13 encoded*)
Ba Ovyy'f crefbany jrofvgr uggc://jjj.ovyyenapvp.pbz/OvyyEnapvp/ (rnpu ncceragvpr frrzf gb unir n jrofvgr gb nqiregvfr gurz nf GI crefbanyvgvrf abj), vg fnlf Ovyy nyfb 'qrirybcf erny rfgngr naq fcrnxf ng havirefvgvrf naq ohfvarffrf nebhaq gur pbhagel.' Erny rfgngr uhu?
* http://www.marktaw.com/technology/Rot13EncoderDecoder.html
Fri 09 Apr | Name withheld out of cowardice | I thought Omarosa was okay early on. Assuming no editing tricks (big assumption) I no longer think so. The lost band thing is clearly manufactured but if Kwame really knew what he was doing, he would gone himself to meet her.
Prediction: Bill wins and the job involves construction projects back home in Chicago.
Fri 09 Apr | Dennis Forbes | Offtopic but previously mentioned - http://www.apple.com/trailers/sony_pictures/spider-man_2/trailer/
Fri 09 Apr | www.marktaw.com | UVYNEVBHF! Naq ab pbagnpg vasb ba gung cntr rvgure. Ubj nz V fhccbfrq gb uver uvz vs V pna'g pbagnpg uvz?
Fri 09 Apr | | Looks like those rumors that Kwame wins are close to the truth.
http://www.foxnews.com/story/0,2933,115476,00.html
Fri 09 Apr | | 'Based on Omarosa Manigault-Stallworth's two-year stint in the Clinton administration, it's no surprise that she got fired on NBC's 'The Apprentice,' reports the new edition of People magazine. She was 'banished' from four jobs during her run in government, the mag says. '
http://www.washingtonpost.com/wp-dyn/articles/A59297-2004Apr7.html
Fri 09 Apr | | You people are worse than a bunch of women and their soaps!!!!!!!!!!!!
Fri 09 Apr | Apprentice Insider | This is a shocker! I can't believe it but the source is authentic:
Lbh'yy whfg unir gb jngpu arkg jrrx naq svaq bhg! Qb lbh guvax V jbhyq whfg gryy lbh, fbzr vzcbirevfurq unpxre V qba'g rira xabj, jub pbhyqa'g nssbeq gb erag 10 zvahgrf va zl snohybhf Znaunggna cragubhfr. Qba W. Gehzc.
Warning! Spolier (don't read if you don't want to know yet!)
Fri 09 Apr | Nick | >>Trump doesn't have a Wharton MBA, he has a bachelor's degree from Wharton business school (the undergrad college).
My mistake. I knew that he also attended Fordham, so I assumed that Fordham was his undergrad alma mater and Wharton his grad school alma mater.
Marktaw, I wouldn't say that some of us are obsessive because we've developed half-baked conspiracy theories. After all, it's just in good fun. But the fact that a lot of us have been coming here every Thursday / Friday for the past 12 weeks to discuss a reality TV show, now THAT qualifies us as obsessive. :-)
Fri 09 Apr | Nick | Oh, and another spoiler:
Fnz npghnyyl QBRF jva gur Zvff HFN pbagrfg!
Fri 09 Apr | apw | Seeing Sam dressed as a Miss America contestant for the commercial was pretty disturbing.....
Fri 09 Apr | The Ronald | Good God, Kwame drafted Omarossa second. Granted he was going to get stuck with her anyway, since Bill got to pick first for some reason, but geeze. I would have fired Kwame right there.
I would have taken Nick and said 'Pass' when it was time to draft Omarossa.
I'm leaning towards Kwame as the winner. He has a higher ceiling than Bill. Kwame just needs a little coaching on how to work with pathological liers.
Bill continues to be an Ass-Clown. His 'Does she know what I'm capable of?' comment was classic Bill.
It would be much harder to fix Bill's flaws than Kwame's flaws so I'll bet Trump chooses the Kwamster.
Sam's bit was classic, including the part where he mocked his own death stare after being fired.
Fri 09 Apr | Apprentice Insider | I have to question whether or not the winner actually lasts. yes, the prize is a job, but no one said that job was guaranteed. Will the winner be there 1 year or even 6 monts later? Imagine if it was your company doing this: how would you treat the winner in real life after seeing him on tv for weeks/
Fri 09 Apr | Emperor Norton | Even if the winner does nothing for the whole year, the $250,000 salary is a cheap price for the publicity that Trump has gotten out of the deal.
Fri 09 Apr | Sexist | 'Good God, Kwame drafted Omarossa second.'
See, that's my point. She got picked before both Nick and Heidi. (Granted neither of them are exactly stars, either, but still.) If Omarossa were really as horrible as the editing makes her seem, then she would have gotten picked dead last.
Fri 09 Apr | n | To Omarosa defenders
are you guys on drugs?? I work in entertainment and no amount of editing can be an excuse for her blatant lying and manipulation!!! Working in reality tv, producers can not put things in people's mouths or control what they say! Come on!! we all watched it-- She flat out refused to tell Troy and Kwame what the phone call was about and then lied to Kwame to his face! Possibly causing him to lose the Apprenticeship! SHE IS A LIAR, a COMPLAINER, a MANIPULATOR and everyone who keeps supporting her should just hire her in their company...and watch it FALL!!! I don't care what color her skin is, she can be purple! Being a double minority myself does not give you the right to use it as an excuse for blatant misbehavior nor does it give you the right to pull out the race card whenever you feel like it. Hope her 15 min expires very soon!
Fri 09 Apr | Philo | 'If Omarossa were really as horrible as the editing makes her seem,'
Don't forget - we're the Eyes in the Sky. I don't believe Kwame has *ever* worked with Omarosa directly, has he? So all he has to go on is what Omarosa would call 'sniping and gossip,' and if he's inclined to believe her (or simply inclined to believe the best about everyone), he'll dismiss it all.
Even when you're working with someone like that, it takes a while to believe that someone can be that evil.
Philo
Fri 09 Apr | | '''I don't believe Kwame has *ever* worked with Omarosa directly, has he'''
yessir. he has.
Fri 09 Apr | CynamonKis | If you really consider things, Kwame's strategy in dealing with Omorosa was smart. First, he would have wound up with Omorosa even if he hadn't selected her (Bill got first dibs...) If nothing else, he probably expected 'sistah' loyalty from Omorosa.
Obviously she let him down, showing she was more interested in not having her dinner interrupted, than in dealing with the important task at hand. Once she was caught in a blatant lie, I have to believe Kwame would have fired her on the spot had it been a real-world scenario. Here, he only had a limited amount of time to pull off a task, and no opportunity to replace Omorosa if he fired her. I think she may have been so embarrassed by being caught in a lie that she'd straighten up and fly right for the rest of the show. By dealing with her the way he did he's bound to get more mileage out of her for the rest of the task. Also, Omorosa's specialty is hob-nobbing with celebrities (e.g. former positions in the Clinton admin), so I can see why Kwame put Omorosa in charge of the talent, but I also got the impression he left things with Omorosa under Troy's watchful eye, and we all know Troy is competent and trustworthy to a point. I hope she doesn't screw this up too....
Fri 09 Apr | Philo | 'Here, he only had a limited amount of time to pull off a task, and no opportunity to replace Omorosa if he fired her.'
Omarosa generates negative work - other members of the team will have to spend their time watching her, and potentially fixing her screwups. They're better off without her. If they're not allowed to fire people, then give her 'Nick duty' - passing out flyers halfway around the block.
'Also, Omorosa's specialty is hob-nobbing with celebrities (e.g. former positions in the Clinton admin)'
An important warning here - it's human nature to inflate one's own importance. You should *always* take grandiose claims with a grain of salt. In this case, with such a critical task, who would you assign to watch the talent:
1) Omarosa, who has successfully alienated just about every single member of the cast.
2) Troy, whose country-boy charm has won over just about everyone he's met.
?
Philo
Fri 09 Apr | Liax | What the hell is
'Fnz npghnyyl QBRF jva gur Zvff HFN pbagrfg'
my brain is too slow for this stuff!
By the way, I hope Omarosa gets hit by a bus. I am gonna start an Omarosa Hater's club. hehe
Fri 09 Apr | Motown (AU) | ROT-13. Cut it out and paste it into the box at
http://members.tripod.com/~BraunzGuy/rot13.htm
and decode.
Fri 09 Apr | www.marktaw.com | Hmm. These threads haven't been this heated since... well, last time Omarosa was on the show. That alone should tell you how much grief & disruption she can cause in the workplace.
Fri 09 Apr | Brad Wilson | These predictions of winners are hilarious. Trump hasn't told anybody who's going to win, because he's doing it April 15th, live. The contestants certainly don't know.
Fri 09 Apr | Emperor Norton | This is a break from the Omarosa discussion, but this last episode made it possible for us to more precisely date the filming of the series.
We've deduced before that it was filmed last fall, but thanks to an episode of Newlyweds we can match Jessica Simpson's concert in Atlantic City to her anniversary on 26 October. So, the episode we saw last night was filmed just prior to that date.
Sat 10 Apr | www.marktaw.com | It's also amusing to see when each person's domain was registered. Omarosa.com is from 2002, Bill's is from August, and a few others like Kwame and Amy are from December. I didn't bother to check the whois for anyone else. You can find everyone's homepage on the Apprentice/Typepad website. I'm guessing this means Omarosa had something to promote prior to being in the show (presumably her image consulting business), Bill registered his as soon as he was accepted, and Amy and Kwame waited until the show was on the air.
Sat 10 Apr | enough | Enough is enough man! Didn't you have enough of this show already?!...
Sat 10 Apr | Nick | Nope. Can't get enough - especially now that I discovered their 'suggest a task' page for The Apprentice 2:
http://www.nbc.com/nbc/The_Apprentice/suggest_a_task.shtml
Sat 10 Apr | enough | When I see this thread pop up every week, I see my grandma and her friends talking about 'young & restless' for hours and days, which also happens to be a pointless, useless show on TV meant to distract you from the actual *reality* and numb the mind.
Don't bother flaming me. Noone is going to change anyone's thoughts about whether this show is useless or useful, so don't bother to hurt your fingertips typing up something in response. Just enjoy your stupid show.. :)
Sat 10 Apr | Philo | 'I can't believe you waste all your time on that stupid game'
'Which is worse - spending time on the game, or spending time criticizing the people who play it?'
You're welcome to your opinion, but may I suggest a bit of self-reflection as to why you felt the need to post it? What have you gained by doing so? Do you feel a little bit more superior for having deprecated the participants?
Why wouldn't you just ignore the thread and go on about your business?
Think about it.
Philo
Sat 10 Apr | Keisha Jackson | It's obvious that Kwame hired 'O' second because he's trying to be true to his fellow african-americans. Being black myself, I've always been taught that I've got an obligation to 'take care' of my brother and sisters no matter what. Nice sentiment -- but it just can't apply to the work world.
Omarossa is possibly the most annoying dislikeable character I've seen on televison. Maybe she WAS plkanted to screw things up -- but isn't it amazing how true-to-her personality she is when she plays a role as liar. Editors can do interesting things but they still have to work around an grating Omarossa. I still think she's a loser. I'd never hang with that sister -- she's a lying witch. She's the kind of woman you really want to see publicly knocked down a few pegs. Best possible ending: 'O's' husband running off with Heidi. Yea...........
Sat 10 Apr | Keisha Jackson | One more thing -- to those of you who think editors made "O" look bad, how do you account for her appearances on talk shows where she came off pompous, full of herself and hardly believable....Show hosts were being polite -- but their amusement w/her unearned-diva-self-perception were obvious. I'd love to be introduced to the "sista" so I could turn away and laugh.
Sat 10 Apr | BizGuy | Are job interviews an effective hiring tool?
What I love about The Apprentice ever since the lemonade days was that it introduced me to a new paradigm of hiring. I’m in the computer programming biz and have hired based on portfolios and a two hour (or so) interview. The results have been mixed. You can’t judge skill, personality or problem solving processes with the interview. It’s not a good way to hire people. But that’s the way it’s done. The Apprentice introduces a new way (at least to me). Give two employees (or in this case, a team of employees) tasks one at a time and judge their performance on the results. Let them compete for the job. You can measure their skills, you can see their work. This is a new paradigm in hiring for me.
As brilliant as this new ‘Apprentice Hiring paradigm’ is, this episode reverts back to the old ‘interview paradigm’. The result helps prove my point. Amy was very competent in all skills yet was kick out because she lacked interview skills. Kwame, who never really did anything noteworthy interviewed very well.
Other thoughts:
When you catch an employee in a lie you have to call them on it or they will do it again. That’s along the same lines as when Tromp said “Once someone is disloyal to you, they will be disloyal to you again” Based on Kwame’s inability to confront Omarosa, and his ‘what-the-heck-did-you-do-the-last-13-weeks’ performance, there is no way he will win.
BTW. You CAN find anyone, at anytime. Even Rock Stars. Geez, we live in the cell phone age. Ms Simpson could have a cell phone. Her husband might. Even if he’s not traveling with her he will either knows where see is, or he will. No attempt was used for creative problem solving. It could be the editing but I rate this as POOR EXECUTION. This wasn’t just O’s fault.
Bill, on the other hand, is a terrible manager. You don’t make decisions that alienate your key people without explanation. Did he talk with the golf manager to come up with alternative plans? He did what he wanted to do without help from others. 'I'm charge, stand aside' attitude is bad. Rent a damn storage trailer for a few bucks and stick it in the parking lot if you have to, already.
In the end, Bill wins, but Amy is better, so is Troy. I guess no hiring paradigm is perfect.
Sat 10 Apr | T. Norman | Amy starred when it comes to 'getting things done.' Interviews are not a good way to identify people who 'get things done.'
However, in an executive position, a lot of it isn't about getting things done per se. The interpersonal skills and getting _other people_ to get things done counts for more.
Interviewing generally sucks balls when used for selecting programmers. But for executives and sales people a big part of the job is how you present yourself, so for them it makes sense to put a lot of weight on the interview.
Sun 11 Apr | www.marktaw.com | Actually, I was going to comment on the traditional 'half hour or hour interview' and how much this show as made me realize it's a bad idea. My perception of these people in the first few episodes is radically different from what it is now. Yes each person got (theoretically) less than 3 minutes of face time (16 people / 48 minutes = 3 minutes, minus 'The Donald' time etc.), and you don't get to interact with them, but based on her performance in the first episode, I thought Omarosa should've been made project manager because she took charge when it came time to finding a name for the group.
I heard of a company that has one or two week long paid interviews. I realize most people can't take that much time off of work or from job hunting for a 1/x chance at a job, but from the company's point of view, this is an excellent way of seeing who will fit in, and by throwing tough questions at them, or just talking to them, you can begin to see who's competent, and who isn't.
I don't know how well you get to test 'gets things done' because even after a couple of weeks, I'd imagine someone's behaviour is very different than after, say, 6 months as an employee, and track records can be fudged. But it seems better than 1 hour interviews, followed by an informal lunch interview or two.
Sun 11 Apr | T. Norman | If I was responsible for hiring programmers, I would have candidates do a 20-30 minute interview just to uncover any glaring personality flaws and try to find out if they lied on their resume. Those who got past that would be brought in for a full day of hands-on work on the weekend. And of course, they'd be paid for their time.
Of course that still won't be as good as observing them for 3 months. But IMHO that is MUCH better than placing such a heavy emphasis on the interview. Using interviews as the primary employee selection mechanism enables the smoothest talkers to get hired even when they are technically incompetent.
Yes, being articulate and presenting yourself well does play a role in being a good programmer. But that is only about 20% of what matters on the job. Interviews flip that around, placing 80% importance on the presentation skills and 20% on technical abilities.
Sun 11 Apr | Philo | These are all why I ask 'what have you done' questions - basically testing the resume. I like 'what problems did you face and how did you get around them' type questions as well. I believe you can tell if they've done the work (I asked these questions of one guy and definitely felt that he was a lesser cog on a project but claiming 'lead developer' status)
Philo
Sun 11 Apr | www.marktaw.com | That's also true. I've interviewed people and certain things are dead giveaways that they haven't done much, like showing a lot of pride in 1 particular project. Usually it means it's the only project they did.
These kinds of things apply very well to technical jobs. Managerial jobs, I think, would be a little bit more difficult to quiz for, but I suspect you can still tell experience from the beadth & depth of their discussion.
Though, you may have a smooth talking bafoon who, for one reason or another, was entrenched in a certain organization, or because he interviews well, worked a lot of different companies, and will have a lot of stories to tell.
Sun 11 Apr | r1ch | I thought that you Apprentice fans might be interested in this look behind the scenes... it's a bit long winded, but probably worth reading for regular viewers if it's really true.
http://www.themorningnews.org/archives/new_york_new_york/realitys_apprentice.php
Sun 11 Apr | www.marktaw.com | Well, I might as well share these 2 snippets from TVguide.com
IT DOESN'T ADD UP, FOLKS: It appears Omarosa Manigault-Stallworth's concussion may have led to some short-term memory loss. On Thursday's Oprah Winfrey Show, the Apprentice's Queen of Mean claimed that she fingered Ereka Vetrini as the alleged N-bomb dropper only after her reality rival went on The View and defended herself against the accusation. Up until that point, Omarosa told Winfrey, 'I never said who [did it].' Not true. In one of her first post-firing interviews, Omarosa told me point blank: 'Ereka used the N-word with me on the show.' We immediately contacted Ereka for a comment and she vehemently denied ever using the offensive term. When Apprentice producers also told us that a check of the show's tapes found no such exchange, TV Guide Online decided at that time not to include Omarosa's uncorroborated charges in our March 9 story. In related news...
THE END OF THE AFFAIR: On last night's penultimate episode of The Apprentice, during which Omarosa's amnesia worsened, Donald Trump presented lovebirds Amy Henry and Nick Warnock with his and hers pink slips. That leaves Kwame Jackson and Bill Rancic to duke it out on next week's two-hour finale. Meanwhile, during a joint appearance on the Today show this morning, Amy and Nick confirmed that they 'briefly dated' after the show, but added that they are no longer together. And what about rumors that Amy's now with Bill? For the answer to that question, look for my Q&A with Amy — as well as Nick — early next week.
A very quick question by a Java programmer to a crowd of mostly Microsoft programmers: can I develop an application in VC++ .NET and build it in a way that doesnt need the .NET framework to run, i.e, an old school C++ app?
Thu 08 Apr | Sexist | Yes. All of the .NET specific APIs will be off-limits of course, but you can still write plain old C++ with VC++.NET.
Thu 08 Apr | Brad Wilson | And, you should use VC++ .NET as opposed to VC++ 6. The compiler is much, much improved.
Fri 09 Apr | Craig | The 7.1 compiler is fantastic.
Fri 09 Apr | fffffffffffffft | To bad the IDE sucks so hard...
Fri 09 Apr | Sexist | Nice troll. Anybody who's actually given the VS.NET IDE a fair chance would agree it's definitely one of (and quite possibly *the*) best IDE in existence for any language or from any vendor.
Sat 10 Apr | Brad Wilson | I like the VS.NET IDE a lot, but it's not as good as the VC++ 6 IDE.
Sun 11 Apr | Koz | I was impressed by VS.net.
But to call it the best IDE for any language is just silly. Give IDEA or eclipse a try and you'll change your mind.
Sun 11 Apr | Sexist | I have used Eclipse extensively. It has most of VS.NET's features (and even a couple VS.NET doesn't have, like refactoring) but it's just not *slick*, you know? It was the little things like having a different 'perspective' for coding and debugging, and whenever I switched back-n-forth between them, it never quite correctly remembered all my settings for each one so I'd have to do an extra mouse click or two. Or the intellisense--on Eclipse, once you get a dropdown list of completion items and change your mind and hit backspace to erase the last word, the dropdown list stays open trying to find a match and then the performance of the backspace keys grinds to nothing as the list goes searching...
On the other hand, Eclipse's support for things like designing GUIs wasn't nearly as good as VS.NET.
I stand by my earlier claim. Obviously, you'll have a preference for whichever IDE is most familiar to you, which is why so people who've used VS.NET only occasionally prefer Eclipse (or IDEA or SlickEdit or whatever). But after extensively using both, VS.NET 2003 simply has more polish.
I have been reading his book on Helpness (the one Joel talks about)..it is quite interesting considering I knew very little about this subject....
Has anyone read his books on Learned Optimism or Authentic Happiness? How are they?
Learned Optimism:
http://www.amazon.com/exec/obidos/tg/detail/-/0671019112/qid=1081466041/sr=1-1/ref=sr_1_1_xs_books_i1_xgl14/002-0336532-2212810?v=glance&s=books
http://www.amazon.com/exec/obidos/tg/detail/-/0743222970/ref=pd_bxgy_text_1/002-0336532-2212810?v=glance&s=books&st=*
thanks,
Thu 08 Apr | Buddha | All self help books are an attempt to convince you that you're having a jolly good time on the train of life, all the while knowing the train will inevitably run off the tracks in a horrible crash.
Forget all this crap and study zen. All suffering is caused by attachment, it's that simple.
Fri 09 Apr | Prakash S | was not looking for self help, just an interesting perspective!
Fri 09 Apr | MX | > all the while knowing the train will
> inevitably run off the tracks in a
> horrible crash.
Yes. So we should enjoy life while we can!
Fri 09 Apr | www.marktaw.com | Prakash, I never read these books, but would be interested in your opinion of them, or the one you're reading.
As far as I can tell this concept is based on behaviourism, which was a dominant psychological theory in the middle part of the 1900's. Uh, you know, 40 years ago. Based on the works of Pavlov and Skinner, it says essentially that if A consistently leads to B, you will begin to associate the two. The classic example of the dog who got shocked every time he tried to leave his cage. Eventually he stopped trying, even when the cage door was left open and he really could have left he never did.
While behaviourism hasn't been discredited, it's taken a backseat to other psychological theories in recent years. This was the same philosophy that brought you a passionate interest in the ideas of brainwashing during the cold war.
Still, the concept of Learned Depression is interesting, and I'd probably couple it with Csikszentmihalyi's concept of Flow - that is, the study of being fully engaged, which could be seen as being on the opposite end of the spectrum from depression.
I know you haven't read Authentic Happiness (which I would guess is an attempt to capitalize on this idea), but what would Seligman say the path out of depression is? More conditioned responses, or somehow (and how exactly) breaking out of them?
Fri 09 Apr | Kalani | MarkTAW,
I think you're mixing up classical conditioning and operant conditioning. Neither of those is tied explicitly to behaviorism. Behaviorism is an approach to psychology that treats the mind as a black box (essentially) and talks only about the mapping between stimulus and response. A 'purist' behaviorist says that that's *all* that psychology should deal with, and not any explanations of internal processes and so on. Modern cognitive psychology has a better approach, I think.
Fri 09 Apr | www.marktaw.com | Okay, sorry, I know a little about what I'm talking about, but now a whole heck of a lot. I tend to read what interests me, and not go after the textbook stuff. In any case, I'm still interested in what Seligman has to say about "curing" something that's been learned.
Sat 10 Apr | Prakash S | Mark,
he does talk about the 'dogs' experience a lot. I will let you know what I think..
Sun 11 Apr | www.marktaw.com | I would imagine that Pavlov's experience with training dogs, and their training was lost in a disaster (I think a flood) in his office. He could retrain them, but they resisted it.
I think maybe some kind of 'waking up' experience could get you out of a 'learned depression.' Ever feel really depressed, and then something radical happens in your life - travel, an old friend visits, someone compliments you on a job well done, etc. and you snap out of it?
The alternate version would be 'learned happiness' which I imagine would be much more difficult, and probbaly cost thousands of dollars in therapist bills.
Sun 11 Apr | Prakash S | Mark,
this article is a interesting: http://www.tilsonfunds.com/mungerpsych.html
where Charlie Munger talks about excatly what you mention.
Does anybody know why the Cut, Paste, Front and buttons have not yet made it onto PC Keyboards?
These buttons speed you up so much, its not even funny. They have been around on Sun keyboards forever. I would die to have these buttons on my PC Keyboard.
OK, Ctrl X and Ctrl V does the job for Cut and Paste, but how about for Front?
(For those who are not familiar with it: On a sun station, Front brings the window under the cursor to the front of the screen, if it is behind a bunch of other windows.)
If anybody knows a PC Keyboard with a Front button, please do let me know.
Thanks for reading my rant...
Thu 08 Apr | Christopher Wells | If your hand is on the mouse (because you've moved the cursor to the window), then can't you just left-click with the mouse to bring the window to the front?
Thu 08 Apr | Brian | The laptop manufacturers would have a fit! Dell didn't even put real Home (FN+PgUp) and End (FN+PgDwn) keys on my SmartStep that I use at home. In fact, they even put the FN key all the way on the left, while the Home and End are on the right, so I have to use two hands to use these buttons!!!!
But at least the 'email' button flashes when I have a new message.
That's MY rant.
Thu 08 Apr | JD | I just hate the fucked up 'Function Lock' system in my MS keyboard. This function lock will map the function keys [F1 .. F12] to special operations like Open, New etc.
And by defaul the keyboard will perform the special operations and not the normal operation of function key! Yikes!
JD
Thu 08 Apr | Sassy | Caps Lock, the bane of my existence.
Thu 08 Apr | Capn' Kirk | I can never get that Print Screen/SysRq key to work. It never tells me what the system requirements for my keyboard are. And nothing ever comes out of my printer.
Thu 08 Apr | Ken | How about the insert button? Does anyone use "overwrite" mode? It doesn't even make sense to me. Yet just about every application supports it. Might as well have a disk overwrite mode, where anytime you save a file, the bits on the disk adjacent to where the file happens to reside get overwritten, randomly corrupting your data.
Thu 08 Apr | Anonymouse | Christopher Wells:
> If your hand is on the mouse (because you've moved the cursor to the window), then can't you just left-click with the mouse to bring the window to the front?
Actually, I described it wrong. Front will cycle through all the windows on the screen, even those not visible at all (hence I cannot click on it with a mouse)
Thu 08 Apr | Brad Wilson | 'And nothing ever comes out of my printer.'
It used to! Back around the time Thriller was released. :)
Thu 08 Apr | Elephant | 'Front will cycle through all the windows on the screen, even those not visible at all'
Alt+TAB?
Thu 08 Apr | Philo | I used overwrite when I was working EDI (fixed-length fields)
Philo
Thu 08 Apr | Zekaric | I used to use a Sun machine with those extra buttons (cut, paste, etc.) on the side. The keyboard was HUGE and heavy though. Not to mention that 'control' was where capslock is on a normal 101/104 keyboard. Frustrated me to no end trying to hit Ctrl-C or similar only to hit some other combination... Sun keyboards... [Shudder]
Thu 08 Apr | Kyralessa | 'How about the insert button?'
I use it in Access in an existing table to insert a new field in the middle.
But on my (Dell) laptop you have to hit Fn-Delete to get Insert. Which is actually OK, because I'm more likely to accidentally hit it and start overtyping everything than to use it on purpose.
Thu 08 Apr | Anonymouse | > Alt+TAB?
Alt-Tab works in cases where there are a 'small' number of windows.
Unfortunately when I am developing I usually have some 50+ windows open, on 15 virtual desktops. Alt-Tab will randomly jump between desktops. It also doesn't behave as well on MDI applications (may be the application's fault).
'Front', OTOH, will limit itself to the same virtual desktop and works well with MDI applications.
Not sure where the problem would be corrected (as it could be either the Virtual Windows Manager's fault or Windows' fault). (I use enable Virtual Desktop, it's excellent.) The really great thing is that virtual desktop is built into Unix but not in Windows, so the concept itself is not well supported under Windows (with windows poping up in random desktops, etc.)
Actually, this leads into a related question. Do Windows developers use some sort of virtual desktop? (None of the Windows developers I know do...) I can't imagine living without virtual desktops, even when I'm not working!
I use a Windows machine, but am xterming (with xwin) into sun servers to write code, run simulations, and stuff.
Thu 08 Apr | Almost Anonymous | 'Do Windows developers use some sort of virtual desktop?'
I don't... but then I can't imagine having 50+ windows open at once!
I may, at any time, have 50+ documents/files open at once across 5-6 applications -- but each file isn't in it's own window.
Thu 08 Apr | Code Monkey | Yes why they gave us those lonely print screen / scroll lock / pause / caps lock keysbut not one for cut and paste or minimize everythhing on desktop (Windows key+M) is beyond me
Thu 08 Apr | Philo | Scroll lock is used by some KVM's to switch machines (Scroll-Scroll-number), so we're stuck with that one for a while. Print Screen captures the active window to the clipboard, and I know a LOT of people who use that, so I doubt it's going away any time soon.
And the Pause/Break key works in a lot of games. :)
Philo
Thu 08 Apr | Dan Maas | I used to have a virtual desktop thing for Windows but I don't use it anymore. (although I'd probably want it for working on a small laptop screen)
Windows applications tend to use MDI rather than lots of separate windows (compare Visual Studio vs. individual Emacs windows). Perhaps because novice users would have trouble with many windows?
Also the 'front' thing doesn't apply because Windows is (by default) raise-on-click.
Thu 08 Apr | Martin | I'm extremely happy about my Thinkpad's "history back/forward" keys, usable in e.g. web browsers and Explorer. Even the location is great: they are part of the cursor key block.
Thu 08 Apr | Alex.ro | Curiously, almost all games avoid Pause.
They use Esc or something like Ctrl-P.
I saw some Microsoft keyboards without the Insert key (Delete was promoted to double length). I guess they have their statistical reasons.
Personally I use Ctrl-insert and Shift-insert for copy and paste.
Thu 08 Apr | genius | my old-time favorite game Descent paused on 'Pause' key. It confused the hell out of me for a while, I could never remember the key :)
PrnScreen and Alt-PrnScreen are awesome for screen captures. Scroll Lock is totally useless to me, but I remember hearing that MS Excel used it for some scrolling functionality...
Ctrl-Break is invaluable for dumping stack traces in Java when it threadlocks.
Thu 08 Apr | Matthew Lock | > I just hate the fucked up 'Function Lock' system in my MS
> keyboard. This function lock will map the function keys [F1 ..
> F12] to special operations like Open, New etc.
> And by defaul the keyboard will perform the special
> operations and not the normal operation of function key!
I hated this too, but I found a hack that effectively swaps the 'function lock', so by default it's in normal F-key mode: http://www.mvps.org/jtsang/flock.html
Thu 08 Apr | Sum Dum Gai | I don't see the point of virtual desktops, whether on UNIX or Windows.
It's fine if you have a set of tasks you do on your computer that are seperate from each other, I guess. You can then have your virtual desktop for web browsing, email, coding, whatever.
However, that's completely opposite to how I work. I want to write some code, then browse the web for something, then maybe reply to an incoming email. I'm constantly switching tasks, and I don't want to everything else to disappear when I do it. I want it to stay there in the background.
I guess I have a flat rather than heirachical view of my running processes, because I also hate the option to group multiple copies of the one program together on the taskbar.
Fri 09 Apr | Michael Chansky | > Unfortunately when I am developing I usually have some
> 50+ windows open, on 15 virtual desktops. Alt-Tab will
> randomly jump between desktops. It also doesn't
> behave as well on MDI applications (may be the
> application's fault).
I don't know how the hell you can work that way, but I gotta blame this one on your window manager. KDE will let you confine Alt-Tab to the current virtual desktop. Not that that helps with Windows.
And while I'm fine with Sun keyboards (never use the keys in question though), and I'm very used to PC keyboards (and stop trying to add more keys to it! 104 is plenty), I hate having to switch between the two. It takes five minutes to figure out where the $%#! backspace key is every time.
Fri 09 Apr | Anonymouse | > Windows applications tend to use MDI rather than lots
> of separate windows (compare Visual Studio vs.
> individual Emacs windows).
Right. When I'm editing code I usually have some 5-10 emacs windows open all at once. Plus a hardware simulator that has 5-10 windows (one for the waveform, one for the logger, one for the hierarchy, one for the signal list, etc...)
It becomes a nightmare very quickly. Oh well. I guess there really isnt' much to be done about it right now. :(
Fri 09 Apr | Elephant | 'I remember hearing that MS Excel used it for some scrolling functionality...'
If you try it out, you'll find that with scroll lock on in Excel, all cells move around the present cell. i.e. If I'm in cell C4 and I press the
down arrow, I will now be in cell C5, however row 1 just scrolled off the screen.
I had a devil of a time figuring this out, as I had a KVM that used to switch screens. If I accidentally hit it too many times, and I was using Excel, it would take me forever to figure out what the hell I did that changed the movement behavior of Excel.
Fri 09 Apr | Christopher Wells | > When I'm editing code I usually have some 5-10 emacs windows open all at once. Plus a hardware simulator that has 5-10 windows ...
Yes, I've noticed that Unix development calls for having far more separate windows open. The Windows O/S GUI isn't really designed for so many separate GUI applications; because, for example, when I'm working I have a single IDE (application) in which I open all my documents and debugger windows. So I have only a half-dozen applications open (the IDE, web browser, email, IM, Explorer, and the application being developed).
Fri 09 Apr | Anonymouse | Right... Not to mention another 10-20 xterms, plus web browsers and email... There's your 50+ windows. ;-)
Argh, I guess I'm just asking for trouble using a Windows machine to do unix development... But I just haaaaate using a unix station. At least the web browsing and email is not dysfunctional.
Keyboard Rant aside, I do like my natural keyboard very much. Can't use a normal keyboard anymore. But it would sure be nice to have Cut, Paste, and Front keys. :)
Fri 09 Apr | Oren Miller | Why is everyone using so many windows for emacs? Does no one use multiple buffers? I never have the need to use multiple emacs windows. In fact the native Mac OS X build doesn't even support it.
Fri 09 Apr | Code Monkey | >Scroll lock is used by some KVM's to switch machines (Scroll-Scroll-number), so we're stuck with that one for a while.
Really? I had KVM's which switched on pressing ctrl twice and a number which was much more convenient that hunting for the scroll lock key. I have no doubt that each key has some use in some universe but the question is is it used more frequently than cut or paste? How about a key to mute your speaker would not that be more convenient than one for KVM switching?
Print Screen captures the active window to the clipboard,
and I know a LOT of people who use that, so I doubt it's going away any time soon.
I found many people actually to be onfused by the 'Print' part in 'Print Screen'. They press it and wait for the printer to spew their screen out. Stupid them huh! It does *not* print so why the heck it is called 'Print Screen' is beyond me. One has to actually capture it, run paint, paste it in there (with some stupid messages while pasting...like do you want to fit the screen to the image....duh!) and then print.
Plus could it not be more intutive for printscreen to capture the active window and alt + prtscr to capture the whole screen instead of the other way around? Chalk one more work given to the dumb decisions dept at Microsoft.
>And the Pause/Break key works in a lot of games. :)
Actually ctrl+break is nice in DOS and Console mode programs but now su much now. Maybe this would be useful on the XBox but not on a PC :-)
Philo just because you work for Microsoft does not mean you have to defend everything they do :-)
Fri 09 Apr | Elephant | I don't see how he's defending Microsoft here. . . The Print Screen button exhibits the same behavior in Gnome (although not KDE). The Scroll Lock key is used specifically by Belkin KVM switches (Note: CTRL CTRL is used by Rose KVM's and Avocent KVM's).
I don't see how this is a platfrom specific issue other than the fact that Sun makes its own proprietary hardware that isn't based on the x86 platform. The same can be said of Macintosh keyboards (different). Either way the PS/2 style keyboards date back to the AT keyboards which I believe were originally developed by IBM. So how does this tie back to Microsoft other than the fact that MS now brands their own set of keyboards?
Fri 09 Apr | Anonymouse | > Why is everyone using so many windows for emacs?
> Does no one use multiple buffers?
Code is read up-down, and multiple buffers doesn't help with that. I'd rather have several emacs windows that I can maximize from top to bottom.
Fri 09 Apr | Code Monkey | >The Print Screen button exhibits the same behavior in Gnome (although not KDE).
And the reason for that is the Gnome guys want to maintain compatibility even when it is plain counterproductive to do so. And to a certain degree it might work in Gnome because the folks using Linux are dare I say a little more savvy about things like clipbaords, cut and paste etc...
Good usability says that when I press print screen I get to see a print dialog, I click OK and the screen gets printed out....not put on the clipboard....in which case the key should have said 'copy screen'
>The Scroll Lock key is used specifically by Belkin KVM switches (Note: CTRL CTRL is used by Rose KVM's and Avocent KVM's).
Avocent are by far the more 'enterprise' KVM switches but the point is that just how many people actually use KVM switches and from that how many actually use Belkin? Scroll Lock was actually meant to stop DOS screen scrolling when you typed a file on the console...in Windows that functionality is of no use so it makes sense for Microsoft to use it for some other frequently used function
>I don't see how this is a platfrom specific issue
It is a Microsoft decision and hence a platform specific issue. When microsoft wanted did they not get manufacturers to include the 'windows' key which drops down the start menu...so how can you say that this is not a platform issue.
I grant you that 'caps lock' key might fit your argument...since it has been historically carried over from typewriters but Microsoft has and did control the keyboard for other keys right from start from Dos land to current Windows OS's
Sat 10 Apr | Oren Miller | >> Code is read up-down, and multiple buffers doesn't help with
>> that. I'd rather have several emacs windows that I can
>> maximize from top to bottom.
Ctrl-X 3
Meta-X speedbar
Sat 10 Apr | John C. | Code Monkey wrote >>I found many people actually to be onfused by the 'Print' part in 'Print Screen'. They press it and wait for the printer to spew their screen out. Stupid them huh! It does *not* print so why the heck it is called 'Print Screen' is beyond me.<<
It's because Print Screen and all these other oddball keys had real (or at least somewhat defined, if unimplemented) functions when the original model 5150 IBM PC was released in 1981. Only later did Windows and other GUIs co-opt the keys for other purposes. For reasons of backward compatibility, the names never changed.
Back in those days, Print Screen actually did dump a copy of your screen to the printer (invariably dot-matrix). Pause actually suspended program execution, which was sometimes useful if information was scrolling off your screen too fast to view. Scroll Lock (at least in some situations) was kind of like Caps Lock or Num Lock; it altered the behavior of cursor keys so they moved the screen around rather than moving the cursor. (Notice that even modern keyboards usually have a Scroll Lock indicator light!) Ctrl-Break was, of course, used to break out of a program. Ctrl-SysReq, IIRC, generated some BIOS interrupt that you theoretically could attach a handler to so that a user could break out of a misbehaved program that was no longer polling the keyboard and accepting input.
As for Insert, in the old days, overwrite was the default behavior, and you had to hit the Insert key to change that. If that seems odd, you have to remember that at the time all characters were monospace, not proportional; that a cursor was an underline or other highlight for a given character on the screen, not an insertion point *between* two characters; and that many early computer users were former typists, so it was the notion of inserting that was really the exceptional case. (You used to get a 'fat' cursor when insert mode was on.) It wasn't until GUIs and WYSIWYG environments became widely available with the release of the Macintosh in 1984 that people began expecting insert mode to be the norm and overwrite to be an exception -- such an exception, in fact, that it's often not clear why you'd want to switch into that mode.
As for Print Screen being confusing to users, it seems like one alternative to that would be for Windows and other GUIs to be more verbose when they detect that key press. Instead of silently capturing the screen, why not pop up a dialog box that says something like this:
Do you want to:
() capture the entire screen
() capture the top window
() print the entire screen [select printer]
[ ] check this box if you never want to see this message again
Not that I'm recommending this specific language, but a key that has invisible side effects (especially ones that counter what the key's name implies) seems to be bad UI.
Sat 10 Apr | Dr dee | Yep, you're right the Print Scrn, Scroll Lock and Pause keys are stupid keys. Left over from the DOS and text terminals era when printing the screen (80x25), stopping the scroll and pausing actually made sense.
So why the heck would you want another few of this function specific keys?
What we need is more generic functions (F13 to F20) or control keys(like the Windows key) and not a stupid email key.
Sat 10 Apr | Nate Silva | Ooh ooh can I play too? Nobody's mentioned my personal least-favorite key, Num Lock.
The only point of this key is to make the number pad *stop* working. Every time I plug my ThinkPad back into its docking station it's off again. My USB keyboard has dedicated cursor keys, so why do I need Num Lock? Why can't I lock it so it's always on? (yep, I know the Mac does this but I want it on Windows)
Sun 11 Apr | Chris Nahr | Never! The cursor keys on the number pad are much more convenient to use than the separate ones. Long live NumLock!
As i just mentioned in response to another thread, I recently ported an internal Access application to web-based PHP/MySql. (you may remember my Death March thread a couple months ago).
Anyway, now that its ported, my boss, and boss only, still wants to use Access for her ad hoc reporting and querying off the Mysql db. Ok, so i can set up an Access->Mysql ODBC connection for her, but she wants an .mdb on the local network, and I dont want her messing with the live copy of data. So Im exporting from mysql to access. blech.
so heres just some of the problems:
1. Until I can write a script/tool, Im having to do the export/import manually every afternoon. Aaaaah! Anybody have any automated solutions?
2. When I import (using Get External Data->ODBC) into Access, mysql datetime fields (where the time portion is 00:00:00) are not being converted correctly, so that in the corresponding Access Date/Time field i have some records like 9/23/03 and some like 3/26/04 12:03:32. This has created a problem in querying, as a parameter of 3/26/04 doesnt match the second type.
I feel like this is a lame post, but anyone have any ideas?
Thu 08 Apr | Clay Whipkey | This is total flamebait, but here goes:
Maybe you could try creating a PHP script that would extract the data from MySQL, convert the dates/times etc. to the proper Access format, and then insert/update the data in the MDB. This PHP script could then be added to a scheduled task (or cron job on Unix) that would be hit when the 'timer' went off.
I haven't tried this yet, but a friend and I have discussed this as a possible (albeit crusty) workaround for the lack of stored procedures in MySQL.
Please be gentle if thou considerest me mental.
Thu 08 Apr | KS | I have not used mySQL so I don't know if you can do this - can you set-up a DTS activity to do the export - I have done that in SQL Server - you can export from database to Access tables or Excel files. You can actually put it into Access tables and translate each column. That might solve your date problem. Check it out
Thu 08 Apr | Seeker | OK, more random advice. You could use something like Pear DB abstraction layer (http://pear.php.net) and do everything twice and do it in 'real time'. One pear instance pointing to mysql, the other to access. It should not require any additional code, once you get the PEAR stuff set up, just two method calls. This could be done 'automatically' depending on how you link your data objects together.
I personally feel your pain on this one. I can't imagine trying to maintain two separate DBs (separate DB platforms no less). The PEAR framework would take away the guess work on this... now you have a datetime problem, but who is to say what else you will find. I would let the abstraction layer do all this work for you.
Good Luck.
Thu 08 Apr | josheli | Thanks.
Clay, I actually did just that when going from Access to Mysql. set up a php script to extract, munge, reformat and put a bow on top of the data.
i don't know what a DTS is, but i'll look into it.
on mysql.com there is an old access macro that supposedly imports from mysql, but i couldn't get it to work.
looks like i'll have to write _another_ script/tool.
Thu 08 Apr | Andrew Burton | Doesn't Access import delimeted files? Why not have a PHP script spit out a pipe delimited file, and then have her import that?
Thu 08 Apr | Clay Whipkey | I was understanding the problem to be more with the process being *automated*, not with the process itself. Reall, I think that script would easy as pie to write, its just making it kick off on its own without having to manually initiate the data transfer that exposes the weakness of MySQL. (actually I love mysql and hate Access, but that's irrelevant).
The core issue here is why the hell does your boss insist on using Access? Maybe its a comfort level using MS Office kind of thing.
Thu 08 Apr | Lee | AFAIK, DTS is only available on SQL 7.0/2000.
I did something similar once w/ Perl (PHP would work too). I had the database spit out a text file for each table (via Perl script). My script then used a DSN to connected to Access. I dropped and recreated each table and inserted the data from the text files.
Sounds a little strange, but only took a couple of hours to do and worked perfectly.
Thu 08 Apr | Martha | Andrew, that wouldn't fix the problem with the dates, and it just adds an unnecessary step - Access can import data directly from MySql, after all.
I've never worked with MySQL, but what I've done with SQL Server and Access is link the table(s) in question via ODBC, then run an append query to put the new data from the linked table into a native Access table. The append query can use functions to scrub the data (via Format() or CDate() or whatever). It's not terribly fast, but it seems to work ok for the data chunks I get (on the order of hundreds, rather than thousands, of rows per append).
Thu 08 Apr | Martha | As for the automation issue, you could write some code to run the append query whenever the Access db is opened. If your boss refuses to eat the dog food she had you cook for everyone else, she can wait that extra few seconds while the query runs.
Thu 08 Apr | MacSqueeb | DTS, as I am familiar with it, is a set of tools bundled with MS SQL server. I would imagine the other big DBMSs have the equivelant, but not MySQL or Access. If you do have access to MS SQL server, DTS would probably do the job handily--you can make connections to diverse data stores, munge data, push it into other diverse data stores, and schedule it all in DTS. Any conditional logic you require can be applied through VBScript. That said, I assume you do not have MS SQL, which gave rise to the use of Access to begin with. I feel for you, as I too have a handful of legacy Access applications under my care that suffer from, well, being Access.
Thu 08 Apr | DJ | DTS would be overkill. I agree with Martha.
Write a proc in Access to link to the tables and run append queries.
Thu 08 Apr | Wayne Earl | Technical solutions to social problems are non-solutions.
Retrain your boss to use the new tool. Explain the best business case why it is not best to be needlessly jiggling the data back and forth because she refuses to learn the new tool.
At the same time, it sounds like she is using Access in a way that the new tool doesn't function. Learn what she is really doing, and duplicate that functionality in the new tool. Make her a part of that development process, and she will have something invested in using the new tool.
Thu 08 Apr | Code Monkey | This is very simple....
Lookup 'Access Link tables'
Here is one such discussion link
http://www.bitmechanic.com/mail-archives/mysql/current/1225.html
Thu 08 Apr | Infinite Monkeys | OP: "I don't want her messing with the live copy of data"
Thu 08 Apr | josheli | i don't want my boss linking into the live data. i'm trying to get my department to set up mysql replication, and she can then link to the slave. but i work for the gubment, so things are slow.
implementing what she likes about Access huh? doesn't that sort of imply reinventing Access for the web, complete with checkbox queries, expression builder, form designer, etc.? but really you're right, and i'm working on the core 5 or so things she does 90% of the time.
don't y'all just love management's 'pet projects'. it's funny that my boss designed and coded the original Access applicaiton as her personal pet project. it lasted about 9 months before they hired me to port it to her new pet project (web app).
thanks for all the ideas.
Thu 08 Apr | Andrew Burton | 'Andrew, that wouldn't fix the problem with the dates, and it just adds an unnecessary step - Access can import data directly from MySql, after all.'
That would fix the problem with the dates. If the PHP script displayed dates and stuck them in a text file, the dates would then be Text field and not wrongly a imported Date field.
As for automating it, a Perl script and Windows Scheduler would fix that. Use thge Perl module Win32::ODBC to grab the data, delete the original Access table, create a new table in the file, and then INSERT via an SQL command. This solves the date problem. Schedule it to run either at midnight (if the boss leaves the computer on) or at start up (if it gets turned on every morning).
This is basically what I do to syncronize an AS/400 (db2?) database and a MySQL database. Also, it's not adding a redundant step if the direct way doesn't handle dates properly.
Thu 08 Apr | Sam Livingston-Gray | I second Martha's suggestion. Give your boss an Access app with an Autoexec macro that links the tables, imports the data, then deletes the linked tables. Bonus points for giving her a secured database so she doesn't have rights to linked tables she creates (but then you'll have to do the connection in code). (=
Fri 09 Apr | Eric Debois | Does Access support unix timestamps? If so, you could try replacing the date fields with timestamps and do the formatting in the code.
Fri 09 Apr | Herbert Sitz | 'i don't want my boss linking into the live data. '
Sorry, don't have a computer with Access available at the moment, but it strikes me that there may be a property you can set on a linked ODBC table within Access to make it read-only. Wouldn't that solve all the problems?
Sat 10 Apr | Sam Livingston-Gray | ...or create the connection with a user that only has read privs.
Sat 10 Apr | Jim Crockett | It is probably easier to copy mysql data to another mysql database than to MSaccess.
You might try having 2 mysql databases, a primary and a mirror, and letting your boss link to the mirror via ODBC.
Sun 11 Apr | Patrik | This is exactly what happens when you deploy a new system without changing the workflow of how you do stuff within an organization.
I would try to replace her reports with new and better ones, so that you give her an incentive to stop this stupidity.
Talk to her, and have her explain exactly what it is she needs in her current reports, and find a way to match those requirements using your current platform.
I do some gratis work (helping out with their PCs, light-duty app development/maintenance) with the local government’s emergency services (police, fire, ems) and have been approached with a problem. New workers (and indeed veterans) have problems responding to calls on the “road less traveled” – namely the city has many streets and they may not know instantly where a particular address is located and have to ask the dispatcher for some landmarks.
All of the police vehicles have laptops in them (running Win2K IIRC) and communicate with the HQ via encrypted wireless radios (they connect to the laptop via the only com port). They can chat with other officers, get call information, etc. but there is no off-intranet access.
My proposed solution is this:
1) Add GPS units that hook into the laptops on the on-duty vehicles
2) Somehow interface with the dispatch software to read the address of a call
3) Use off-the-shelf mapping software to provide driving directions from current GPS point to address
This means that I’d have to write the glue software from the dispatch program to the mapping software (that is to say I’d have to write code which inputs the location to the mapping software and have it refresh the driving directions).
This fulfills the requirements that it be:
1) Cheap
2) Mostly maintainable by someone other than myself (one guy there is somewhat proficient in VB, so I’d make it a VB6 application)
3) Provide a map to show the driver where to go
GPS units are not terribly expensive and the department only needs to buy as many as on-duty vehicles.
Off-the-shelf Win32 mapping software is not terribly expensive.
I am free, and this doesn’t sound like too difficult/time consuming a proposition.
However, I’ve never worked with GPS nor mapping/dispatch software in such a fashion, and so I’m looking for the following advice:
1) Does this scheme sound reasonable?
2) Has anyone tried something like this? I can’t find anything online which would fit these requirements (Garmin et al said they have no such products that would do this natively)
3) Does anyone know of off-the-shelf mapping software that would do driving directions, or in the least show a map from X to Y (like yahoo maps’ driving directions)
4) Any other suggestions
Thanks!
Thu 08 Apr | Christopher Wells | Personally I don't use GPS (I already know where I am), but I use MapQuest ( e.g. http://www.mapquest.com/maps/main.adp?countrycode=250 ) frequently (if I have a map of where the place is then I can figure out for myself how to get there). The same site can also offer driving directions.
Perhaps http://www.mapquest.com/solutions/product.adp could sell a product to run on the intranet.
Thu 08 Apr | GenX'er | I worked for a company that has a GPS solution (hardware - Windows CE & software VB ASP) that is deployed in fleets of trucks and trains.
TWe used MapObjects from ESRI to do the programming:
http://www.esri.com/software/mapobjects/mo-index.html
I believe you can develop using Map Objects in VB, ASP, C++, VB.NET, ASP.NET, C#, Delphi, PowerBuilder & Java
For more info on the company I worked for see:
http://www.dcs.com/
Thu 08 Apr | pdq | I've never used it, but check out Map point on MSDN.
Thu 08 Apr | Keith Wright | It seems you should be able to get it to the point where they just have to copy the address from one application on their laptop over to another pretty quickly. And I would be shocked if the GPS programs didn't have some way to be operated more automatically. My uncle has used GPS for probably close to ten years, to get news vans to point their little satelite dishes in the right direction. We're not really talking cutting edge here.
Thu 08 Apr | David Roper | I'd be surprised if what you're looking for isn't available off the shelf. Certainly some of the up market cars (mercedes, BMW etc.) have satellite nav. systems into which you simple input a post code anywhere in Europe and it will give step by step navigation instructions AND they keep their temper when you overshoot a motorway exit, which is more than can be said of ....
As a downmarket alternative, look at any of the portable sports aviation GPS systems. These generally allow you to store lists of air strips, way points etc. (equate landmarks or neighbourhoods). You just select one and press GOTO and this big arrow points the way.
Thu 08 Apr | Philo | Microsoft's MapPoint ...
a) integrates with GPS units
b) does driving directions
c) has maps of the whole US
d) has an accessible object model
Leaving you to get the 911 address from dispatch to the local PC and pump it into MapPoint, generating a route and hooking in current location.
CAVEAT: I have not done this; as with all programming tasks, one gotcha can ruin your day. But in theory it should be doable (if you have MSDN it's definitely the cheapest option to try out first)
Disclaimer: I'm a Microsoft employee.
Philo
Thu 08 Apr | no name | You should stay right away from this. Emergency services is a vital service. It's no place to be introducing poorly tested systems done for free, and particularly without formal training for users and new procedures.
Thu 08 Apr | Philo | An interesting and very valid point.
But, realizing that emergency services is traditionally underfunded, how do you deal with the idea that absent this solution, there won't be a solution?
In the case of emergency services, is 3/4 a loaf better than none? Or is it dangerous to encourage a false sense of security regarding street routing?
Questions I'd definitely get answered in writing... :)
Philo
Fri 09 Apr | mackinac | Various comments:
The fire/ems system that I am familiar with still uses paper maps. They are quite detailed. They show individual apartment buildings, which side the entrance is on, where fire hydrants are, etc. They also take up a lot of space, a stack of binders several inches high.
Can you get electronic map databases that detailed yet? Or can you get databases that you can add to?
Fire/ems units usually respond with a crew of at least two, so one can drive while the other navigates. This may not work so well for police.
The paper maps require constant updating. You would have to do that with an electronic GPS database, too. Is there a simple way to update your system?
GPS receivers are cheap. A basic receiver is only about $100, some less. They typically interface to the outside world via an serial data line. If the one COM port on your laptop is already in use, you'll have to figure out another way to connect. USB maybe.
One company that looks like it has the sort of software you need is http://www.teletype.com I have never used their products, but remember their name because, rather than inventing their own name they are recycling an old one. Anyone that has been around computing a while remembers the Model 33 Teletype machines. This seems to be an entirely different company that picked up the name when the phone company lost interest in it.
Sun 11 Apr | Cammo.... | I have just read your conversation and believe that this problem is a great one. I live in Western Australia and are working in a similar problem. What we are doing or attempting to do is to load and electronic copy of the telephone book into a database and like it to map navigation software. The idea is that you could nominate the place you would like to go. example. the nearest hospital it would use the current GPS position and recalculate your route. We are having a little success with this and are using open source code ATM.
We are using a great locally made product made by www.rojone.com.au to tell you the truth they even have a product the uses Dead Reckoning in combination with a standard NMEA output. making working in and around sky scrapers in built up areas and problem of the past.
I am also looking for soloutions and Maps for my neck of the woods but Microsoft stuff seems on available to the masses in highly populated areas. As we all know It is beter to use open source software as everyone can input.
Surely theres a way to disable these ? Im not talking about Messenger popups. Ive disabled those in Services.msc. Nor am i talking about regular website popups. Most Pop Up killers can deal with those. Im talkin about the annoying iLead ads and others associated just with IE. Regular popup killers do not disable those ones
Thu 08 Apr | Myron A. Semack | http://toolbar.google.com
Thu 08 Apr | | Myron, he's not talking about the regular popups, the google toolbar won't work.
I think they're flash ads.
Go to weather.com and you'll see them flying across the browser window.
Thu 08 Apr | | weather.com *sometimes* has those ads. Also see them a lot on the about.com sites.
Thu 08 Apr | Pete J | It seems that MS build these ads into IE 6. But i've to find anyone that suffers from them, or a cure.
Thu 08 Apr | Matthew Lock | If you don't mind moving over to Mozilla Firefox you can set Flash to only display when you click on it.
Thu 08 Apr | AEB | Are you sure you don't have some spyware installed on your machine? Have you run ad-aware or spybot destroyer (both free)?
Thu 08 Apr | Pete J | Mathew - i'd rather stick to IE ( i know i know ).
AEB ... yes i run ad aware. This does nothing.
iLead is , i guess , one of the advertisers. Its the main one i keep seeing. There are others but thats the one i remember. I get maybe 20 of those a day on their own.
Across the top (blue section ) bar of the window it says ..
iLead .......microsoft internet explorer.
Thu 08 Apr | Doug | You can use IE security zones. Go to Tools->Internet Options->Security. Change the Internet zone to a custom level with just about everything disabled (in particular, scripting and ActiveX). If you find a site that doesn't provide the functionality you want, add it to the trusted or restricted zones. They can be configured as desired. There are some utilties out there to make it easier to add sites to the trusted and restricted zones.
I've run this way for a couple of years now and I believe it eliminates all annoying web antics.
Fri 09 Apr | Pete J | worth a try doug..thanks
Sat 10 Apr | Pete J | Unfortunately , messing with the security zones just made life more awkward when browsing...this isnt the answer.
These annoying iLead and other ad things are built into IE 6 . And no one can do anything about it.
Sat 10 Apr | engineer |
RUN AD-AWARE, for gods sake. Geez.
Sun 11 Apr | denrik | ad aware finds nothing you fucktard! they already mentioned it above.
A while ago, there was a thread about putting defining multiple classes in a single .CS file. While the general consensus was that it wasnt such a great idea, I stumbled across another reason to be careful about doing it.
I saw a blog from a member of the C# team discussing how resource files are compiled under .NET and he mentions how VS makes an assumption that you have only a single class defined in a source file.
Rather than the designer just spitting out the name it used, and then resgen reading it out of the .RESX file (or any number of other sensible options), the project system has to sniff your sources and guess what name the designer used. It does this by using the “Default Namespace” project property setting (which doesnt always match the actual namespace used int eh source file), and then assumes that everybody only puts on class in each source file, and thus uses the first class in the source file. It combines that information to produce the proper .RESOURCES filename which is then used as the string identifier in metadata because they dont bother to override the default.
Heres the entire post:
http://weblogs.asp.net/grantri/archive/2004/04/05/108049.aspx
Sat 10 Apr | Chris Ormerod | There is a similar thing to this in the VS IDE, I can't remember the exact way it didn't work but I think it went like if you put another class in one of your forms CS files before/above the form class the VS designer would say there was something wrong with your CS file because it always assumed that there was only one class in each file (or that the form would be first if there was more than one)
So I would say that the problem you described is similar to this one (if it still occurs that is, I think it may have been during the beta)
Chris
How come almost no other programming languages have anything comparable to Perls CPAN?
Im not just talking about a small repository of scripts, Im talking about a central, searchable, categorized repository of libraries scripts to do all sorts of common tasks, complete with documentation, unit testing, bug tracking, and ratings/reviews.
Ive never ever seen anyone try to dispute the usefulness of CPAN, and everyone always puts CPAN and its modules towards the top of Perls features list. So why is CPAN unique? Do programmers secretly *like* reinventing wheels over and over again?
Fri 09 Apr | Matthew Lock | You're right CPAN rocks!
Someone tried to make a cross language one once, but it never took off: http://www.freepan.org/
CPAN is probably a result of the 'get the job done' and extreme open source attitude of perl hackers.
Fri 09 Apr | Li-fan Chen | How come almost no other programming languages have anything comparable to Perl's CPAN?
Python has something similar. Java ones are all just a bunch of JAR files in SourceForge so what's the point?
Fri 09 Apr | Visual Gauss++ | Few but ripe.
Fri 09 Apr | | Li Fan- There's lots of things similar, but IME none compare to CPAN. I used to be amazed when I needed a specialized piece of software and found a module on CPAN. It's happened so many times now though, that I'm no longer amazed... I've come to expect it. Seriously, next time you need a specialized piece of software, just give CPAN a search. You might be pleasantly surprised!
Fri 09 Apr | mackinac | Which came first, CPAN, http://www.cpan.org online since 1995-10-26 or CTAN, http://www.ctan.org (online since ??)?
Fri 09 Apr | The Baja Revolution | For the record, CTAN came first--that's where the idea for CPAN came from.
Since Perl's namespace system of hierarchal namespaces within namespaces (e.g., Net::FTP, Net::FTP::Common) facilitates this plethora of reusable Perl code, I guess another question would be why do language designers still resist this feature to this day (php, for example, had namespaces but they were removed from the language not long ago)? Why do so many languages either not support namesapces or only half-support them (like C++)? Do people like prefixing their identifiers with short, hopefully unique module names to avoid collisions (e.g., XML_ParseDocument() instead of just ParseDocument())?
Sat 10 Apr | son of parnas | Cause name spaces add very little for the extra
complexity.
Sat 10 Apr | Tom H | Some languages allow you to provide a local namespace for an imported module, e.g. Python's 'import xxx as yyy'. This seems to be the best of both worlds.
http://www.informit.com/articles/article.asp?p=26983
Sat 10 Apr | Chris Winters | When you're talking about CPAN you may actually be talking about one or more of three distinct entities:
1) CPAN the website: The primary website is http://search.cpan.org/ and all its links within to testers.cpan.org, rt.cpan.org and cpanratings.perl.org. (There are other sites, like http://cpan.uwinnipeg.ca/chapter .). This is what most people not so familiar with Perl and CPAN think about, but it really only scratches the surface.
2) CPAN the shell: This is a framework for installing modules, generally represented by the CPAN or CPANPLUS shells. The shell will find and install dependencies for you, fire off test results to the module authors if something fails, and a number of other tasks. This makes it possible for a large program (like the application server OpenInteract) to declare its dependencies and have CPAN install them as needed and is what enables the loosely coupled modules in CPAN.
3) CPAN the distribution network: When you want to contribute to CPAN you're given a PAUSE id -- Perl Authors Upload Server. To contribute a new module you go to the PAUSE website ( http://pause.perl.org/ ), login, and upload your module. (You can also of course script this.) That's it. Your module is then copied to hundreds of mirrors around the world, appears on 'new on CPAN' lists like http://search.cpan.org/recent (also in RSS at http://search.cpan.org/rss/search.rss ), and most importantly, is available for people to install via the CPAN shell or other tools that use it.
There are lots of tools that people have built to examine and support CPAN-the-infrastructure: what is the freshness of CPAN (new stuff vs old stuff)? how many modules have been created this year vs previous years? what modules are most declared in dependencies? and so on...
In the last couple of years the CPAN ratings system appeared ( http://cpanratings.perl.org/ ) as did the CPAN-wide issue tracking system RT ( http://rt.cpan.org/ ), automated reports from the CPAN testers community ( http://testers.cpan.org/ ), and the CPAN tools (available from any module on search.cpan.org) which allow you to diff all files in a module to one of its previous versions.
What people who aren't familiar with CPAN don't get is that it's not just a repository. It's really the infrastructure that glues the Perl community together. This glue not only makes it possible for anyone around the world to contribute but also to painlessly build new modules that take advantage of work other people have done.
Me? I'm at: http://search.cpan.org/~cwinters/
Sat 10 Apr | Insert half smiley here. | There was some discussion on comp lang python a while ago about setting something similar up for python, but nothing came of it. I can't remember why, as I wasn't paying attention to that discussion, but it probably had something to do with it being better to have only one way to do things... :)
But I suspect it primarily comes down to size of user base. I bet more people use perl than use python, ruby and tcl put together.
Sat 10 Apr | deja vu | Several possible reasons, off the top of my head...
Age of the language (Perl is a bit older than the upstarts); so more time to get things organized and more time for the repository of code to grow.
Philosophy behind the language. Some languages (sad, but true) don't encourage reusing and sharing code the way Perl does. Flame me if you must, but there are lots more Java programmers but far fewer pieces of shared code. Most Java programmers aren't into this whole 'contribute code back to the community' thing. Not criticizing, but I think it is true. Jakarta is a notable exception.
Just inertia on the part of the other languages. Like it or not, organizing something like CPAN takes a lot of time and effort. You need server resources (that won't go away in a hurry), you need people to think about and setup hierarchies of code and most important, you need a fair amount of code to get started.. or it wouldn't become a valued resource. Other languages have tried and their efforts are coming up to speed.. but it takes constant effort (CJAN ? anyone know where that went ? )
Automation and making it easy to build modules in the first place.. Module::Build and other modules generally make it much easier to contribute modules, even for someone who has never done it before.
Anyone know of a plugin for Excel that provides the ability to plot 4 data dimensions on a single chart?
Specifically I want to chart:
x-axis: priority (4 distinct values possible)
y:axis: severity (4 distinct values possible)
z-axis: phase (5 distinct values possible)
plot-point: a number, representing the number of data values for the x-y-z plot
Im not stuck on using x-y-z axis as above, nor do I have a particular preference for chart type (bar, plot, etc), but I suspect some kind of bar would be more readable. The above is for example only.
~ ~ Dave
Fri 09 Apr | Sam Livingston-Gray | I'm having trouble visualizing that, but can you use color or patterns to convey your fourth axis?
Fri 09 Apr | Philo | Look up 'heat map' - that's a 2-D map (usually geographic) representing 3-D data. Use color for your 4th dimension and you'll get a 3-D heat map. BUT I'm not sure how usable it will be.
You might want to reexamine your premises...
Philo
Fri 09 Apr | Matthew Lock | Like this one (cool!):
http://www.smartmoney.com/marketmap/
Fri 09 Apr | Christian Chabot (Tableau Software) | You may want to check out Visual Spreadsheets by Tableau Software (www.tableausoftware.com). The product is specifically designed to query and visualize any number of data dimensions from any database.
Sat 10 Apr | rashmi | check out xlstat: http://www.xlstat.com/
I want to rename my product before launch.
The name is more likely to be a standard word from the dictionary than a made up word. For example it could be Blueprint or something like that.
But what if someone else has a product of the same name? Are there problems here? Can they really trademark the name rather than just its visualisation (i.e. its style or logo)?
Of course the great parallel is Windows. Its trademarked but isnt there something to challenge that going on?
Anyone got any wisdom on this?
Fri 09 Apr | Kentasy | I think the best way to find out is to contact a lawyer who specializes in Intellectual Property.
Fri 09 Apr | Stephen Jones | The first thing you need to do is to check if it's trademarked.
And remember that trademarks still have to be registered separately in each jurisdiction. So it's no good tradmarking something in America only to find that you have to use a completely different name to sell to Japan.
Fri 09 Apr | www.marktaw.com | I agree. You can't use the same name if you're in the same line of business. You can make Nike computers, but not Nike shoes.
You need to consult an IP lawyer who can do the proper trademark and servicemark searches for you.
Fri 09 Apr | TomA | Names from dictionaries may be harder to find using search engines. Unless, of course you put several dictionary words together, like Lunchboxtag (and that example is nothing but a shameless plug).
Fri 09 Apr | tapiwa | And whatever you do, do not hire a marketing company to come up with a name.
We did it once, about two years ago, and £50k later, they still had not done anything useful but run focus groups, and come up with stuff we had thought of already.
Fri 09 Apr | Kyralessa | I agree that you should come up with something distinct, i.e. easier to find in a search engine. It's easy to search on phrases like "SQL Server" or "Visual Basic", but it's a pain to look for stuff on "Access". (I can always search on "Microsoft Access" but that will exclude some sites.)
Fri 09 Apr | Mr. Analogy |
Great book on this is :
Positioning: The Battle for your Mind.
Classic marketing book.
Suggestion:
Take two common words that appear in the dictionary and combine them unsually.
Ex: Diamond Bullet web services (a company a friend of mine started).
'We deliver your message clear and fast like a Diamond Bullet'
1. easy to spell and pronounce.
2. memorable ('cause it's wierd')
Fri 09 Apr | Mr. Analogy | More suggestions:
1. Have your kids think up names. Our kids are always renaming things with much better names. Instead of 'Children's favorite songs', it's Elmo Dance. Instead of the bottle that we use to rinse thier hair when bathing them, it's the 'tickle rinse bottle' (because it tickles them when we spray 'em).
2. USE the word a LOT before you decide it's a keeper.
I learned this watching 'Startup Dot Com' movie. The ONE thing those guys did that was smart was practicing thier company name as a 'test'. They'd pretend they were introducing themselves (to VCs, of course :-).
Fri 09 Apr | Mark Hoffman |
'And whatever you do, do not hire a marketing company to come up with a name.'
.....or just don't use the same company that Tapiwa used. Many of my clients have had great success with such companies. I know that we engineering types think that marketing people are a bunch of putzes (and many are), but they have a entire set of skills that don't have.
Fri 09 Apr | Norrick | 'I agree. You can't use the same name if you're in the same line of business. You can make Nike computers, but not Nike shoes.'
IIRC, the laws have changed recently so that if you started a business selling Nike computers, it would be considered a dilution of Nike's trademark and you could be subject to legal action from Nike.
I'm trying to find a link and having no luck...
Fri 09 Apr | Elephant | I seem to remember this as true too Norrick. You can't use a well established trademark to help profit your own business, as in Nike computers.
On the other hand though, there is Diamond the computer company, there is Diamond the sugar company (if they still exist), and a million other Diamond companies out there, but all in different markets. Since none of them have tm dominance though, I guess that makes it okay.
These are just random musings though from memory, so they probably aren't worth the time it took me to type them in here.
Fri 09 Apr | joev | Actually, Mr. Analogy, I think your first suggestion (two words combined in an unusual way) is awful. Any time I hear a company name like that, I hear "failed dot-com". Here's a list of vendors that will be at the "Email Technology Conference" in June: Cloudmark, Proofpoint, MailFrontier, Brightmail, FrontBridge. Kind of like the "<color> <object>" pattern that went around back in '99-'00 (Blue Martini, Black Rocket, Red Hat, etc.).
Fri 09 Apr | Hey | > I know that we engineering types think that marketing people are a bunch of putzes (and many are), but they have a entire set of skills that don't have.
Yeah, like suckering dumb engineers into paying 50k to think up names.
Fri 09 Apr | Andrew Hurst | Red Hat has been around since 1994. Pre dot-bomb explosions.
Sat 10 Apr | Robert Jacobson | +1 for contacting an attorney to review your potential names. An attorney can do a 'trademark availability search' and offer an opinion about whether your name is sufficiently unique:
http://www.bitlaw.com/trademark/search.html
The worst-case scenario is if you pick a new name, launch your product with lots of marketing to promote that new brand name... and then learn about potential trademark infringement. Then you're between a rock and a hard place -- either (a) change the name and lose all of your marketing momentum, (b) keep the name and settle with the other company, or (c) keep the name and risk expensive litigation.
Keep in mind that it's possible to be on the hook for infringement even if the your product's name isn't an exact copy of the other company's name, and even if the companies aren't in the same line of business. Witness the Apple Computer vs. Apple Records litigation. (Which started years before Apple Computer got into the music business.)
Sat 10 Apr | Andrewm | For the question of Trademarks, I did look into this at one point. I'm no lawyer, but roughly, it works like this:
You can register a trademark, but that's often a reasonably expensive thing, especially since you have to register it in different jurisdictions. And that can be kind of difficult, since it may get rejected just for being too similar to another company.
But in fact, just by using something as a distinctive mark when you do trade, you effectively are creating a trademark. So using a name or logo and sticking to it makes a trademark. Especially if you put (tm) after it - that's just asserting a trademark, without registering it.
So it depends how big this product name is going to be - if you've done a reasonable search and found that nobody else is using the name you want, go ahead and start using it. If anybody challenges you, of course, it will be difficult to defend your asserted, non-registered trademark unless you've build up recognition for the trademark over a fairly long time.
Another thing you can do is to use your company name along with the product name. So instead of just calling your program 'Smart Tool', you can call it 'MegaSmartSys Smart Tool'. Put a (tm) after each word to assert that you're using it as a trademark. It's not super-solid, but it's probably enough. If the product starts doing well, you can look into registering the name as a trademark.
There are also rules about reusing names, in different industries. If you have a software product called the same thing as a laundry soap, you're okay. There are (in the US at least) a set of industries defined, where companies can sue each other if names collide or trademarks are infringed. Software is grouped with telephony and computer machinery.
I like to hear what you guys think is the easiest, fastest way of developing a not too complex gui app for a small DB. Lets assume that the client platform is windows and that the datasource is ODBC capable.
Does Access win hands down? How about using VDA from the other office apps?
Python?
Fri 09 Apr | Matthew Lock | Access is pretty hard to beat in terms of how fast can you whack out some DB driven forms. But in the end I found perl/php/asp driven by Access to be more programmable and powerful.
Fri 09 Apr | bynarr | Visual Foxpro
Fri 09 Apr | Neophyte | Haskell
Fri 09 Apr | MX | Access
Fri 09 Apr | Sathyaish Chakravarthy | The language or tool you know best, are most familiar with and can code quickly in.
Fri 09 Apr | Matthew Lock | .. except MFC anc C++ ;)
Fri 09 Apr | Just me (Sir to you) | Maybe have a look at Deklarit (http://www.deklarit.com/). I have no personal experience with it but I heard good things about it and it seems to fit your description.
Fri 09 Apr | Eric Debois | Not that ive had any real experience with them, but HTAs look like a pretty darn neat way of doing stuff like that.
Fri 09 Apr | Chris Tavares | Deklarit is incredibly cool - if you're starting a new project. If you've already got a database, you can't use Deklarit.
Which is unfortunate, because, as I mentioned, Deklarit is incredibly cool.
Fri 09 Apr | Coward I am! | Pre .NET it was VB and Access.
Fri 09 Apr | Joe Hendricks | NexusDB
Fri 09 Apr | . | REALbasic
Fri 09 Apr | HeWhoMustBeConfused | Neophyte, did you even READ the question before spouting 'HASKELL', or was it simply a knee-jerk reaction to a question mark?
Out of curiousity, I went to the Haskell web site to learn about the language. Nothing that I saw even suggests that it is a suitable tool for data processing applications. The only application-level mention of anything even remotely database oriented was the use of Haskell to write a query tool for an experimental object-oriented database. There were some mentions of (immature) third party toolkits for database access,.
Finally, there is a link to Freshmeat for a list of Haskell applications. Not one of them was in any way relevant to RAD / DBMS applications.
So tell us: why could you possibly think that Haskell is a suitable response to this question?
Fri 09 Apr | Kyralessa | Another vote for Access. Even post-.NET. Whether Access is "powerful" is obviously debatable, but the question was about "fastest" and "easiest".
Sat 10 Apr | karthik | SQLBase and TeamDeveloper
www.guptaworldwide.com
It beats VB hollow
Sat 10 Apr | Konrad | I think the haskell thing was a joke. I laughed, anyway :-)
Theres an endless number of resources for programmers in the form of code repositories, article, forums, etc., all of which offer some level of free, community-based information. But I havent seen one thing: code review.
A quick google search is plugged with a lot of products to help the process, and various project guidelines. But nothing offering community based code review.
Im picturing something along the lines of a forum where users can post code to be criticized by other users. I know the same thing exists for authors: There are various sites that organize readings of manuscripts for writers looking for critical feedback before submitting their work to a publisher.
Is there something out there like this that Im missing? If not, Id be willing to build something myself--my motive here comes from not having anyone around whos better than me to review my code and point out what Im missing. If a coercive element is required, I already have a model. Critters is an example of the manuscript-reading organizing site that I mentioned above, and they have a simple rule: to get reviewed, you have to review. You earn points for reading others manuscripts and submitting *useful* criticism (as determined by the author); you spend points to get others to read your work.
codereview.com and .org go nowhere, and codereview.net is held by a squatter. Ive registered codereview.ws pre-emptively if this is an idea that needs executing.
Thu 08 Apr | Erehwon | 'But nothing offering community based code review.'
Yep, there'd need to be some kind of incentive for such a site to work. But allow me to state one probably-obvious reason why such sites don't exist: some managers would no doubt have a fit if proprietary code were posted for all the world to see.
Thu 08 Apr | too lazy to fill it in | I've thought about building such a site myself. If you have time, this is certaintly worth executing.
Thu 08 Apr | sedwo | True. I.P. issues *might* arise. But that is no different then any other forum where a developer might post for help.
I think a code review would be a great idea. It would become an excellent repository for design patterns and educating us 'hacks' on how to improve our code. From software algorithms to plain simple reformatting.
I'm always curious on the input of what makes certain techniques better then others. And a community forum would be an excellent critic.
Go for it!
Thu 08 Apr | Brad Wilson | I'm skeptical. Code review is usually in the wider context of the application in question, as well as whatever guidelines you have at the specific place of employment. Seems like it sounds better than it might actually be.
Thu 08 Apr | Learning | I don't know about anyone else, but this is something I've been waiting for.
As a hobbyist with no C/S background, I'm never quite sure what I'm writing is 'elegant' and not a hack.
Thu 08 Apr | Dennis Atkins | Sounds worth a try.
Thu 08 Apr | no name | 'Manuscript review' sites, like 'How to be a writer' classes and so on, are generally patronised by the mediocre. Those people aren't good or published writers and generally never will be.
They're almost a self selecting indicator of incompetence. They arise because of the tough competition to be published, where those who don't succeed desperately look for anything to help them further their quest.
I suspect a code review site would be the same.
Thu 08 Apr | Seun Osewa (afriguru.com) | Except that the amateur programmers stand to make money from their code if it can be gotten to just work ;-) and the site provides a forum to help them achieve that
Thu 08 Apr | double_dark | 'are generally patronised by the mediocre'
Not always.
http://bar.baen.com and http://fmwriters.com are two sites that I know of that are frequented by published authors.
Thu 08 Apr | Justin Johnson | ''Manuscript review' sites, like 'How to be a writer' classes and so on, are generally patronised by the mediocre. Those people aren't good or published writers and generally never will be.'
Critters is highly regarded, and its members frequently make money selling their work. It is a good point, though: the level of review has to be high enough, generally, to interest the kind of experienced people who will make it worth participating.
Hey, Joel's Forum could be just another l337 clubhouse, but it isn't. I think that's something where time will tell.
Thu 08 Apr | Justin Johnson | As I think about it, though, the subject matter of a code review site would tend to attract older, more mature and professional coders, or those looking to become that, simply because it's the kind of concerns that experienced coders have, not amateurs. You have to be pretty comfortable with coding itself to be worried about style and design.
Thu 08 Apr | Ori Berger | Unlike literary writing, code writing is a collaborative work more often than not. For most coders, you get some review from co-workers whether you ask for it or not (often in the form of 'your code sucks', but sometimes better).
Also, unlike literary works, code is functional, and thus various solutions can be subjected to an orange-to-oranges comparison. If you compare, e.g., 10 hash table implementations, 1 is going to stand out as being most elegent, 1 as most efficient, and the rest are going to have little to offer.
Thu 08 Apr | Sum Dum Gai | Rubbish. Rarely is one implementation going to be the most efficient at everything. There's no such thing as an uber hashtable - it's a series of tradeoffs.
One might be faster but require more memory. Another might be a little slower but have better worst case behaviour. And so on.
Likewise on the elegance. Some might have elegant code internally but a harder to use interface. Another might offer a more elegant interface through things like templates, but trade that off on the slower compile speed and portability that such things tend to bring.
I don't think that any more code samples will be clearly 'the best' than writing samples will be. The similarities between writing a novel and writing a computer program run quite deep really.
Fri 09 Apr | Li-fan Chen | Justin Johnson: you can't get code reviewed for free, so if you upload snippets no one would care. Really. However if you upload entire useful projects others could use immediately, there's an incentive because they are part owner/user.
Fri 09 Apr | Ori Berger | Sum Dum: I used to think that way too, until I studied Python's original (up to 1.6) hash table implementation; Pure elegance, _and_ blazing speed, _and_ extremely good statistical behaviour, the only downside being that there are up to log(n) reallocations along the growth.
The latest Python hash table (as of 2.3) traded some elegance for more speed. Feels a bit more 'kludgish' to read, but it's not too bad, and obviously justified.
Pick a hash table implementation you regard as elegant / fast / optimized in ${metric of choice}, and compare it to Python. You might be surprised.
Another example I like is automated Tic-Tac-Toe ('Noughts and Crosses'). Do a quick google search and you'd find hundreds of variations, most of them longer than 200 lines, many of them playing a less-than-perfect game. I've got an excerpt from a magazine posted some 20 years ago, that plays a perfect game, and fits in 20 short Basic lines (that also include the clumsy text gui).
Fri 09 Apr | shiggins | I would truly love a site like that. I work alone and therefore don't have co-workers to review my code.
The only problem I see is incentive. If I need someone to review my code, then I am probably not comfortable enough to review someone else's code. Likewise, someone who is an elegant coder will probably have not interest in having their code reviewed.
Fri 09 Apr | Jeff | I would love such a service. I would also pay for such a service and I would pay more for a review done by someone more senior then someone else.
I code alone and thus someone to review my code with would be great.
Fri 09 Apr | Justin Johnson | Okay, there's enough interest here that I'll start collecting email addresses and getting a basic version of what I'm talking about working. I've put up a rationale and brief roadmap at http://www.codereview.ws/ . Email me if you want to do something about this.
Sat 10 Apr | Tayssir John Gabbour | Ori, I hope you post the Basic tic-tac-toe code there. (Or at least give us hints to the algorithm.) I hear there's an elegant mathematical solution to the generalized NxN game... or at least whether a given empty board is winning for the 1st player. The only solution I know is brute-force search.
Sat 10 Apr | Ori Berger | Will post it here when I find the magazine (an old 'Your Computer' from 85, I think - I know it's here _somewhere_). From memory - it's brute force, and uses a score function from David Levy's 'Computer Gamesmanship' book, which is optimal (It's called 'an explicit Grundy function' in game theory, if I recall correctly).
The same column (called 'I could do that') also featured a one-line recursive closed-shape fill implementation for the ZX Spectrum basic, which I can reproduce from memory .....
9990 IF POINT(x,y) <> 0 THEN PLOT x,y: LET x=x-1: GO SUB 9990: LET x=x+2: GO SUB 9990: LET x=x-1: LET y=y-1: GO SUB 9990: LET y=y+2: GO SUB 9990: LET y=y-1
9991 RETURN
I llike the elegance, and the fact that it the only stack space needed is for the gosub/return address, and not for any local arguments (not that the Spectrum had any provision for local arguments .....)
Does anyone here know how to convert lisp programs in to DLLs ???
Thu 08 Apr | Mark Bessey | Rewrite them in C++ :-)
More seriously, it most likely depends on which Lisp implementation you're using. I believe that most/all Windows Lisp implementations support COM, so you could probably easily set up the Lisp program as a COM server, and connect to it from another application.
What are you trying to accomplish?
-Mark
Thu 08 Apr | Mohammad Atif | I have written an AI program in LISP ( its much quicker to write it in LISP then in any other language i know of ) , and i want to use that program in a GUI developed in say C# or VB.NET ....
Thu 08 Apr | Robert Jacobson | Could you use a .Net implementation of Lisp? Then, it should be as simple as having one assembly for your Lisp code, which you then integrate into your VB.Net or C# project. (No COM necessary.) Here's one:
http://dotlisp.sourceforge.net/dotlisp.htm
(I have no idea about whether it's stable, usable, etc.)
Thu 08 Apr | Andrew Burton | Allegro?
http://www.franz.com/
Thu 08 Apr | Chris Newcombe | www.cormanlisp.com is an Common Lisp native-code compiler for Win32 that can generate stand-alone executables and DLLs. (IIRC the Lisp core is itself a COM server). It has rich features for interfacing to C/C++ code.
The compiler is free unless you wish to redistribute your applications, in which case a full license is only $250 (no royaltied. (Franz Allegro Common Lisp is very expensive in comparison.)
The IDE is free for 30 days, and then must be licensed (in with the $250 above). However, you can use the compiler without the IDE. Others have managed to use Emacs as an IDE for the compiler - Google should find instructions.
Hope this helps,
Chris
Fri 09 Apr | Mohammad Atif | Thank you all for your replies , but the problem is that I am a student and I cant afford to spend $250 on my semester project , does any one of you know of a free utility to do this conversion
Fri 09 Apr | Ori Berger | Depends on the meaning of free (libre or gratis), and on whether or not the whole project is free (libre sense). E.g., if the GPL is acceptable, you can embed CLISP in your application and make into into a DLL with little (?) work. CormanLisp seems to offer what you want too.
[ http://www.lisp.org/table/systems.htm ] may be helpful.
Also, if Scheme is still an option, you'll have considerably more 'free' choice.
Fri 09 Apr | C Rose | Write a network interface to your Lisp code using a simple text-based protocol. Then, write a GUI that speaks this protocol. Assuming that you won't want to make very many round-trips per unit time, and you won't be moving huge amounts of data between the two programs, then this could be a neat solution. It even lets you run the back end on one computer and the GUI on another -- wherever they might be. If you send the protocol over HTTP, then you'd likely skip past firewalls OK.
Given that you have a user generating the events (button pushes etc.), then they won't be very frequent (compared to computer speeds). You may be needing to send lots of data each time -- so this may be a sticking point (could you do local caching or exploit data redundancy?).
You'd need to think about how you'd weed out rogue data (i.e. data is code etc.). You might also want to think about whether authentication is an issue.
For a small class project, you could probably just do the interesting bits and leave out the security.
Fri 09 Apr | Andrew Burton | http://franz.com/downloads/#acl
Allegro is free as long as your project it as well.
Sat 10 Apr | Mohammad Atif | Problem solved :)
Corman did the trick for me , other then the occasional message box everythings working just fine .
Thank you all for your help
Have you ever been fired or left a company disgruntled?
What happened? What did you do afterwards? How did you make yourself go over it?
Thu 08 Apr | Katie Lucas | I did get fired the once. I've forgiven him. Basically he didn't have a lot of choice: the company was going bust anyway and the entire rest of the staff were laid off six months later. I was a bit peeved he did it by LETTER considering we've been friends from university days and he says that on recollection it wasn't the brightest thing to do. But he did have roughly 3/4 million other things to worry about.
I actually got fired for job hunting on company time so it wasn't like I didn't have one foot out of the door already...
Anyhow, seems to be all sorted out these days. Most of the staff have got other jobs, he's taken up being a rock star and the other director seems to have semi-retired to cornwall.
Thu 08 Apr | | I was laid off from my first job. Didn't really bother me because there were a lot of layoffs and I was a recent hire.
I left my 2nd job 'disgruntled', I guess. I hated the place and wasn't shy about the problems I saw with the company in my exit interview.
Thu 08 Apr | Harlequin | I was fired from a job about 15 years ago. What had happened is someone had quit their job to work for a startup company. This left an opening which I was hired to fill. I worked there for 3 months, everything seemed to be going fine, and then out of the blue, my boss said he was dissatisfied with my performance and I was fired.
A month later, I found out that the person who I had replaced was rehired. It turns on that he didn't like working for the startup. My boss wanted him back, and I was in the way, so.....
I was a real kick in the balls for me at the time, but it helped me to focus attention on the fact that there is no security in life. You can do everything right, make no mistakes, and still get hosed.
I went back to school, got a degree in Comp Sci, and went to work in the IT field. I am happy with my career now, but I am always mindful of the painful lesson of 15 years ago and try to keep prepared for any sudden misfortune in my job.
Thu 08 Apr | Stephen Jones | Surely if you've not been fired and are not disgruntled with the job you would still be working there?
Thu 08 Apr | Sum Dum Gai | Not really, there's a difference between being fired and being laid off.
To me being laid off is a financial decision, being fired is a performance related decision. There's no shame in being laid off - it happens to nearly everyone in this industry at some stage or another I think - but I'd be worried about hiring someone who had been fired more than once (I can understand one personality conflict or something, but I wouldn't want someone who made it a habit).
There are also numerous reasons to leave a company if you're not disgruntled. Maybe you need to move interstate or overseas. Maybe you need to take time out of the workforce. Maybe you decide to change careers. Maybe you like your job, but something better comes along. No reason why you have to get to the stage of being disgruntled before leaving.
Thu 08 Apr | sedwo | I wasn't 'explicitly' fired, but during a lay off period, I was one of a number of people that got 'weeded' out. It is true what they say, 'Managers hire on competancy, but fire on attitude'. In the end it was the better thing to do as my attitude did indicate my lost passion for enjoying any type of work there. Fate has a strange way of directing your life. But I've made some really good friends there, and the bitterness is slightly still with me to be pulled away from them. We keep in touch, but it's not the same. It is the social aspect I miss more, that no job after that has yet come to match. Nevertheless, it was at that moment that sparked a fire under my ass to decide to build my own company and raise my level in the food chain so I might never have to deal with crap like that again and be left on the street like some poor loser begging for a job. It has now been two years since that depressing Monday in January 2002 and while my company is still too small support me, it is an encouraging endeavour. Additionally, it has forced me to realize the short shelf life software developers have and how fragile and unpredicatable such a career is (read: no security whatsoever). Through this I have become more extroverted in networking and attaining experiences that might otherwise never have happened. Once you lose your ignorance, you can never get it back. So it is best to continue shedding all other forms of naiveness. Most notably, is the fact of how fear drives us to survive and persist in our lives. (But I digress).
Everything happens for a reason.
Thu 08 Apr | Phil | I was fired when coming back from holidays. Nice feeling.
WTF, I found a much better job afterwards :-)
Now I am on my own, much better !!!
Thu 08 Apr | suhu | Not been fired but laid off, not once but two times. But it changed my whole life in ways I could not imagine.
Was doing system support and minor hardware repairs, training users to use worr, excell at both of these places.
Was feeling really down for a year or so but then made up my mind to give my own business a short. Bought a VB6 book and hooked up to the Internet and worked my butt of for a few months.
After that managed to get some small clients and slowly I have a simple software company. don't give up and think out your goals clearly and stay determined and you will make it and maybe getting fired will be the best thing o happen to you.
Thu 08 Apr | Nearly went postal... | I left as a disgruntled employee. I was hired as a (already experienced) developer out of college by a startup, and was promised that in return for taking a chance on a startup, I'd get to stay near the top of the company as it expanded, be given a competetive salary after a 6 month probationary period and be guaranteed two weeks of expert training per year.
So, after a fully satisfactory 6 months, I was made a full-time employee, given a pay rise that, because of an income tax boundary, actually decreased my take-home pay. Then I was then sent to another site to do fancy data entry -- a position I was massively overqualified for -- the other people I was working with didn't even have college degrees. Then my manager employed a bunch of his friends and immediately promoted them above me on better salaries (contrary to the agreement about me staying near the top of the company). Oh, and the 'expert training'? A few minutes a day with my manager, a copy of a manual and being told to 'train while developing an application for us'.
So, in order to stay employable in the sector, I had to leave -- the company effectively forced me out by making bad management decisions. They then had the cheek to tell me that I had been a waste of their valuable startup capital.
But like many here, I'm glad I left. I'm now working on cutting-edge stuff, with some of the brightest people working in our field. Lesson learned: out of the employee and employer, it's most likely the employer who'll lie in an interview.
Thu 08 Apr | Matt H. | Phil:
any chance you are a John's Hopkins graduate? Was the company that fired you in texas?
Thu 08 Apr | Mr. Z | I was fired once -- it was actually kind of cool, looking back (though was devastating at the time). I was in the boardroom giving a quarterly project status presentation to our execs, when I saw an HR person peek in, then there was some commotion at the door, then two uniformed police officers and a plainclothes detective entered, asked if I was Mr Z, then announced they had a warrant for my arrest. In front of my 'stunned audience' the two officers frisked me, placed me in cuffs and led me out.
I called my boss later that day when they were done with me, but his secretary was the one who told me they 'had to let me go' and 'don't show up here, we'll send your stuff'. HR sent me a packet later with paperwork, but I never heard from anyone there again.
(I was going through a messy divorce at the time, her lawyer was buddy-buddies with the detective, and no charges were in fact filed. It had to do with my transferring money as we agreed to my personal account, but she backed out of and lied to her lawyer, etc etc).
My next job never asked if I had been fired, and in the application they asked if they could 'contact this employer' and I just checked 'No' and that was that. It's been almost ten years since then so it's no longer an issue.
Looking back I just wish I could have thought of something witty as I was being led away from my presentation in handcuffs. Maybe '...and that concludes my presentation', or '...I anticipate some manpower issues in the future,' but at the time I and everyone else was kind of speechless. Oh well, I'll have something ready for next time...
Thu 08 Apr | trollbooth | [the other people I was working with didn't even have college degrees]
Neanderthals! How dare they put you with these low lifes of society!
Thu 08 Apr | Erehwon | Once I was fired for not putting out. (She didn't do anything for me. I mean, I do have some standards. Now if one of the ladies from the HR or marketing dept. expressed interest....:-P)
Thu 08 Apr | Kyralessa | I left a job disgrunted once because they wouldn't let me take time off for an important family holiday; one person in our department of four already had the time off, and the PHB said 50% (two people) would be just too many. (Curiously, before I was hired there were only two people in the department; I guess they _never_ took vacation. They sure must have been happy when I was hired.)
Of course, it was a crappy job in other ways, so this was merely the straw that broke the camel's back.
After a couple months, I started a CompSci degree, then got a job at the school where I was studying. (And just recently got laid off from there. *sigh*)
Thu 08 Apr | Stephen Jones | I once got fired from four jobs in a week.
Thu 08 Apr | John Haren | 'So, after a fully satisfactory 6 months, I was made a full-time employee, given a pay rise that, because of an income tax boundary, actually decreased my take-home pay.'
How is this possible? In the US at least, the progressive tax means that you only get taxed at a higher rate for income over the rate boundary. So if you're in the 15% tax bracket (< $30000, roughly) then get bumped to $30001, only the $1 difference is taxed at the higher 20% rate.
Thu 08 Apr | RP | Stephen Jones, do share that story with us, please.
Thu 08 Apr | IRS Agent Lou | Not true, John, you'd better check your 1040 tax tables.
Fri 09 Apr | anon | 'Not really, there's a difference between being fired and being laid off.'
That's not really true. People and companies leave each other for all sorts of messy reasons. Being explicitly fired is very much the exception. More often, things simply fall apart for no clear reason anyone articulates and the next reasonable excuse for cutting the connection is used, whether layoff or forced resignation.
Most times if it's them giving you the boot, you'll never really know for sure what happened. That's probably as well. All the statistics show that a bad relationship between boss and employee is the real cause of most job terminations and either side of the equation could be the 'real' culprit.
Sat 10 Apr | anonymous | There are lots of examples where a pay raise costs you money:
- For someone on welfare, getting a job may mean losing their welfare benefits. The income from the job can be less than the value of the welfare benefit.
- In the US, the IRA deductions can be very valuable, espeically for a worker in their 20s. If a pay raise means that you lose the right to make your IRA contribution, then the raise cost you money.
Sat 10 Apr | John Doe | I was fired once as a 7-11 clerk. I wrote a money order, and did not properly handle the paperwork for it. Truth be told, being fired was the happiest day of my career there.
I was also fired as a Programmer/Analyst at a major insurance company. Since I'm anonymous here, there is no reason to lie. The department was so dysfunctional, and my manager was just divorced and going through some really bizzarre behavioral swings. Bottom line, I had nothing to do and lots of time to kill, and no direction on that job. Plus I hated the stuffed shirt atmosphere of the place. But it was my fault I got fired. I surfed the net all day and even traded on Etrade from there. They called me to HR and confronted me. I was actually nonplussed and said 'yea, I did it, you have the records, why do I have to confess, just fire me, I don't care!' Then I went into a diatribe about how much I hated the place. My boss turned beet red and white splotches appeared over the red on her face. Then she cried when she led me to the front door with my box of office supplies. Again, I was stunned, but relieved.
Really, I'm a crappy employee. I don't conform to bullshit dysfuntional groups very well, and I'm just not mentally wired for excessive ass kissing. Plus I tend to call people on it when they are being obnoxious or overbearing. These traits don't help me get along in a workplace at all.
Luckily, I'm a business owner now, because I'm the only one who will hire me!
Hi
Im an IT professional planning to move away from a development job to a more marketing/sales type of job. Being a geek at heart, I would still like to remain in the technology industry.
Is there anyone here who has made this move before? If so, would you be able to give some pointers to little old me about the best way to go about making this transition?
One of the obstacles I face now is seeing these job postings which say Good xxx degree with at least 2/3 years of sales experience. I have a good xxx degree but 0 sales experience. How can a developer demonstrate these values and win the competition???
TIA
dogcat
Thu 08 Apr | Herr Herr | Hi there
I made the move with mixed results. I worked for a small IT company (5 staff) where everybody got the chance to do a bit of everything. I found myself quite by accident doing quite a bit of sales stuff. Over the years it became a greater emphasis.
The mixed results I mentioned refer to my satisfaction. Deep down I am simply a geek, and I found myself longing for the development-centric work. It is tiring travelling, meeting with people, trying to persuade them. The computer, however, responds in a predictable, rational manner.
Thu 08 Apr | Mr. Analogy |
1. What makes you think that your're ready (or will be ready) to do a sales/marketing job?
(If you can convince yourself that you're ready, perhaps you can convince an employer)
2. Have you considered something like a sales engineer?
I'm sure that the meaning of that differs from company to company. But the position I'm thinking of is someone who basically assists the customer in buying something.
For example, I have a neighbor who works for a fiber-to-the-curb company (broadband wiring to the home). They sell the stuff. He helps customers DESIGN their system. So, he's really an engineer with really really good people skills.
I suspect that you might be able to get that sort of job if you had good technical skills and very good people skills. Or you might get a job *assisting* someone like that.
Thu 08 Apr | | The best way to do it would be to make the move in the company you currently work for. You stand a greater chance of getting 'hired' with no experience if you currently work there.
Thu 08 Apr | no name | 'The computer, however, responds in a predictable, rational manner. '
LOL...yeah, right...
Thu 08 Apr | Sum Dum Gai | I'm not sure a technical background is even desirable for someone who wants to do sales/marketting for a technology company.
Where I work, they specifically hired someone for the main marketting role who knew nothing about the technology. The reason being that most of the customers are not tech heads. Therefore, if he doesn't know about the implementation details, he's going to be talking to them on their level, rather than slipping into geek speak.
I'd guess the sales engineer type role might be a better fit. Be the guy the marketting people refer the customer's IT guys to when they need tech questions answered, rather than the guy selling to the non-techs. It's probably a better fit if you're a tech guy at heart.
Either that or go into marketting for a completely different field where you wont know the details of the product and can be the 'Joe Sixpack' for that industry.
Thu 08 Apr | Mr. Analogy | 'The reason being that most of the customers are not tech heads. Therefore, if he doesn't know about the implementation details, he's going to be talking to them on their level, rather than slipping into geek speak.
'
Having a simple understanding of something means they probably can't give a complex answer to a customer, but it also likely means they can't give an accurate explanation either.
I have strong technical skills, but I've always been able to explain things to non-technical folks.
If you TRULY understand something, you can explain it in terms they'll understand.
Thu 08 Apr | anon. | I'd second the sales engineer suggestion. Go to work in a mostly-technical role for a small company. A small company because it's easier in that context to wear multiple hats. Get into a position where you're supporting the sales group a great deal. Show them you've got people skills and are eager and able to help them, and you'll find yourself getting pulled into sales calls, etc. From there it's probably a pretty reasonable step to become a sales engineer.
I suggest this route because I've come pretty close to taking it myself -- I'm working at a small start up as a developer and have been effectively pulled onto the sales team an important deal a couple of times, effectively functioning as a junior sales engineer. I worked hard to support those deals, volunteering to take on big chunks of the lead SE's responsibilities, when he got overloaded. When the deal came came through, the sense of accomplishment I got was tremendous, as was the recognition I got within the company, both from the engineering side and from the sales side. If I wanted to move into an SE role, I'd have a good shot at doing it, here.
And I thought about that for a while, but ended up deciding against it, just from watching the lead SE: The guy worked like a madman. I did a couple of 70 hour weeks leading up to one of those demos, but he was probably working 90 or 100 hours during those same weeks, and 60-70 is his average. He makes more money than I do, but not that much more.
Thu 08 Apr | Jones | Have you applied for the "Apprentice 2" show?
Fri 09 Apr | SE and loving it! | I have been an SE at a couple of companies, including at Sun for 3 years. SE is definitely *the* job to have - you earn the $$ like a sales guy (I have a $100K base salary, and get a percentage of sales on top of that as commission), but don't have to do all the b.s. paperwork, cold calling, etc. My sales guy tells me when and where I need to be for appointments, what we will be demonstrating, etc.
You do need people skills and the ability to explain things to the most idiotic people you will ever meet in your life... :) (This job would be great except for the freakin' customers!) I've worked with some developers-turned-SEs who frankly just didn't have the people skills needed, and they didn't succeed. You have to be comfortable with all levels of people, from the h4x0r d00d who will be actually supporting the stuff to the CEO and board of directors sometimes.
When I'm not at a customer site doing a presentation or product demo, I am: helping train/educate the sales guys (really!) and answer questions for them, helping QA new products (and oversee beta tests), helping the tech writers, building demo applications, responding to RFPs, researching competitors, creating technical presentations and whitepapers, etc. In short, a little of everything so it doesn't get boring!
I'm now at a small (25 people in all) software company, so I'm learning more development skills (I came from a sys admin background).
Also, find a company selling a product that you truly believe in. I had one job selling crap that just didn't work. I lasted about 6 months - the $$ was good, but I just found it hard to actually lie in front of customers, and then be on the hook to their tech guys who were trying to make the stuff work like we said it would.
Sat 10 Apr | TW | I went in the other direction (for family reasons) from sales (not of software) into software development. Sales is about persuasion, so any experience that involves changing people’s minds is relevant.
I preferred to work on commission only, with no base, because there’s also no limit. But employers like it as well, because they’re not taking much risk if you don’t work out. Maybe you could negotiate a sales job on that basis.
I should note that the vendor I work for has eliminated most SE positions plus many programming jobs. Sales is the ONLY area where we’re hiring.
“This job would be great except for the freakin' customers!”
By the way, if your attitude to customers is like the one above, do yourself and everyone else a favor and stay away from them.
Im a self-taught programmer, and despite several years of experience, I still have this nagging feeling that the code I write is all hacks. I want to know that the stuff Im banging out is actually clean and up to a professional level.
Im looking for a book out there that will help reassure me as to the best practices for languages like VB/ASP/C++. I want to know that Im doing things like error correction appropriately, for instance, rather than adding too much or too little. Also, things like commenting code, program structure, organization, etc. I know some of those things can require libraries to themselves - like perfecting OOP for instance - but I guess Im looking for something broader.
From what Ive read, I think Code Complete may be the kind of thing Im looking for, and Ill probably be picking that up shortly. Any other favorites?
Tue 06 Apr | Floridian | Pragmatic Programmer http://www.amazon.com/exec/obidos/tg/detail/-/020161622X/qid=1081304888/sr=8-1/ref=pd_ka_1/002-6365628-7995219?v=glance&s=books&n=507846
and The Practice of Programming
http://www.amazon.com/exec/obidos/tg/detail/-/020161586X/qid=1081304964/sr=1-1/ref=sr_1_1_xs_stripbooks_i1_xgl14/002-6365628-7995219?v=glance&s=books
are my favorites.
Tue 06 Apr | no name | 'Structure and Interpretation of Computer Programs' is a classic (you can read it online for free -- and watch the videos online for free too). The 'Gang of Four' 'Design Patterns' book might be useful to you. Also, theorists in various analytical fields can provide you with ideas that beg for 'elegant' computational solutions. As for the specific issues that you bring up, maybe it's best to first keep in mind why people care about those things.
For example, good documentation is important because it makes it easier to maintain your software (especially just to understand it if you go away from it for several months and then come back to it). You can evaluate yourself by going back to old code and figuring out how long it takes before you generally understand the way it's structured (even better is to get somebody who's never seen it to try to figure it out). Documentation can have a useful side-effect as well: it forces you to understand what you're doing and to do it well.
Most important is to write a lot of (varied) software. Reading theory is *great*, but it won't stick with you if you don't apply it (or, by retrospection, understand how you could have applied it).
Wed 07 Apr | Ged Byrne | Definately Code Complete, but wait for the new version that is due soon.
In the original the programming language are outdated (Pascal mainly) and OO is just a footnote.
The new version is much more up to date.
http://www.stevemcconnell.com/cc2/cc.htm
Wed 07 Apr | Mr Jack | If you give a shit about the quality of your code that puts you in a better league of code quality than 90% of your peers. Don't sweat it too much.
(But buy Code Complete when the 2nd edition comes out - what a great book!)
Sat 10 Apr | dmoz | "Write Solid Code" make me from a student to a programmer
From
http://yahoo.businessweek.com/magazine/content/04_16/b3879009_mz001.htm
The goal had been to change the way files relate to one another, so that users could quickly find documents, e-mail, and photos that have some connection to one another.
Truly an ambitious underataking. Im borrowing a Mac w/Panther OSX to evaulate it for a week with the (previous) intention to buy it. Now Im not so sure.
*Still* I cannot get the damn thing to accept a 128 bit WEP key. The current owner is going to see if he can get it to behave.
Yknow what, Linux isnt so hard. Its just what you get used to. All these invisible paradigms working to make your life easier... pah. When it doesnt work, it creates a major pain in the behind.
Trying to secure a computer that thinks its smarter than you are is like learning psychiatry.
And how did you feel about that? I didnt become an engineer so I could get in touch with my computers feelings. BTW: My favorite part of 2001 was when Bowman pulled the plug on that ego crazed HAL machine. I still choked up over it.
Fri 09 Apr | hoser | O, that should be hoser. Misspelt from the last time I wanted to incite a riot here but didn't want my REAL NAME attached.
Fri 09 Apr | Name withheld out of cowardice | They're releasing a new version of the OS that comes with a new version of Media Player? Does that really count as a new OS version?
This illustrates one of the superior characteristics of Linux development. Say what you will about the pluses and minuses of the final product; they feel no need to release new versions just so they can charge customers again at regular intervals.
Fri 09 Apr | Elephant | I get such a kick out of the whole Blackcomb thing. Coined from the pair of mountains that make up the Whistler-Blackcomb ski resort in Canada, the two were supposed to be released in tandem about two years apart. Windows XP was Whistler. Now you've got Longhorn inbetween and Blackcomb is a mere pipe dream to be released at the end of the decade. So much for grand release party plans on the slopes of the resort.
Fri 09 Apr | Interaction Architect | Do you live in a city that has an Apple store? http://www.apple.com/retail/ They have the 'genius bar' staffed by very knowledgable mac gurus who would be able to sort it out, I'm sure.
Fri 09 Apr | JWA | I can't believe that you still can't get it to work. It's typically a one shot, five second operation. Type it in and go.
You never mentioned which version of OS X you are using. Since this was such a major release, the sub versions have added, enhanced, and changed a lot of things and maybe the answers that you are not working because you are using an older versions than the answers people are sending apply to.
Are you entering the pass-phrase or the binary key?
--Josh
Fri 09 Apr | Michael Kale | But if you've been up to Whistler, you'll notice that there's a bar called "Longhorn" down at the base, in between the Whistler and Blackcomb mountains. I think the name's kinda cool. Though I agree with you about the schedule...
Fri 09 Apr | hoser | Binary key.
Interestingly, there are times when typing the binary key in without a prefix, works fine. There are other documents out there http://docs.info.apple.com/article.html?artnum=106424 that imply that either $ or 0x is required.
What is wrong with specifying on the dialog box that you're typing into the EXPLICIT requirements? Izzat so hard? My computer doesn't understand me... sob. We never go out any more...
Fri 09 Apr | r1ch | Funny that you should mention that Michael - it's where they're having the RTM party... Ummm two years early?
http://www.theregister.co.uk/2003/09/26/microsoft_celebrates_longhorn_gold_release/
Long time listener, first time caller here. I have been reading the posts on this discussion forum for quite some time. I work for a small shop doing usability testing, program testing, installation development, etc, etc. Judging by the programming skill and knowledge in this forum I will most likely never have the programming ability as the majority of the people reading this post. Nevertheless, I’ve got a question. I am currently testing a password retrieval web application designed in C#. Here’s how it works,
Users are given a username and password to log on to our website. Within a “Portfolio” page the user provides all sorts of required information, most importantly their email. Let’s say once the user provides us with their information they forget their password? Here is how they get into the system:
First, they click on a “Forget Password” link on our website. Second, they are brought to a page where they must submit their username and email address. If the username and email address do not match within our database an error is returned to the user. Third, they are sent an email with a link that will return them to our website where they must provide the last four digits of their Social Security Number. Fourth, once they correctly submit the last four digits of their SS# they are brought to a new page where they must change their password. We never give them their old password we make them set a new one.
This is proving to be very difficult for our users to understand. It would be a lot easier if we could have the user click on a Forget Password link, validate their username, email address, and SS# and send them their existing password via email. What does everyone think? Any help on this would be greatly appreciated.
Thu 08 Apr | Christopher Wells | > It would be a lot easier if we could have the user click on a Forget Password link, validate their username, email address, and SS# and send them their existing password via email.
It would be even easier if they only have to submit their email address, and then you send the password by email: this assumes that no-one but me can receive my email.
Thu 08 Apr | www.marktaw.com | If you have their SSN I'm assuming you have a certain amount of trust with this client. It's your responsibility to not give something like their password in something as sniffable as their SSN.
Have them enter the last 4 digits of their SSN and let them set a new password after that.
Thu 08 Apr | Clay Whipkey | In the app we're building now, I've decided to go with the lost password form really being a reset password and send it to the email address on file form. For two reasons:
(1) We encrypt our passwords one way in the DB, so we cannot retrieve them and show them to the user.
(2) It will greatly simplify the process. Just click on the link, and enter the email address, along with some kind of additional verification. If it matches one that is on file (when a new account is created, we force the email address to be unique), the password is reset to a randomly generated string and emailed to that address.
We have to use some kind of verification to prevent a random person from annoyingly resetting people's passwords if they can guess their email address. But it is only one form, and two fields. The verification could be zip code, last name, etc. or possibly some kind of cutesy challenge question like 'What is your dog's name?'
Beyond that, I don't see the need for more.
Thu 08 Apr | Almost Anonymous | Ask only for the email address; the username is redundant.
Include the username in the email -- people forget those too!
If you don't want to include the password in the email -- put a link in the message that includes an encoded component (using something like MD5). This encoded component is linked to the user's username and password.
When the click is clicked, the user is brought to a page where they can change their password. As a side effect, when the user changes their password the link will no longer work.
Thu 08 Apr | www.marktaw.com | > password in something as sniffable as their SSN.
should be 'as sniffable as email.'
Thu 08 Apr | www.marktaw.com | > Ask only for the email address; the username is redundant.
Good idea. Say, what's your email address? No reason... now what was that site you signed up with?
Sorry, you can't base your security on all publicly available information.
Thu 08 Apr | Dennis Forbes | 'Good idea. Say, what's your email address? No reason... now what was that site you signed up with?'
Well I think the idea is that the rest of the process is still followed (i.e. you get an email at that address that you have to follow, and then d othe following steps).
Personally I entirely agree : Most 'usernames' on websites are entirely redundant, not to mention suffering from classic namespace collisions ('damn...dennis_Forbes is taken...dennis_w_forbes...dwforbes, d_w_forbes, etc): I already hae a globally unique email address. The only sites that should require usernames are sites that display 'handles' on messages, although even that can be just an account attribute rather than a logon element.
Thu 08 Apr | Almost Anonymous | 'Good idea. Say, what's your email address? No reason... now what was that site you signed up with?'
Just how would you get my username and password if I have you my email address and a site I've signed up with?!?
Thu 08 Apr | In the Midnight Hour She Cried More..More..More.. | Thanks everybody for the insight! I was just looking for a easier way to do this, but of course security has got to make things a bit harder. Our biggest problem is probably that our users are not very Internet savvy. Or even Windows 95 savvy.
'Almost Anonymous' if our users forget their username they can call our helpdesk. Surprisingly, this is rarely the case because most of these usernames (ID's) were issued roughly 1-30 years ago. We incorporated these usernames into the web application. I guess you could say they are a lot like SS#'s. As for two users 'not' having the same email address , we recently got burned on that. We have several users (husband and wife) that have the same email address. That's why we now have to ask for the username. On top of all that we are using an encoded component. Thanks for the replying so quick!
Thu 08 Apr | apw | also, after a sucessful password change, you may want to send the email address a notice that the password has been changed, just in case it wasn't them that changed it.
Thu 08 Apr | bpd | Just ask for _either_ their username (I'm assuming it's unique) or their e-mail address (which you know from the "portfolio page"); use that to lookup their record and send the username and a new, randomly generated password to the e-mail address on file. If they'd like, they can change it from a page on the site (a link to which should also be included in the e-mail).
Thu 08 Apr | Almost Anonymous | 'use that to lookup their record and send the username and a new, randomly generated password to the e-mail address on file.'
This isn't good -- if someone mistakenly types in someone elses username or email address they'll clobber that persons password! Sure, they'll get the randomly generated password in their email but I still think it's a bad idea.
Thu 08 Apr | Philo | The problem is that IMHO a well-designed application shouldn't be *able* to retrieve the user's password - it only stores a hash, hashes the input password, and compares the hashes. In that situation, you don't have the option - you generate a new password (use the old AOL method of dictionary word & random symbol & dictionary word) and email that out.
Philo
Thu 08 Apr | Clay Whipkey | Almost,
That is why in our approach (which I explained in an earlier post) we ask for the email address AND some piece of verification. That could be the last 4 digits of the SSN#, a special challenge question, whatever will make you feel like you've got your bases covered.
Then when you send your script in to do the resetting of the password, you only do it if you find a match for the email address AND the verification item.
IMHO, this is the method that addresses as much user-friendliness as you can get while still maintaining good security. (Being able to *see* what someone's password is at all is a problem waiting to happen. Forcing them to reset is the only option if you encrypt one-way.)
Thu 08 Apr | joev | Philo++
Also, you may want to also use a 'salt' value when computing the hash.
Thu 08 Apr | Ryan Anderson | The method I used in a similar situation was to ask for either the email or username, from that, I look up the user record, and if exists, send a token (good for that day) to the email address.
Then I ask the user to enter that token (along with their username or email, but if they leave the browser open it's pre-filled anyway), and then send a new password to the email address on file.
The one thing that is... poor in my system is that a password reset doesn't invalidate the code used to authenticate the reset, but I think I'll look into that next week. :)
Fri 09 Apr | Just me (Sir to you) | Always start from a threat model. What is it you are trying to protect, and what is it you are trying to protect against. Once you figure this out, you can then evaluate different options. There is no "general" always best solution to this problem.
Fri 09 Apr | tinfoil hat | As a user, here is what I like (an dislike) about various user/pass systems:
I like systems that let me use arbitrarily long usernames -- I have a standard username for web-based accounts that I like to use. Systems that only allow a certain number of characters annoy me, as I often forget my username -- and then don't revisit the site much.
I like systems that use my email address as my username, *** but only if they can absolutely guarantee that they won't spam me or sell my details ***.
I like systems that don't place restrictions on my password. I know that using dictionary words, names and birthdates is bad, and so I don't do it. But having a password policy that makes it really hard to remember the password means I'll forget it.
I like what my bank does: they ask for a username, my account number, my date of birth and then 3 digits from a security code that I can chose (i.e. they specify 'third', 'second', 'last'). This is probably overkill for a web-app, but I like the challenge-response idea of e.g. 'third', 'second', 'last' digits, as it means that at a given sign-on, not all of my authentication details are transmitted across the network (and encryption is also used).
An alternative to passwords would be to ask users to choose a pass-phrase (e.g. 'the cat sat on the mat'), and then, when they sign on, ask then for the, say, 'first' and 'fifth' words. It's easy to remember, as secure as passwords (still vulnerable to stupidity and social engineering), but is not easily sniffable over the network.
I like sites that, when I sign-up, ask me for a challenge question (I might choose the question 'Where was your first visit overseas?') and a response ('Germany'), so that if I forget my user/pass, they ask me my question.
Fri 09 Apr | Stephen Jones | Most sites send you the user name and password when you put in the previously entered email address.
This does mean you should make sure you have a strong password for your email address. There was an article in the 'Arab News' last week from a Saudi lady journalist who found that somebody had broken into her Hotmail account and changed her password and then texted her on her mobile to demand she withdrew the unveiled photo of herself that appeared with her articles, and aplogized for allegedly 'Unislamic' behaviour. If she didn't do this the Hotmail hijacker threatened to post her emails all over the web!
There are some amusing side-lines to this. Firstly the poor woman appeared to be genuinley miffed that Hotmail and Bill Gates wouldn't do anything to help her get her account back but expected all that to change after she had published her article. Secondly that the hijacker was idiot enough to contact the woman by SMS, thus identifying himself, at least indirectly to any criminal investigation, and thirdly that the woman, despite having denounced the matter to the Interior Ministry hadn't realized that this was the way to catch the guy.
It also raises questions about the common sense of people who have weak passwords, and worse still, keep the only copy of their address book within the Hotmail account.
Incidentally, having your email account hijacked is quite common when you fall out with your girlfriend/boyfriend, so be forewarned.
I have a comfortable working knowledge of VBscript, as my day job is in ASP web development. We are going to be moving to .NET, and I am also going to be building a web application in .NET in my freelance business, so I want to start preparing now.
While I would rather learn C#, just from the good things Ive heard about it, I and the rest of my teammates already have a long history with the VB family, and no C family experience (although some of us have a lot of PHP experience, so syntacticly we are comfortable with wanting to learn C family stuff). So we have pretty much decided to use VB.NET as the easiest and fastest way to go.
Can anyone recommend some good books that help someone transition from VBscript to VB.NET?
(Also, if you know of some significant advantages of C# over VB.NET, which would behoove us to reconsider, Im all ears. We are not too far down the road to change our direction if its worth it.)
Thanks.
Thu 08 Apr | Robert Jacobson | These books are more for VB6 -> VB.Net, but they're both very good:
Appleman, 'Moving to VB.Net: Strategies, Concepts and Code.'
Cornell & Morrison, 'Programming VB.Net: A Guide for Experienced Programmers.'
Both are from APress. The first book is more theoretical about the fundamental changes of moving to the .Net platform, while the second is more practical (providing a quick introduction to the IDE, important changes in the language, etc.) They're good together, IMO.
Also, there's nothing wrong about starting with VB.Net. Once you're comfortable with it, picking up C# is a breeze. In many ways they're basically the same language, just with different syntax/keywords. This ebook is good:
http://www.desaware.com/products/books/net/vborc/index.aspx
(The conclusion: the differences between them are minor; use whichever language is more comfortable and productive for you.)
Thu 08 Apr | Li-fan Chen | Programming Microsoft Visual Basic .NET (Core Reference) from Microsoft Press won't forget you used to know VBScript/VB.
Thu 08 Apr | Andrew Burton | 'Also, if you know of some significant advantages of C# over VB.NET, which would behoove us to reconsider, I'm all ears.'
I've dickered around with C#, used VB6 and VBScript, but have only glanced at a VB.Net book; so I am probably not the best person to answer this. However, let me offer my limited opinion (and if ANYONE wants to correct me, I welcome it): I get the impression that VB.Net will allow you to move faster than C# would. C# lets you be more productive, than say C/C++, but you still have to do a lot of declaring, working with characters (not just strings), and defining GUI classes(1). If I were moving ahead into .Net for web applications professionally, I would stick to VB.
Knowing VBScript and seeing some VB.Net, it looks like it'd be quicker to pick up and run with(2).
---
1. I could be mistaking my ignorance of Borland's C#Builder with the proper and quick way to create new forms, but making a new dialog box in C# feels clumsier than it does in Visual Basic.
2. Again, I'm a neophyte when it comes to .Net, so I welcome any corrections anyone wants to make.
Thu 08 Apr | Chris Tavares | The big advantage, right now, is that C# developers get paid more than VB.NET developers.
No, it doesn't make much sense.
I consider the difference between the two languages is about the same as the difference between American English and British English. Some idioms are different, and the spelling may be a little different, but they're really pretty much the same thing.
Thu 08 Apr | Philo | #1 reason to learn C# instead of VB.Net is even more valuable if you're going to keep writing VBScript:
it's less confusing.
The mental switch is a LOT easier from the land of curly braces and semicolons to the land of begin/end and back again instead of trying to remember which keyword works for this here in this application.
Just like I never accidentally wrote english words in russian composition like I always did in spanish...
'Miguel y Luis trabajando en la kitchen...'
Philo
Thu 08 Apr | Clay Whipkey | Hopefully I will not have to use too much VBscript in the future. I prefer using PHP/MySQL for smaller - to - medium web stuff, and probably .NET for large scale. I don't know Java and haven't heard anything that 'sells' it to me over .NET.
In my case, the corporate job has decided to use VB.NET because our team already uses VBscript. In my startup, we are planning on VB.NET for the same reason, compounded by the fact that we can't make any money until the app (which is a service, not a product) is up and running. Sweat equity is our friend, but its not the greatest for learning new things for the fun of it. If the startup is successful, it should afford us the opportunity to do more development for fun, and we will likely learn C# at that point.
Thu 08 Apr | Clay Whipkey | BTW Philo, that plan isn't fool-proof anyway. I have caught myself throwing dollar signs onto the front of variables while writing VBscript. Doh!
Thu 08 Apr | Philo | 'In my case, the corporate job has decided to use VB.NET because our team already uses VBscript'
For the record, this shows an almost complete lack of understanding about what they're getting into. The really, really hard part about .Net is learning and getting used to all the .Net namespaces and object model. Whether it's VB.Net or C# is practically transparent. In fact, building on my previous post, the perceived differentness of C# may help recognize that things are going to be different, while typing Begin and having little else work could be truly frustrating.
The 'VB.Net will be easier because you know VB' is akin to 'it'll be easier to learn to drive a tanker than an 18 wheeler because you know how to swim'
[disclaimer: The opinions stated above are those of the author and do not represent the Microsoft Corporation]
Philo
Fri 09 Apr | Steve Jones (UK) | I spent quite a while doing ASP/VBScript. It was decided that the next major release of the system should be based on .NET, so I had to decide on VB.NET or C#.
I opted for C# as it seems like a more natural language, although I had done a lot of client-side JavaScript work, so the syntax makes perfect sense. I also did some C/C++/MFC years ago, but I'd forgotten a lot of that anyway.
VB had already been butchered many times over since VB1, and I thought that the VB.NET was just one re-write too far.
There is very little difference between the languages (as you'd expect, given that they both target the same IL), so really it comes down to personal choice.
After working with C# for a couple of years (since the beta), I can honestly say I never missed VB. It is just a delight to work with C#, so for me and my project it was 100% the right decision.
Fri 09 Apr | Robert Jacobson | One other possible considerations: just as a historical artifact, I think that VB.Net will remain the language of choice for most ASP programmers. (People tend to stick with what they know.) If you're looking for help online, VB will probably be the linga franca for ASP developers.
Also, consider the direction that the languages are taking with future editions (starting with 'Whidbey,' or Visual Studio 2005.) It looks like Microsoft is abandoning the 'they're basically the same' approach and is trying to position VB as the better RAD tool (with extra hand-holding/support in the IDE) and C# as the hardcore programming-without-a-net language.
I was at a user group meeting last night where Microsoft previewed VB for Whidbey, and it looks pretty cool -- a return of edit-and-continue, more informative error messages in the text editor, etc. Of course, a hardcore programmer might just find these annoying. More info here:
http://msdn.microsoft.com/vstudio/productinfo/roadmap.aspx
Even with these changes, though, the languages will still be 99% the same in term of their capabilities. I suggest learning both if you have the time.
If there is a userbase of ~900 hardcore users, and the primary product cost $700, what is an appropriate price for an addon?
The addon will probably save the user 100s if not 1000s of hours, for its a gravely needed feature that the manufacturer refuses to put in. So until then, I am the only company that provides a solution.
TIA.
Thu 08 Apr | GiorgioG | >The addon will probably save the user 100's if not 1000's of hours, for its a gravely needed feature that the manufacturer refuses to put in. So until then, I am the only company that provides a solution.
How much money (hourly wage*hours saved) will it save per user? Do these people cost a company $6/hr or $60/hr. How often do they use this tool? I wouldn't price it more than 50% of the cost of the original product itself.
Thu 08 Apr | Thanks for the help. | The add-on automates several calculations for a trading systems development package.
So the end users are developing their own stock trading systems, and with my tool, they can evaluate their systems much sooner. The calculations greatly speed the development.
So whether they're a hedge fund manager or individual trader, if the tool is used appropriately, it could save them $1,000's.
Thu 08 Apr | Code Monkey | >If there is a userbase of ~900 hardcore users, and the primary product cost $700, what is an appropriate price for an addon?
Come on now...there is no mathematical formula which tells this. I have seen some addons (like for Autocad!) which cost more than the original product. I have seen addons -- atleast the basic version -- which are given away for free.
The first thing to do is look at similar addon's and I do not mean just similar functionality.....addon's which you think save similar amount of efforts and are intended for the same target audience...see how much they sell for...call them...see what kind of discounts they offer...
Then you have to figure out the cost to you for developing, marketing and distributing the addon, do not forget the all important support costs....even plain email supports costs money...add in some reasonable profit margin say 20% and you have your low price point . Add in another 50% to it if you are not selling direct and the resellers are taking their cut plus people like 'discounts'.
Like I said that is no easy answer!
Thu 08 Apr | Dennis Atkins | Excel costs $100. An add-on for excel that accurately predicts stock prices over the next 36 hrs would be worth many millions of dollars per license.
You have to price it experimentally and see what happens. Important: don't start too low.
Thu 08 Apr | anon. | One consideration: When the manufacturer of the base product sees you succeed in selling this add-in, what are the odds that he will implement the feature you speak of in the base, and boost his price by, say, [your price]/2?
Thu 08 Apr | Sgt. Sausage | ==>Excel costs $100. An add-on for excel that accurately predicts stock prices over the next 36 hrs would be worth many millions of dollars per license.
Personally, for me, I'd pay *billions* for that one. Where do I sign up?
Fri 09 Apr | Steve Jones (UK) | I thought it should be billions too. Although such a system let loose in the real world would cause havoc.
Fri 09 Apr | Matthew Lock | Joel answered this quite nicely here too: http://discuss.fogcreek.com/newyork/default.asp?cmd=show&ixPost=1389&ixReplies=25
Wow. One of the things I like about JOS is that you dont have to spend hours looking for the perfect topic for your forum yet there are really google answers.
Suppose someone has a site thats something between a weblog and a content site whose primary audience is people in a developing nation with no ability to spend online and hence very little interest in ads.
Suppose the writer(s) have an interest in providing the best deals, or recommending specific products, and it has been observed that the text of the articles often make the ads redundant or unnecessary (e.g. telling the users how to get a free domain name or recommending a particular registrar yet having ads for paid domain names from the registrars not recommended??).
Suppose the writer uses google adsense and he is beginning to feel there is something fundamentally wrong with adsense as a business model for his site (the more he improves the value his site offers, the less he would make from adsense)...
What could such a web publisher do?
Regards,
Seun Osewa.
Thu 08 Apr | Steve Barbour | Ask for donations?
Thu 08 Apr | www.marktaw.com | 1. So you're saying JoS is a free Google Answers?
2. You're looking to make money from people who have no money? Is this right?
3. Affiliate programs with the people you're recommending.
4. Sounds like a shady business, you wouldn't be selling web hosting to people in Nigeria would you?
Thu 08 Apr | Seun Osewa (afriguru.com) | MarkTaw,
1) Did I say it was me?
2) A 'content site' is not the same thing as web hosting.
3) But Nigerians need web hosts too. (I use one.)
4) What if JOS is a free google answers? Can't pay google anyway even if I wanted to.
5) Unlike google answers, JOS allows more than one person to look into the issue at hand.
6) Should I apologize for asking this question? So sorry.
Regards.
Thu 08 Apr | Seun Osewa (afriguru.com) | Quoting myself:
'One of the things I like about JOS is that you don't have to spend hours looking for the perfect topic for your forum yet there are really google answers.'
Wow. I meant 'GOOD answers'. This is really funny :P
One might think of it this way: the writer of the site in question is helping those people to effectively use IT and at the same time save money. Why, some of the money saved should end up in her pocket ...
Thu 08 Apr | Ivana Cheetya | I'd like to help. In fact, you seem like a person I can trust. I am a wealthy Am_erican politican and I need hle[p movinq a large sum of money out of my country. Please post your bankiog derails here.
Thu 08 Apr | Seun Osewa (afriguru.com) | And by the way scammers only ask for bank details to guage the seriousness of their potential victims; they cannot force money out of your account just because they know the number ;-) You have to be silly enough to send it to them and apparently enough people are.
Fri 09 Apr | Just me (Sir to you) | You're still facing Mark's (2):
'2. You're looking to make money from people who have no money? Is this right?'
If OTOH you are providing a 'public not-fot-profit service', find ngo sponsorship, governement grants etc.
Fri 09 Apr | Stephen Jones | Dear Seun,
Making money from a content site on the web is what people have been trying to do with limited or zero success for years.
And that is with people from First World countries with credit cards, PayPal accounts, and a culture of paying for intangibles.
Fri 09 Apr | www.marktaw.com | '1' Was a comment on the way you present yourself. There's no problem with asking for questions, but rubbing it in our face that we're a 'free' and 'easy' way to get answers won't really win anyone over.
You said you (or someone) wanted to make money by selling advertising to people who can't buy things. You said you would recommend products for them, like domain name services, web hosting was a logical extention.
Ad Sense, I presume is a bad business model because you'll be making the recommendations, and they should be following those, not the Ad Sense links. I suggested affiliate programs with any of the pay services you may recommend. Is it against the Ad Sense policy to say 'please click on our sponsor links' ?
If your business model is suggesting free or cheap products, why not follow your own advice & use only free or cheap products? You won't make money, but you won't lose any money either.
Fri 09 Apr | Seun Osewa (afriguru.com) | '1 Was a comment on the way you present yourself. There's no problem with asking for questions, but rubbing it in our face that we're a 'free' and 'easy' way to get answers won't really win anyone over.' Apart from the regrettable 'google' typo, there is nothing in my post along those lines. Check it again.
It is most definitely against the adsense policy to encourage users to click in any way besides showing the ads more prominently.
Stephen Jones has a point be cannot be ignored.
I think the site visitors in question simply have *less* money, but they are easier to reach because the articles are specially tailored for them (the publisher knows the issues that are important to them). However, 99% can't spend this *less* money they have thru the net; they can't buy the advertisers' products.
The publisher in question will probably be stripping off the ads so he can save his sanity while he tries other approaches to supporting the site.
Does anyone have experience of psychological problems in the office ? Ideally in this situation you would try to help the person, but how ? what if they dont want to be helped ? References & resources are welcome.
To be clear, this is a bit more than an antisocial developer whos a bit grumpy and needs a bath. In the situation that I have in mind, the person has undergone a change in attitude and personality over a few months from meek/passive to openly hostile. Performance has fallen. They have become aggressive and un-cooperative. Often, they show signs of being detached socially and from reality. Offers of counselling were rejected aggressively.
Thu 08 Apr | Christopher Wells | I've had experience with them at home. Can you contact the employee's family, if any? Perhaps you should consult a lawyer.
> Often, they show signs of being detached socially and from reality.
A psychiatrist, not just a counsellor, could be needed. It may take a lawsuit or other court order to force a person to see a psychiatrist against their will: which may be more than you as an employer are able and/or willing to engineer.
I don't know what might happen if you insist on a doctor's note as a condition of continued employment.
Thu 08 Apr | Gaius | If this has been a reasonably quick change, then try to have them visit a doctor. There are a number of possible causes, some of which are rather serious, for example aggression is a often a preliminary sign of hypoglycaemia in diabetics. Sudden mood changes can also be associated with hormonal changes, or with episodes of clinical depression or with brain tumours. These are just the high lights the St. John's first aider's course, which basically says "get professional medical help".
Thu 08 Apr | whatever | Boss, is that you?
Thu 08 Apr | Katie Lucas | From experience it sounds like the leading edge of a depressive episode. I say experience: I'm talking more about experience from the inside, but apparently I get very mean when I'm on a downer.
It's also worth mentioning that if they are suffering from clinical depression they're probably not aware of their mood changes. So they can't tell when this happens.
I'm not - I rely on my other half telling me it's the third day in a row you've been yelling at him and then he takes me off to the doctors to get more pills.
I think you need to sit them down and carefully, and QUIETLY explain that their behaviour is atypical and needs checking out. It needs to be done gently because they'll be extremely touchy; oversensitivity to situations is a symptom of Atypical Depression which is one of the main varieties.
Stress will NOT help in the slightest. It'll just make things worse. Ultimatums, threats and bullying aren't going to do anything good. The main thing is that depressed people want the world to go away and stop bothering them. Aggression, withdrawl and self-harm are all different reactions when it won't.
Just be gentle when you do stuff. No sudden moves, sort of thing. Suggest he takes a week off; see how he is when he comes back. Once stress causes get removed, he could improve enough that you can talk to him about long term solutions.
Thu 08 Apr | no name | Gaius beat me to it. If there aren't any obvious causes of the change in behavior, it could be something really serious. There's a very famous example of a mild-mannered friendly student (in San Diego I think) going up to the top of a university clocktower and shooting several people with a rifle. After he was killed by police, an autopsy revealed that he had a brain tumor.
Thu 08 Apr | somebody | Give him a raise and quit nagging him to work weekends?
Thu 08 Apr | | Before we send out the paddy-wagons, it sounds like he may just be disgruntled. Part of what you described sounds like me before I left my last job. Except for the 'detached from reality' part. Don't know what that means.
Thu 08 Apr | Name witheld | A guy I shared an office with recently committed suicide. We had no idea that he wasn't OK -- no mood swings, no unusual behaviour, nothing.
I'd take the change in behaviour very seriously. It's not grounds to fire him, and suggesting he gets a doctor's note probably isn't a productive way forwards. If you are an employer you have a duty of responsibility to your employees, so you need to try and make it known to him that you are concerned, that it's OK -- he won't lose his job, but that he needs to seek professional help. You may also have to contact his family if he won't respond. You also have a duty of care towards the people this guy works with -- is he being *too* aggressive towards them?
But you also need to insulate yourself. Make sure that management know the situation, decide on a way forwards, document it, and possibly get legal advice. Be aware that firing the guy won't insulate you from blame, and may make this guy's situation worse.
Don't feel too guilty about things if they go wrong. People get sick and often won't do the sensible thing (because they're not thinking normally).
Be aware, as another poster said, that if he is clinically depressed, he probably won't know. I went through a bout one dark winter (I think I had SAD). I was aware that it was almost impossible to motivate myself to do even the simplest things -- like get out of bed in the morning -- but at the time I put it down to being tired etc. It wasn't until I read a description of classic symptoms of clinical depression that I realised what had been going on.
Clinical depression (if that's what this is -- there are other possibilities, as another poster said) is *very* common and treatable.
Thu 08 Apr | AnonAnonAnon | Unless you are the boss, stay out of it. If you are the boss, then the best you can do is call them in and tell them their behavior is impacting them and the workplace and they need to get it together.
Then you need to start tracking and recording the behavior so at some point when you let them go you have a record of having discussed it and the affect.
You cannot force someone into counseling, and in the US you cannot fire someone for refusing to go. You can force them into a decision, that makes them resolve the issue or be terminated.
BTW - if they do appear violent and as an employer you knew it but took no action and they become violent in the workplace, you are pretty much screwed.
Thu 08 Apr | Emperor Norton | An organization where I used to work faced a similar situation, and handled it all wrong. Here's what I've learned from that.
I'm not a laywer, and laws vary from place to place, but in the US anyone suffering from a mental illness--or anyone who is *perceived* to be suffering from such an illness--is protected by the Americans with Disabilities Act and other legislation. Taking the wrong steps, even if you mean well, may open you up to a nasty legal situation (assuming your company is large enough for discrimination laws to apply--this varies from state to state).
Make no assumptions. Unless you are trained to diagnose mental illnesses, you have no business even speculating as to what may or may not be going on. It's presumptuous and offensive--you wouldn't like it if your boss decided you were probably suffering from mental illness, right? Furthermore, discussing these speculations with anyone besides your immediate supervisors may result in legal problems for your company and you personally. It is up to the employee to disclose the existence of a disability, and it is illegal for you to inquire about it.
Requiring a doctor's note for him to continue working is discrimination, unless you require a similar note from all of your other employees. Really, doing anything that you wouldn't do for any other employee with a bad attitude can be construed as discrimination--and in many states, an employee only needs to show that it looks like discrimination on the face of it to have a succesful case.
The right way to handle this is to treat the employee as you would treat every other employee--with respect. By law, you have to tactfully 'ignore' your suspicion that the employee is having mental problems, and focus instead on his job performance. Document things like decreased productivity and problems with coworkers. Then sit down with the employee and discuss these things. Leave the door open for him to disclose a problem and request help in dealing with it, but remember that it's not your place as his employer to force him to deal with personal issues. Your responsibility is soley about his job performance.
All of this assumes that you're the supervisor of the employee in question, which, on rereading the original post, wasn't specified. If you're just a concerned coworker, then you just need to do what you'd want someone to do for you: be supportive, be available to help, but ultimately leave any decisions up to him. If you have problems with the coworker that you can't solve, request assistance from management.
Again, I'm not a lawyer, just someone that has seen a similar situation. Google on 'employment discrimination ' and you'll find a lot more about your legal obligations in this situation.
Thu 08 Apr | Kyralessa | While I don't have advice on how to handle it, I second the medical possibility. A family our family knows had a daughter who was in love with a guy who was constantly rude and obnoxious; the girl's mother couldn't stand him. In the midst of their engagement, they discovered he had a brain tumor. After the operation, he turned out to be a nice, sweet guy; he even visited the mother (now his mother-in-law) and apologized for his obnoxiousness.
Oh, and another thought: Is it ragweed season where you live? Allergies can have a major effect on people's moods, as I well know from personal experience: you get short of breath and feel terrible all the time, and you almost can't help but snap at people.
Thu 08 Apr | Christopher Wells | > You cannot force someone into counseling
I don't know whether that's true, but I'd predict it isn't easy; in Ontario, it takes a court order that the person is an imminent danger to self or others, or, is incapable of making an informed decision and needs a substitute decision-maker (a guardian).
Thu 08 Apr | Philo | Okay, I'm taking the attorney's gloves off for this one - this is NOT legal advice.
'By law, you have to tactfully 'ignore' your suspicion that the employee is having mental problems, and focus instead on his job performance.'
Bullshit. Just plain and simple B.S.
Aren't we all still people on this planet? Don't we want to care about each other and others to care about us? This is not a malfunctioning piece of equipment - it's another person in the office who may just need an ear or a shoulder.
The CARING thing to do is to talk to the person. Address them as a person and ask if they're alright. If it's a peer, treat them as a friend - 'Hey, is everything alright? Is there anything you need to talk about?' You can stay in proximity without being a pest.
If it's a subordinate, ask the same questions. You could even open yourself up, if you think it's appropriate - 'How's work going? Are you stuck on anything? Is there something I can do to help out?' You can be supportive without being confrontational.
Now if his/her work performance starts to decline, then you get into the legal arena of having an HR rep and perhaps legal in the loop, but you can still be supportive without being threatening.
Use your best judgement. If you're unsure of your footing, talk to HR or legal, but be advised that that can often start machinery you don't want running. But if you're going to start taking actions that may impact the company or could lead the employee to believe his/her job is in jeopardy, then you really should have HR and legal in the loop.
Philo
Thu 08 Apr | Kyralessa | 'The CARING thing to do is to talk to the person. Address them as a person and ask if they're alright. If it's a peer, treat them as a friend - 'Hey, is everything alright? Is there anything you need to talk about?' You can stay in proximity without being a pest.'
If you're not already the person's friend, I daresay he won't react well to you acting like his friend because you're so concerned.
Thu 08 Apr | Must be a manager | Anonymous, I think you're the problem, not the person you accuse of being of having 'psychological problems.'
First, your underlying view of this person seems to have been contemptuous ('antisocial developer who's a bit grumpy and needs a bath').
Second, although you complain that the person become strange, you provide no markers of the context in which it occurred, or the nature of the unusual behaviour.
Third, you refer to 'performance' factors, which suggests you are a frustrated and probably incompetent manager. You tell us he or she has become 'openly hostile.' You tell us also that you were so arrogant as to try to organise counselling, without having reasonable professional grounds to do so.
Anonymous, when intelligent people start to understand that their managers are trying to make them do stupid things, reactions vary from resigned acceptance to avoidance to hostility and aggression. Those reactions will occur especially if managment provides no genuine avenues for feedback, and even more so if management attempts to classify disagreement as 'psychological problems.'
You should have a talk with your own manager about some management training.
Thu 08 Apr | in a nutshell | '''Aren't we all still people on this planet? Don't we want to care about each other and others to care about us? '''
Yes, but we are a people that is disposed to egoism and legalism. Too many lawyers, too much Ayn Rand.
Thu 08 Apr | Emperor Norton | ''By law, you have to tactfully 'ignore' your suspicion that the employee is having mental problems, and focus instead on his job performance.'
Bullshit. Just plain and simple B.S.
Aren't we all still people on this planet? Don't we want to care about each other and others to care about us? This is not a malfunctioning piece of equipment - it's another person in the office who may just need an ear or a shoulder. '
Philo, I think you're taking that statement out of context. In terms of employment and workplace environment, you can't make decisions based on the suspicion that a disability exists, nor can you inquire about it. That was what I was getting at in the statement you quoted above.
Of course you can offer an ear or a shoulder. That's basic human courtesy and nobody's going to get upset about that. But there's a line where those offers cross the line from being polite to being presumptuous.
A fair comparison is to a wheelchair-bound employee. An offer to open a door or get something from a high shelf is friendly. Always offering when the employee has made it clear that they'd rather open the door himself is inappropriate.
Likewise, if an employee with an apparent mental illness has made it clear that he doesn't want your help (as in the original question), it's not an employer's place to force help on him.
Again, I'm not a lawyer, but the attorney gloves are off anyway.
Thu 08 Apr | no name | Why invoke the lawyer as the expert here, anyway, just because Philo does it to flatter himself.
Philo, you're not a psychologist, workforce arbitrator, or workforce manager. Those are the more relevant criteria of expertise.
Thu 08 Apr | genius | Offer a month off...
Fri 09 Apr | anon | Now you've got us all hooked on this soap opera, make sure you let us know the outcome, won't you?
I'm betting on a stressful situation at home. In these days of job insecurity, most employees would be afraid to ask for time off - and frightened if it were offered without reassurances.
Our applications produces CDs with some data and an application used to view the data. We have two versions of the applications on the CD, one for MacOsX and one for Windows. On Windows the programs starts automatically with an autorun.inf file.
How is it possible to make a CD autorun on MacOs X?
Thu 08 Apr | Lou | I don't think there is a way to do that. However MacOSX does allow you to set a background image (you can even use a pdf) so you could create a nice welcome screen at least.
Fri 09 Apr | yesman | Yes, no autostart on OS X and the users are better off with that. You can arrange the root directory of the CD in a nice fashion and let the users start it themselves.
My system and a few others here have been infected with this worm.
http://www.sophos.com/virusinfo/analyses/w32sdbotce.html
I followed all the steps mentioned on that webpage and cleared the startup entries from the registry, yet the files copies itself to the \sys32 folder. When I reboot, the VC++ IDE fires up (coz this babys written in Win32 API as the URL reports).
Ive tried looking for more information for removal of this worm but sadly, Google returns only a handful of links, some of which are in foreign languages I dont understand.
Is there some FREE vaccine/patch I can get for this worm?
Thu 08 Apr | r1ch | Symantec is normally pretty good for this, but they seem to have named the variants of SdBot differently:
http://search.symantec.com/custom/us/query.html?col=&ht=0&qp=url%3A/avcenter/venc/data+url%3A/avcenter/venc/auto/index,+url%3A/avcenter/security/Content&qs=-url%3A/sarc-intl.nsf/+-url%3A/navintl.nsf/&qc=&pw=100%25&ws=0&la=en&si=0&fs=&qt=sdbot&ex=&rq=0&oq=&qm=0&ql=&st=1&nh=10&lk=1&rf=0
Thu 08 Apr | Sathyaish Chakravarthy | Thanks.
Thu 08 Apr | Erehwon | Sathyaish, why do you just want a vaccine for free?
I guess you don't live in the States, so obviously you need to stage a revolution, embrace the free market system, blah blah etc.
:-)
Thu 08 Apr | Pet Peeve --> Those who don't run security software and then complain | I presume you weren't running anti-virus software. As such, you should not be wasting everybody's time with these posts.
Fri 09 Apr | pds | F8 on startup, go into safe mode, find the EXE file, delete it. Then do the rest of cleansing at your leisure.
As always, my five-point plan for system disinfections goes:
1. Get the internet running, somehow (this is tricksy)
2. Firewall -- XP firewall if available, ZoneAlarm if they're not running XP.
3. Spybot/AdAware
4. AVG freeware antivirus
5. Run windowsupdate until all critical updates are up to date.
(6. Reset the IE homepage)
Fri 09 Apr | pds | I'll give this an acronym: FLAW, as in:
'Firewall, Lavasoft, Antivirus, Windowsupdate.com'
We could then use cool (i.e. awful) article titles like 'Is your computer FLAWed?'
Fri 09 Apr | Erehwon | pds:
You the shizzle, baby!
Ive read the following thread (Delphi for ShrinkWrap Desktop Applications ) with great interest :
http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=108401&ixReplies=40
Interesting Article too : http://www.lemanix.com/lemanix/lemanixisapi.dll/Entry?ID=1167
According to many opinions Delphi seems to be best tool in terms of productivity an ease of deployment.
I may want to try Delphi for the shareware Im going to develop, does a program developed with Delphi 7 will work on the next MS OS (LongHorn ?)
Or will it required to be ported to Delphi 8 (with .NET support)
Is it still worth investing 6 months (spare time only)
dev time for a shareware using Delphi 7 ?
Thu 08 Apr | Patrik | If 6 months of spare time is worth it is hardly a question this forum can answer. Ask yourself thtat. Are you prepared to devote that time?
As for using Delphi, what programming language are you currently using? ... Delphi is a very good language to develop shrink-wrap software in, but ultimately you pick the language that makes you most effective.
If you have to learn a new language, you will not finish a good quality shareware application in 6 months or less anyway.
Thu 08 Apr | Sum Dum Gai | If you're capable of finishing an app of sufficient quality that many people will be willing to pay for it in 6 months, choice of language should be no barrier. Anyone that talented should be able to pick up something like Delphi in a week. It's just not that difficult to learn if you've done any amount of programming before. Most languages aren't.
Thu 08 Apr | MX | > does a program developed with Delphi 7 will
> work on the next MS OS (LongHorn ?)
> Or will it required to be ported to Delphi 8
> (with .NET support)
The official Microsoft line I heard at conferences is that:
- Longhorn will have .NET as it's main API
- Win32 will be available, but from a Win32 program you won't be able to access all the new features of Longhorn
Now, here is what I think:
Microsoft can not afford to abandon Win32 API.
The abundance of applications on the Windows platform is one of the strongst selling points of Windows.
This is why OS/2 failed - Windows had many apps, OS/2 had very few. This is why most people don't use Linux.
Now, if MS decides that from Longhorn on, many Win32 applications won't run - many of their customers may switch to Linux, or Lindows.
So, I develop for Win32 today, and don't worry about the future, because I think that for MS, kicking Win32 applications is like commiting suicide.
Yes, the new .NET in Longhorn will have some more features.
However, the many third Delphi components that are available today are a hell of a lot more than Longhorn will be, and are deployable today on Windows 95, 98, 2000, XP and 2003.
Thu 08 Apr | Mr. Analogy | 'So, I develop for Win32 today, and don't worry about the future, because I think that for MS, kicking Win32 applications is like commiting suicide.'
Very very true.
Thu 08 Apr | Brad Wilson | '- Longhorn will have .NET as it's main API
- Win32 will be available, but from a Win32 program you won't be able to access all the new features of Longhorn'
Flashback:
- Windows NT and Windows 95 will have Win32 as its main API
- Win16 will be available, but from a Win16 program you won't be able to access all the new features of 32-bit Windows.
Ooh, an even better one:
- Windows will have Win16 as its main API
- DOS will be available, but from a DOS program you won't be able to access all the new features of Windows.
Even better: Unlike in the DOS to Windows and Win16 to Win32 transition days, the .NET development tools are available for free for anybody who wishes to download them. I recall staring longingly at the Windows SDK at SoftWarehouse (now CompUSA) when it was $385, and entirely out the reach of my adolescent allowance.
So, sell me again on why you think Microsoft can't make this transition successfully?
Thu 08 Apr | MX | Microsoft CAN and WILL make this transition successfuly.
But it will take more than 5 years or so.
Thu 08 Apr | Ori Berger | Python is often neglected as a choice, but it is extremely viable. BitTorrent, which is among the most popular programs lately, is written in Python.
Deploying a Python app is probably comparable to Delphi - both py2exe and McMillan's Installer will pack a Python program into one directory (or even one .exe) independent of anything else. It'll cost you some 1meg or so in runtime size, depending on what components you're actually using (200k minimum, but I guess 1 meg is typical).
Definitely simpler to deploy than Java client apps, and (still at this time) .NET; Plus, you get the benefits of an IMHO much better language, and what is probably the most portable environment available (The original 'CPython' itself is widely available, but there's also Jython, which targets the JVM, and IronPython, which targets the .NET CLR and though it isn't yet complete, it shows great promise)
Thu 08 Apr | MX | In my opinion, Java is not a much better language than Python or Delphi.
Yes, it has some small improvements over Python and Delphi, but also has disadvantages.
Thu 08 Apr | Richard P | Other than curly braces, what *language* features give Java an advantage over Delphi?
Checked exceptions?
Java-the-platform has a few advantages over Delphi, almost none of which apply to writing Win32 Shareware.
Thu 08 Apr | Ori Berger | I don't think anyone advocates Java for win32 client side, either the language or the platform in the last 5 years or so. SWT may change that eventually, but it hasn't done so yet.
My list: Python. Delphi. C/C++; In that order. (And/or K, APL, Lisp, but that's a different discussion).
Fri 09 Apr | MX | Richard, you are right.
Java is a 'bondage and discipline' language.
This is a big advantage in some contexts - for example, when you are working in a large enterprise, with many teams writing different programs which access the same database, etc.
However, for shrinkwrap software development I belive Java has more disadvantages than advantages.
Ive noticed that some libraries go to great lengths to ensure pass-by-value semantics for strings and other non-scalar pieces of data.
The common situation is this: you have a data structure; you have functions to manipulate the data structure; you have a function to store a string within this data structure—should it just store a pointer to the specified string, or should it copy the entire string and save a pointer to this coppied string instead, ensuring that any modifications made later on to the supplied string wont affect the one stored in the data structure?
One the one hand, total encapsulation is very nice, but on the other hand, needless dynamic memory allocation is not.
Preference?
Thu 08 Apr | Almost Anonymous | 'Preference?'
If you use something like the STL string class then you get the pass-by-value semantics without the needless dynamic memory allocation.
STL strings are copy-on-write; so you can assign one string to another without incurring any penalties until you modify one of the strings (at which point, the copy is made). In C++, it's pretty easy to roll your own copy-on-write system for any type of data.
Thu 08 Apr | Jon Hanna | Are you sure STL strings have to be copy-on-write? I know they often are, but is that actually mandated in the standard.
Anyway, I agree that an STL implementation is a good place to look to learn how the technique works.
Thu 08 Apr | Sum Dum Gai | Nothing in the standard says they're copy on write.
In fact, most implementations are NOT copy on write, as it's a disaster for performance in a multi-threaded environment (all that locking going on for all your strings).
As I recall, it's also very hard to do a good copy on write implementation anyway, as you can store references to characters within the string (eg by using the [] operator). So you basically have to be very conservative about what you consider a write, which also destroys much of the benefit.
Thu 08 Apr | Mr Jack | The standard does not specify how a string class is to be implemented.
Thu 08 Apr | Keith Wright | MFC's CString is copy-on-write, for what it is worth.
Thu 08 Apr | Brad Wilson | Immutable strings are a much better option.
For the original poster, 'faking pass by value for pointers', the answer for C++ is to use a const reference and don't modify the thing. Who in their right mind uses C anymore? :-p
Thu 08 Apr | Keith Wright | Also, auto_ptr is there to put a pointer on the stack, and clean it up if it goes out of scope, unless the pointer gets assigned to another object. Terribly misunderstood object, it is, but it can be pretty useful. You can allocate new memory and return it from a function, and not have to worry about whether someone saved the pointer or not. Helps in making exception-safe code, too.
Thu 08 Apr | MikeMcNertney | Having the structure copy the string tends to be safer and more flexible. It allows the user to pass in a const char* or even a literal constant string, without worrying about how the string is used. The structure knows that it has allocated the string and that it is responsible for freeing the string.
When a structure is taking ownership of a pointer you give it, this needs to be made absolutely explicitly clear in the interface. I'm sure this is the source of a lot of bugs and complications.
Both ways work, it depends on what you need. For strings I generally copy them in my structure. For pointers to other structures, I tend to just store the pointer (though obviously it depends on the use)
Thu 08 Apr | Almost Anonymous | 'The standard does not specify how a string class is to be implemented.'
Good point. I had to build my own copy-on-write string class (for a C++ platform w/o the STL) and I found most of the implementation details by looking up information on the STL string class.
Fri 09 Apr | Tito | The C++ standard does not require COW (Copy On Write) strings in any way. In fact, from what I understand more and more STL implementations are moving AWAY from COW.
The benefits of this are far less than is typically imagined. For really good reading on the topic see Herb Sutter's 'More Exceptional C++'. Appendix A and B have performance statistics for different implementations of string, and COW actually ends up hurting more than helping in a lot of cases. (Particularly when dealing with multithreaded programs, because the cost of locking outweighs the benefits of saving the copy)
Use 'const std::string&' where you can to avoid needless copying.
Of course, not until Whidbey or VS 2005.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncode/html/secure03102004.asp
Wed 07 Apr | Kassel v. Consolidated Freightways Corporation | If you still use strcpy(), strcat(), strncpy(), or strncat(), then you have no business writing C code.
For static buffers, I always use strlcpy() and strlcat(). Fase, easy, and fast.
http://www.courtesan.com/todd/papers/strlcpy.html
Wed 07 Apr | Dennis Atkins | MS is making the right decision, absolutely. strcpy should have been deprecated long ago along with scanf and all the others. Any review of strange code should include a search for all these functions and elimination of them.
Wed 07 Apr | Dennis Atkins | Hm, that's interesting about strncpy. I have a wrapper of it myself that always puts the NUL at the end because I did note the bizarre point in its doc that it does not always truncate (doh how stupid is that anyway obviously a bug bf Dennis Ritchie that should have been fixed don't tell be that someone relies on that behavior). However, I am quite skeptical that all strncpy's fill the remainder of the string with NULs; I have never heard of that. Seems to be precisely less than useless when coupled with the behavior that at least one NUL is not guaranteed.
Wed 07 Apr | A small white object. | http://www.opengroup.org/onlinepubs/007908799/xsh/strncpy.html
'If the array pointed to by s2 is a string that is shorter than n bytes, null bytes are appended to the copy in the array pointed to by s1, until n bytes in all are written.'
Thu 08 Apr | a2800276 | The filling up with NULs is mandated by ISO C.
I imagine the reason for strncpy not NULL terminating the destination buffer is a feature and not a bug. It allows you to copy arbitrary buffers (as long as you know their length) and not only null-terminated strings. I would think that a number of strncpy implementations use non-portable tricks to provide faster copying than the standard 'while (*dst++=*src++)' idiom.
-tim
Thu 08 Apr | fw | Actually, what bugs me is, oracles pro*c precompiler changes strlcpy and strncpy to strcpy. In fact, it removes the line argument in the function too, so it must be aware of it removing this, so I have to run it through my post-oracles-precompiler , annoying.
Thu 08 Apr | sedwo | What about the 'mem...' functions then?
memcpy, memmove?
Is there a site that possibly profiles all these 'string.h' functions in some comparison table?
Thu 08 Apr | Sum Dum Gai | strcpy has its uses. You just have to be very careful where and how you use it. Not every use is a possible buffer overflow. Worrying too much about it misses the point: the safe functions also have to be used carefully and correctly or you'll run into problems with them too.
Additionally, not every program written needs to be bulletproof secure. Sure, if you're writing something that's going to run as a service on some internet connected machine, you need to worry. If you're writing a quick 100 line hack that's only ever going to run on your own machine, there's no shame in using strcpy. It's the simplest function for copying C stryle strings from A to B!
I worry about the 'silver bullet' idea that you can just use a safer function and never worry about buffer overruns. So long as you're using C or C++ or some other language with unchecked buffers, you always need to worry about buffer overruns. That's the nature of the beast.
Thu 08 Apr | Clay Dowling | I would like to point out that those deprecated functions can be used safely, when string lengths are known, properly sized buffers are used, and the programmer takes pains to ensure that there is a terminating NULL. It's a nuisance that the replacement functions make easier, but the business of calculating the length of strings to make sure you allocate a big enough buffer doesn't really go away. They just make sure that you won't overflow and you will be NULL terminated.
Thu 08 Apr | Tito | You can say 'use it correctly' all you want, but using strcpy correctly basically results in you rewriting strncpy all ofer the place.
As for 'quick one off' applications, those have a nasty tendency to grow dramatically get reused for years later. Using strncpy takes about 10-20 seconds longer, and makes the code safer. (Again, this is hardly sufficent to fix the problem, but it definately helps.)
As for C++, the problem there is that people are still treating it like C that has this funny 'class' keyword. Use exclusively string classes (std::string, etc) and you will take care of the issues.
Thu 08 Apr | Sum Dum Gai | Nearly every C++ program in the real world has to deal with C libraries that expect C style strings. You can't just use std::string exclusively, so it's still a very real issue for C++ code.
As far as small programs becoming big programs, I guess it depends on your attitude. I'm a 'cross that bridge when we come to it' style guy, I find that I'm more productive that way. Other people may be best served by doing more forward planning if that suits their style. For me though, I'll deal with the code being safe when it becomes production code, and not before, as I find it's a time consuming waste if you don't need it. I only bother up front if I KNOW it's going to be production code to start with.
Thu 08 Apr | Dennis Atkins | 'oracles pro*c precompiler changes strlcpy and strncpy to strcpy'
Are you serious? So Oracle basically takes code you have carefully written to be secure and automatically inserts security holes into it? Sems this would have interesting liability issues...
Thu 08 Apr | Dennis Atkins |
Isn't NULL pointer sized and NUL character sized?
Thu 08 Apr | Dennis Atkins | I understand clay's point but agree with Tito - strlcpy should be used with sizeof(bufername) when fixed size buffer is involved. This is because buffer lengths have a tendency to get changed during maintenance, as do constant string lengths. Any 100 line program written by you today is a candidate for changes three years from now when the programmer who wrote it is not around and the code needs to be translated into Cherokee.
Thu 08 Apr | no name | template <class T> T NULL() { return static_cast<T>(0); }
Thu 08 Apr | Dennis Atkins | Are you serious? Is that from a real C++ distribution? If that is really the official way to write 0 in C++ I am going to delete my C++ compiler and go live in the wilderness, husking cocoanuts.
Fri 09 Apr | Tito | That is definately not the 'official' way to write NULL. It's still #define'd to be 0.
There is a known issue regarding NULL vs 0 (zero) and when it is treated as a misc ptr and when it is treated as an integer type. It is under discussion for the next meeting of the standards committe.
Reference the Stroustrup & Sutter reccomendation:
http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2004/n1601.pdf
As for C++ using alot of C string functions, that happens alot more in older code. STL provides alot of functionality making relying on the C libraries unneccesary. Of course there will always be existing code that uses it, but it is definately possible to write new code without using C style strings anywhere. One of the big reasons that the old C style functions get used is that alot of people are already know those.
Fri 09 Apr | MikeMcNertney | 'For me though, I'll deal with the code being safe when it becomes production code, and not before, as I find it's a time consuming waste if you don't need it. I only bother up front if I KNOW it's going to be production code to start with. '
I can understand that attitude, but it is this idea that 'I will retrofit security in later' that is the main cause of so many security problems today.
Its my turn and first time on our customer service rotation (we sell downloadable apps with reg codes). And we seem to get flooded with people wanting our stuff for free... How can I get it for free?, I dont have a credit card, please send me a reg code, I work in a school, can you send me a free version?, I bought it and got this code [completely bogus code, no record of sale, etc] but it doesnt work, send me a new code... and on and on.
And it always seems to come from 2nd and 3rd world countries -- dont they teach the concept of goods and services in these places?! Did someone once email SEND CODE ME PLEASE NOW and it worked, and now theyve told all their friends??
Is it just us, or is this normal in the downloadable/reg code business? (How depressing...)
Wed 07 Apr | Joe Blandy | People want things for free for probably the same reason you aren't doing that job for free.
Wed 07 Apr | apw | 'cause they're used to getting handouts, and now it's expected.
Wed 07 Apr | Insert half smiley here. | You're seeing the lack of broadband, perhaps? I suspect everyone in the developed world just used Kazaa.
Wed 07 Apr | My Cousin Vinniwashtharam |
too stupid to figure out usenet binaries newsgroups
Wed 07 Apr | Michael H. Pryor | People do this on our shop every once in awhile too. One of the payment options is 'Check', so they somehow think if they choose that, they'll be able to download the software immediately and tell us the 'check is in the mail'. So they fill out the form with bogus data and then try to click around trying to download the software.
I guess the idiots of the world just tend to think the rest of the world is full of idiots also.
Wed 07 Apr | Mihai | I live in a 3rd world country. I also sell downloadable software, like you, and did customer support, like you.
In thirld world countries:
- people don't have credit and debit cards (banks simply don't issue credit and debit cards)
- the average wage may be $100-$150 per month, people barely survive, so they can't afford to buy software
- there is massive piracy, so people don't view software as something you buy
Wed 07 Apr | Lee | Mihai - I don't mean this as trolling; I'm just curious: do you purchase your software?
Wed 07 Apr | Mihai | Also, there are a lot of people who ask us idiotic tech support questions.
Most of the time I have their name, e-mail address and, if they have bought the product, also their country and full address.
I'm sorry to say that 90% of the users asking idiotic questions are from the US. They are people living in the US, with names indicating English heritage, so they are not immigrants.
I can understand the fact that they are not computer-literate. This is ok.
But, most of them live in the US, have an English name (like 'John Smith', for instance), yet they have extremely poor grammar, very poor spelling, illogical sentences lacking verbs or made of just verbs, etc.
This - I can't understand.
You tell me that most retarded messages are from third-world countries.
I tell you that 90% of the retarded support messages I get are from the US.
Messages with lots of highly illogical sentences, extremely broken grammar and spelling, from people in the US, with an English name, and with access to a credit card.
Wed 07 Apr | Bofix | Well I live in a 2nd world country :) but I completely agree with Mihai.
Wages here are quite low and something like $20 is really too much. But that's nothing.
If only someone decides to pay it becomes hard. Credit Cards are quite expensive.
Let me explain it as if the wages were like in USA.
Getting a CC will cost $2000 and you would had to have $5000 in the bank just lying there. So compare this to the often free credit cards you got. Compare this to the fact that even if you get a credit card there is a great chance that it is rejected only because it is issued in a 3rd world country!
So may be the perspectives are a bit different.
Do not judge that harsh and quick.
Wed 07 Apr | SG | Hey now -- our economy is based upon stupid people with credit cards!
Wed 07 Apr | Mihai | Lee, when I was a student, I pirated all the software I used.
Now, as a developer, I buy about 70% of the software I use.
But I am able to afford this only because the business I have (together with several associates) is going well.
My aim is to buy 99% of the software I use.
Unfortunately some software is still too expensive for me.
As I am a developer myself, I understand that software is produced by long hours of very hard work. That work must be rewarded - and this is why I buy software.
Wed 07 Apr | Mihai | Also, I understand the feeling one feels when he sees his software - the product of many hours of hard work - published for free on a crack/warez site.
Our software has been cracked and distributed illegally several times, so I know how it feels.
Wed 07 Apr | whatever |
'Our software has been cracked and distributed illegally several times, so I know how it feels. '
...and probably by those same, illiterate, stupid Americans you mentioned in a previous post.
Wed 07 Apr | Mihai | Most of the "crackers" are from East Europe.
Wed 07 Apr | josReader | Isn't this expected behavior. The customer wants to get a product for as cheap as possible (free), and the seller wants to sell the product for as much as possible.
Whats wrong for asking for a free copy? Its not pirating if the company gives it to you for free. The worst the company can do is say no.
In some countries, the price of things are negotiable. Would it be surprising then, that people from these countries would attempt to negotiate a better deal on a software product.
Wed 07 Apr | tapiwa | Two things....
1. Why do folk want free stuff
The one thing that humans try to do is to maximise utility. More often than not, getting any sort of utility will cost you $$. Given a limited supply of $$, the one way to increase utility is to increase the amount that one gets for every $$. If one reduces the cost of each utility unit to $0, then by definition, one has found nirvana ... infinite utility for a cost of $$0.
2. Third world
Its not all about people not wanting or being too poor to pay. Sometime they want to pay, they can pay, but their money is in the wrong currency. A freely convertable currency is something people in the 1st world take for granted.
Even in fairly developed places like South Africa, most of the credit cards issued (and there aren't too many of them) can only be used in SA, and cannot pay for foreign transactions.
Imagine being told that you were only entitled to $100 in forex per year. When that runs out, you can't buy anything from abroad anymore. You might want or be able to afford more, but tough. And no, you can't transfer your entitlement. If you are enterprising and export, we might let you keep a small portion (25% not unusual) of it in forex. The rest of it you have to sell to the government at a rate that we determine!!
I would postulate that if companies in the US started accepting gruby notes (us$$) in unmarked envelopes, sales to most parts of Africa would increase. The money is there (sometimes). You just can't get it out legitimately.
Wed 07 Apr | Hate People Already | Bofix and Mihai -- I know they don't have credit cards and/or can't afford it, that's not the issue.... The issue is where do they get the balls to ask for it for free? Why do they even think we would give it to them?? I mean, nobody goes to a car dealer and says 'I can't afford that car, can I have it for free?'
But I think somebody said it above, they must be used to free handouts. Well, it's time to join the rest of the civilized world, people!! If you can't afford it, work hard, study hard, start a business and make enough money so you can!
Though I agree a lot of Americans are morons, too. Last week I had a bizarre series of emails over several days which were in all-caps, each a single paragraph that was just strings of completely abstract, disjointed thoughts separated by ellipses (10 or 15 at a time). Finally he called in, and it turns out he was a completely lucid, normal, pleasant person who could communicate clearly.
This is why I got into programming! So I wouldn't have to deal with the customer!!!
Wed 07 Apr | Hate People Already | Sorry for my rant! Those are all good points above.
Wed 07 Apr | no name | That's hilarious. It reminds me of that skit on the new SNL with the mango guy jabbering on incoherently.
Wed 07 Apr | George Illes | Some time ago I ran across a site that offered a pretty neat screen shot app, from a company in Austria. It didn't cost much, but was more than I would pay. While surfing the site I noticed that there was some kind of barrier to purchasing the product online that may have turned off some potential buyers. I can't recall it now, but the barrier was clearly unintentional, and so I fired off a short e-mail to the company bringing it to their attention. On a whim I added that since I was such a nice guy to bring it to their attention, maybe they'd consider sending me a free copy!
Later that day they did just that.
I suppose fielding multiple requests for a free product can get old an frustrating. But, frankly, negotiation is quite common in all societies. The worst thing that can happen is you're told 'no'.
Bear in mind that 'No' is just a request for more information.
Wed 07 Apr | James B. | 'This is why I got into programming! So I wouldn't have to deal with the customer!!!'
So you have no people skills?
Wed 07 Apr | apw | George,
What you did was negotiate. Your time and thought for thier product.
These people, on the other hand, demand free stuff without anything in return.
Wed 07 Apr | son of parnas | >Though I agree a lot of Americans are morons.
I am eager to learn about the country without morons.
Clearly you don't live there.
Wed 07 Apr | Mihai | When somebody asks us for a free license, sometimes we give it to him, especially if he or she helped us in some way - for example, by telling us which part of our web site needs improving, by reporting bugs, etc.
If you get bug reports from someone using a trial version, my advice is to give him a free license. In about 30% of the cases you will get more bug reports or useful comments from the same person.
About selling software in 2nd world and 3rd world countries: this can be done, if you:
1. lower the price a lot
2. Have good copy protection.
It is best to localize the software to that country's language, because people in such countries pirate a lot, and if the version you give them is in English, you may find such a version of a pirate download site.
3. find a way to get the money from the customers
Of these 3 points, point 3 is the toughest. You (from the US) have no way to collect payments from them.
And if you have such a way (for example Western Union is usually available), there is a lot of hassle. For example, for WU (Western Union) you have to go to WU in person to collect the cash. Or maybe the WU in the US does it differently.
Paypal also doesn't accept accounts from these countries.
Wed 07 Apr | Mihai | Instead of:
version of a pirate download site
I meant:
version on a pirate download site
Wed 07 Apr | Hate People Already | Parnas -- I'm American as well, and I say a lot of Americans are morons based on my whole two weeks' experience answering support emails (and 20 years' experience driving on roads).
Though I guess most non-morons just figure things out themselves, and tend not to contact support. So you full-time customer support reps, I feel for you!
Wed 07 Apr | Mark Hoffman | 'Though I agree a lot of Americans are morons.'
Stupidity has no borders.
Wed 07 Apr | Mike | Ask a linux user
Wed 07 Apr | spammer | I worked in an American school for a while. This isn't an industry that pays a heck of a lot. I can only imagine how little spending money people working in schools in third-world countries have.
Wed 07 Apr | Alex.ro | >> Hey now -- our economy is based upon stupid people with credit cards!
Haha! How true!
*Credit* cards, mind you, not cash. :):)
OP -- why are they asking? Maybe they figure, 'a thousand people buy this thing, can't they give just one free copy to *me*?'
Unfortunately such thinking plagues every moron, hence the appearance of uniform moronity.
Is that a word?
Wed 07 Apr | Alex.ro | And... of course I buy all my software. It costs a solid $1.50 a piece.
Wed 07 Apr | Stephen Jones | The lack of a credit card is more common than you think. I have a reasonable salary (it was even reasonable by British standards until the dollar went into freefall) but and a solid job but it was only about three years ago that I was allowed a credit card anywhere, and only a year ago that i would not have had to deposit a couple of thousand dollars to get it.
And as I don't really want one (I'd only use it for buying books and software online anyway) I haven't bothered. And if I had bothered, it is quite likely it would not have been much use. For example if I ordered books from Amazon I would want them shipped to my address in Sri Lanka, but as the credit card would be issued in Saudi the transaction would probably be blocked.
As to why they ask, the answer is simple. Unlike asking for a free car or a free lunch, your granting them the software for free actually costs no more than your refusing it. So, why not give it a try?
Wed 07 Apr | Kyralessa | 'And... of course I buy all my software. It costs a solid $1.50 a piece.'
Ah, but in lei, that's tens of thousands.
Wed 07 Apr | Hey | > 'This is why I got into programming! So I wouldn't have to deal with the customer!!!'
> So you have no people skills?
If you have real people skills, you're able to avoid jobs where you have to deal with complaining or dumb people.
Wed 07 Apr | Hey | > Hey now -- our economy is based upon stupid people with credit cards!
No. It's based on greedy arseholes who exploit trusting people who take out credit cards.
Low income people often end up losing even more of their tiny income by paying high interest rates on balances they can't pay off, and then on paying penalties for going overlimit and missing monthly payments.
Wed 07 Apr | Alex.ro | Kyralessa ;) ;)
Wed 07 Apr | Charles Darwin | 'Low income people often end up losing even more of their tiny income by paying high interest rates on balances they can't pay off, and then on paying penalties for going overlimit and missing monthly payments.'
Yes, that is indeed the plan. It's not my plan - I just thought of it first.
Wed 07 Apr | christopher baus (www.baus.net) | > As to why they ask, the answer is simple. Unlike asking for a free car or a free lunch, your granting them the software for free actually costs no more than your refusing it. So, why not give it a try?
That of course assumes your time is worthless.
Wed 07 Apr | christopher baus (www.baus.net) | Let me add: your time, bandwidth, and captial used to create the product and distribute it are valueless. Like the movies, production costs are high. Distribution costs are low. More people assume value in hard assets. When you buy a book you are not buying paper, you are buying content.
Wed 07 Apr | Dennis Atkins | Hi Mihai,
You mention that you buy about 70% of the software you use. Does this include the software you use for development or are you talking about the software you use at home, like games?
Like you, I develop software. I also pay for all my software and have no pirated software.
I wonder if it is a competitive advantage to not buy the expensive software. If I start downloading development tools from Kazaa instead of paying tens of thousands of dollars a year for licenses, I am sure that I would be able to provide much lower bids on contracts and thus be more competitive against some of the overseas competitors. Any little bit of lowered costs would help, correct? What is your advice? Do you recommend I stop paying for 30% of my development tools?
Also, is the 30% you don't pay for the more expensive tools? How many $ do you spend per year in buying tools vs how many dollars of tools do you use but not pay for.
Thu 08 Apr | Mihai | Dennis, yes, if you stop paying for software, you will be more competitive. But that is the wrong thing to do.
You accuse me that I pirate about 30% of the software.
Please don't tell me that the US and Western Europe have a 0% (zero) percent of piracy.
I have worked in Germany as a developer, and I know it isn't so. They buy most of their software but they, too, pirate some software.
Also - it's not my fault that I was born in a shitty country where the average wage is about $150 per month.
In Germany, for example, a guy can work as an untrained worker in a car factory, and still afford software.
In my country, a guy can learn a hell of a lot, be in the top 1% at university, get a master's degree, then work like hell for a company, and get a salary of maybe $300 a month, and still not afford software.
People in my country work for 10 years or so in order to afford a car which is bad and breaks all the time.
Tell me in which way this is my fault.
Also, do you think that you are morally superior because you were born in a country such as the US or Germany, in which one can be a bum and just have high school, and then go to work in a factory, and still have access to credit cards, a decent car, and afford software?
In which way are you morally superior?
Also I'd like to tell you this:
It is not my fault that, at the end of WW II, Soviet troops invaded my country and most of the countries surrounding it and forced us to be a communist country.
Communism destroyed the economy. But at that time, most of the people of my country did NOT want communism, and fought against it.
Most of the Eastern Europe countries did not want communism. It came to us on Russian tanks and was forced upon us by the countless hordes of Soviet soldiers.
Thu 08 Apr | Dennis Atkins | 'Tell me in which way this is my fault.'
Well, why don't you overthrow your government?
Look if your country is such a hellhole, why don't you work to make it a better place instead of looking out for #1 and going for the job that pays the most money and just furthers the powers that be, the man that is oppressing you?
Here in the US, we were considered a bunch of hicks and uncivilized barbarians for years while europe had their barons and kings and gentry and all those folks looking for the easy life. I think many of your posts have upheld this view europeans have of slamming and looking down on americans every chance they get. So we werk hard for 200 years and it finally paid off. Now everyone is complaining because the barbarians from the lowers classes turned out to be smarter than the kings and barons.
Thu 08 Apr | Dennis Atkins | 'It is not my fault that, at the end of WW II, Soviet troops invaded my country and most of the countries surrounding it and forced us to be a communist country.'
Well it's your grandparents fault then.
The state of New Hampshire has a state motto 'Live Free or Die'. Patrick Henry said 'Give me Liberty or give me death.' If your grandparents were willing to fight for their freedom they could have had it. but they were not and so you got communism. The US did not ginve you communism, the US has fought communism, despotism and tyrany worldwide when no one else gives a crap. And when we do, people scream and complain, braying to once again suckle at the teat of their tyrants.
Stop whining and being a baby. Be a man. Overthrow your government. But you won't because your country is full of whiney children who refuse to accept responsibility for their actions or fight for anything they believe in. Instead 'It is all america's fault! It is not my fault! I am not to blame!' Well, let me tell you, there's your problem right there. People not wanting to take responsibility. People wanting he easy life. for goodness sakes, you even say that you require a complete spec to be written or it is not your fault if the software is no good! Sheesh! What a luxury! Here's a cure for you, any clueless freshman can write a program that has already been specified in minute detail. Here's another clue, there are very few problems in life that come so neatly prespecified and they are usually not werth doing since they have already been done by someone else.
Thu 08 Apr | Paulo Caetano | 'Now everyone is complaining because the barbarians from the lowers classes turned out to be smarter than the kings and barons.'
Yes. But, actually, the 'barbarians' are indian, chinese, romanian, etc, developers. And it's us (the 'westerners', so to speak) who's doing the complaining.
'The state of New Hampshire has a state motto 'Live Free or Die'. Patrick Henry said 'Give me Liberty or give me death.' If your grandparents were willing to fight for their freedom they could have had it.'
Life is so simple when you look at it from the outside, isn't it?
'the US has fought communism, despotism and tyrany worldwide when no one else gives a crap.'
No. Actually, the US (and other Western nations - I have no reason to single out the US in this) have fought 'communism, despotism and tyrany' whenever it suited their interests. Whenever it didn't suit their interests, they joined everybody else in the 'not giving a crap' activity. Actually, when it suited their interests, they even helped overthrow elected governments in order to establish a tryranny they could control.
Thu 08 Apr | Mr. Outsourcerer | But ARE fighting, Dennis dear, we are fighting.
You see, every time I get a contract (because I am three times cheaper) that you would've otherwise had, every time I sell my products which competes with your products at half the price, every time I am NOT paying for the software I use (because you have no way of catching me) - it's my way of fighting.
Oh, and it's funny you consider the third world 'hell hole' - that is exactly how I think about the US. I lived there for 5 years, and I left because I wanted to. I made lots of money during the boom years and now I am investing them in software products developed at 1/10th of yours costs.
And, while you are scrambling looking for a job, my company is growing. Normally, I shouldn't care about you, shrug and say 'it's just business'. But in this case, I am glad.
And you know why? Because I held you (americans and the western world) DIRECTLY responsible for what me, my parents and my country have been through. 50 years of communism and all because YOU choose to sell us off to Russia. You, our traditional allies, who didn't care.
And, when the ordeal finally ended for us, you are afraid that your warm little world is invaded by cheap labor. Your companies are using us as 'new markets' crushing any local company trying to create something of value. And you have the nerve to ask us to pay hundreds for your products, when people are making $150 per MONTH.
Now it's my turn. I am fighting back. What can you do about it?
Thu 08 Apr | Ged Byrne | 'If you can't afford it, work hard, study hard, start a business and make enough money so you can!'
I remember when I believed that. Blissful days of ignorance. I've tried working hard, I've tried studying hard and it has helped to maintain the fortunes of others.
I'm trying 'start a business' next, but I'm starting to suspect that the only things that really work are 'have rich parents' and 'get lucky.'
Thu 08 Apr | anon | Mihai,
>> Dennis, yes, if you stop paying for software, you will be more competitive. But that is the wrong thing to do.
>> You accuse me that I pirate about 30% of the software.
>> In which way are you morally superior?
1. Re: your second statement, it was hardly an accusation. You admitted it!
2. I am assuming the third statement is a trick question? Surely you agree that pirating is wrong (well, you imply it in your first statement). Assuming we define moral as 'conforming to standards of what is right or just in behaviour', its not that hard to make the case that you are morally inferior (according to the above dictionary definition of 'moral') to someone who keeps the law and never pirates software.
3. Your country's state of affairs is obviously not as good as the west. But does that justify piracy? And if it does, why only pirate 30% of your software? Why not 100% of it?
Thu 08 Apr | Anonymous lurker | I like Americans. Hell, I married one. But asking one for a history lesson is a big mistake. As Dennis ably demonstrates.
Thu 08 Apr | Ged Byrne | I remember hearing a great quote once that went something like:
'Too many people are born at 3rd base and then spend the rest of their life thinking they'd hit a home run'
Not know the rules of baseball, my version is inaccurate and probably doesn't make any sense. I'd love to find it again.
Thu 08 Apr | Dennis Atkins | I didn't say the third world was a hellhole! I said 'if it is such a hellhole, then...' Big difference - it's the other guy who describes his country as a hellhole with tons of problems. i assume h knows more about it than me but perhaps I would find it charming and quaint?
Anyway, my points about blaming others sure got proven quick!
Some of these folks remind me of drug addicts living on the street -- it's ok to steal because the wold done them wrong. But they never see that they are the cuse of their own undoing. Nope. It's the CIA's fault they are addicted to smack. And no body with the drug addict's point of view and sense of personal responsibility is capable of developing quality products.
The problem is not some grand conspiracy as they imagine, nor i is it hard luck that got them where they are. It is the attitude of the people. And no body can change that but themselves.
Thu 08 Apr | Ali | Mihai - The software is too expensive for me to buy
because of Stalin's government 50 years ago
driving our economy into the ground from
which we never recovered
Dennis - Overthrow your government now then!
Dennis, this is the stupidest most illogical thing I have
ever heard. You must be secretely in favour of piracy
because you are making Mihai's excuse look good.
Are you really advocating that Mihai commence in
terrorism now, in the hope that his actions some
how travel back in time? When high school kids pirate
video games which are priced too high for them to
buy, do you tell them to overthrow the government?
Oh, and the Eastern Europeans learned not to listen
to the West when the Hungarians were encouraged
to rise up against the Russians in the 50s. They
fought valiantly but got no aid whatsoever from their
'freedom loving' 'friends' and were brutally
slaughtered. So they learned not to listen to that
crap again. And note that they were fighting with
AK 47s against a nuclear power with tanks and
planes. Let's just say this seems a much greater
disparity to me than a fight between a bunch of Brits
with muskets, and a bunch of colonists with muskets.
Thu 08 Apr | Mihai | > Surely you agree that pirating is wrong (well,
> you imply it in your first statement).
Yes, I agree that pirating is wrong.
> Assuming we define moral as 'conforming to
> standards of what is right or just in behaviour',
> its not that hard to make the case that you
> are morally inferior (according to the above
> dictionary definition of 'moral') to someone
> who keeps the law and never pirates software.
Yes, this is true, I am morally inferior because I pirate some software.
However, please consider an alternate point of view:
- Johny B. Bum is born in the US. He slacks off in school. Then he goes to high school, where he has fun and plays football instead of learning. Then he gets a job as an untrained worker.
Yet, because in US the wages are high, he can afford a decent car, and can easily afford to buy all the software he uses.
- Johny B. Engineer is born in Eastern Europe. He learns hard in school, high school, and university, and then gets his master's degree. Then he works very hard for a company, striving hard to build a future for himself.
Because in Eastern Europe the wages are very low, this guy can hardly afford a car. He works 5-6 years, and then he can buy a bad 2nd hand car - one that breaks and has to be repaired every 2 months.
The guy can't afford software, so he pirates. He can't even afford a modern computer.
Now, is the 2nd guy (who worked a lot harder than the first guy) morally inferior to the first guy?
If you take the literal definition of morality, yes.
But if you interpret morality in a broader sense, then it's the first guy who is inferior.
> And if it does, why only pirate 30% of your
> software? Why not 100% of it?
When I was a student and didn't have any income and barely afforded a computer, I pirated 100% of the software.
Now the percentage is down to 30% for me.
My aim is to have 0% piracy.
But I can't achieve that overnight. Software is very expensive for me.
Also, to the people on the board telling me to overthrow my country's government: we already did that. :)
A revolution happened in my country in 1989. The people had overthrown the government.
It was a bloody revolution, too - by conservative estimates, there were over 1100 dead, and 3500 wounded.
Now my country has a decent democratic government. I can't say it's an excellent government, but it is certainly a decent, democratic, pro-business government.
In the last 2-3 years things have been going really well in my country. The economy is improving, most of the companies are now in private hands, etc.
Thu 08 Apr | Ged Byrne | No, Dennis, not a grand conspiracy. Simple mechanisms all the way. All related to Adam Smith's 'Invisible Hand': The poverty cycle, the tragedy of the commons, etc, etc.
I am not saying that it is right to pirate software. I am saying have the grace to recognise your own good luck.
If 20% or the population consume 80% of the resources, then surely it is impossible for the other 80% to live at the same level of the 20%?
If they do work hard to improve their lot, they can only do so by reducing the riches of the lucky few: this is what outsourcing is all about.
Of course, those who do have all the wealth don't want to be worse off, and they have the resources needed to protect their interests.
Two brothers receive land in their father's will. Through the land of the oldest runs a river that makes the land fertile and rich. He works hard on the land and is blessed with a rich harvest. He invests heavily in equipment so that he can enjoy even more.
The youngers land is bone dry. No matter how hard he works the land simply cannot give what it does not have.
When he complains about his brother lot, his brother tells him to stop being so lazy. He does not bother to consider the problem from his siblings point of view, but instead tells him to stop whinging and blaming others. 'Work hard like me, ' he preaches.
The younger brother works not only hard but also smart. He discovers that by building a simple dam he can redirect the river into his own land. He buys the land around the appropriate area and does the necessary.
After the next harvest his brother is destitute. He cannot pay the morgage on his land because the river has dried up. When he goes to his now prosperous brother for help he is told to heed his own advice. He also warns him not to trespass on his land up river.
Thu 08 Apr | Stephen Jones | Dear Mihai,
If the bunch of proto-fascists that ran your country in the 1930s and 1940s hadn't invited Hitler to come and help them exterminate Jews, socialists and gypsies the Russians wouldn't have had to lose more than twenty million lives to liberate you from the Nazi yoke.
Dear Dennis,
Your country was founded by a bunch of freeloaders who wanted to have all the benefits of British government for free and weren't even prepared to pay a small additional duty on a cup of tea. It wasn't as if the load of whiners had any medical incapacity that prevented them drinking water anyway. And of course they were aided and abetted by a load of land-grabbing parasites such as Washington who were annoyed because Good King George was a decent gent who didn't want the Yanks to go off and murder hundreds of thousands of American Indians to steal their land.
Can we have more threads like this? Sure beats rabbiting on about pointer arithmetic.
Thu 08 Apr | Grumpy Old-Timer | 'Too many people are born at 3rd base and then spend the rest of their life thinking they'd hit a home run'
I always heard it, 'He was born on second base, and thought he'd hit a double.'
Thu 08 Apr | Mihai | Dear Stephen,
In my country, the jews were PROTECTED from the nazis! My country protected them as much as they could.
I asked old relatives, and know the truth about this.
Thu 08 Apr | Ged Byrne | Grumpy Old-Timer,
That was it. Thanks.
Any idea who said it?
Thu 08 Apr | Kilroy | Former Texas Governor Ann Richards said something similar of a certain resident of 1600 Pennsylvania Avenue:
'He was born on third base, and thought he'd hit a triple.'
Thu 08 Apr | Hate People Already | It's resolved then... we'll lower our software prices to these 2nd world countries' wage levels, when they agree to RAISE their prices they charge our outsourcers. (You can't have the best of both worlds, guys).
I agree with Stephen Jones we should get the topic back to the American Revolution. Mr Jones -- you might want to recall it was the British government that seized the land from the Indians and committed those atrocities prior to 1776. The American government did not exist until then.
And maybe have your King or Queen or whoever it is that runs your country read to you the little 'Declaration Of Independence' letter we sent well over 200 years ago, in which we detail the many grievances and idiocies your King George perpetrated on his own people. The 'tax on a cup of tea' was just the last straw.
(And too bad you never learned from your mistakes -- you once owned half the world, didn't you? Now what do you have?)
*ducking*
Thu 08 Apr | KayJay | The sentiments of the Founding Fatherers are echoed truly on the Statue of Liberty. It was not wriitten until way after their time, but reflect truly their spirit.
As long as the US of A was a _free_ country, as in truly and sincerely believing in 'Give me your tired, your poor, Your huddled masses yearning to breathe free,.....', it was alright. The whole of the US of A was hell bent on proving to the 'OE' -ians, that they were at least their equals, if not a head and shoulder above them. A sort of a class struggle across the Atalantic. Every single honest and hard-working working-class man, woman and child across Europe, both 'old' and 'new', was an 'American'. Identification with others was not a hindrance, au contraire, diversity was a plus point. Different value systems, different priorites in life, different ideas for society, were all welcome.
Enter a 'bad' period in 'OE'-ian history, and the whole deck of cards falls. 'OE' is crushed. The US of A truly holds the upper hand and now extends its 'freedom' to the whole world, to counter another 'class' conflict with the Reds.
Enter a 'bad' period for the Reds, the US of A is now *the* only hand. No need for an adjective. And so now the Statue of Liberty does not need the above inscription any more, as there is no opponent to struggle against.
The next logical thing, nay the very thing the founding fathers of the US of A envisaged, was to ensure that you continue to '...lift my lamp beside the golden door!', the preceeding sentences having lost their validity.
And now comes the history lesson and I pray that at least the US of A will not indulge in repeating history. I know the price my nation has paid for it.
Every nation, repeat, every nation, other than US of A and Canada, has gone through this phase. There is documented record of this covering over a collective total of 10,000 years of recorded history. This cycle of achieving power and influence on so large a scale, only to lose it in one final act of hubris, is so very consistent with history.
My point is, do not make the mistake, the Pharoahs, the Caliphs, the Maharajas, the Emporers and the Mullahs, made/make. That of putting others in your shoes. You will also vanish. It will be a pity to see humanity's greatest collective experiment in self-preservation and self-development and collective well-being, snuffed out by just not visiting the nearest library.
Understand the 'difference' is a valid concept. You may not like giving or recieving for free. I do. Both give and receive. That is because monetary compenstaion is only one measure of the transactions value. There are others. Pride being one that comes straight to my mind. You have right to your standards. Keep it. Do not impose it on others.
Regards
Kaushik Janardhanan
Thu 08 Apr | Hate People Already | Well maybe we'll lose it all some day, but we're also going to take out the savages that fly planes into buildings and desecrate human corpses while we're at it...
Thu 08 Apr | Erehwon | Fo' shizzle, H.P.A. Sometimes ya just gotta break yo' foot off in somebody's a**.
Thu 08 Apr | KayJay | Ah! Somehow the name Dennis Leary comes to my mind!
Thu 08 Apr | Dennis Atkins | Mihai,
You have my sympathy. Ceausescu was a demon and you did the right thing to exterminate him. Personally i would have preferred hanging for him as the firing squad is supposed to be reserved for gentlemen.
OK, then, you did the revolution and things are better. You are right that the soviets raped you repeatedly but don't forget there were plenty of collaborators and politicians that did as they pleased even when it meant destroying their own countrymen. Ceausescu was not Russian after all.
You've got nice resources there, it's a good area with plenty of potential.
Don't forget that it took several hundred years and many many sacrifices to build up the Us economy to be so successful. Only 70 years ago, my grandparents lived in a one room shack with no electricity or running water at a time when your own countrymen lived in very nice castles, buildings and cottages. What I am saying is that it will take a lot of hard work to rebuild a country, but that it is possible and if you want it to work you have to put up with sacrifices, prepared for the payoff to come to your decendents. Blaming others is not the answer and is extremely counterproductive. Also, the people to blame are the dictators and collaborators.
Success is not easy. And it does not come from a degree either.
Thu 08 Apr | Stephen Jones | Dear Kayjay,
The Statue of Liberty, like American Independence, was a present from the French.
Fri 09 Apr | KayJay | Known and acknowledged.
The point I was trying to make was that in spirit and perhaps even in letter, Emma Lazarus's words are actually what the Statue stands for today, not President Cleveland's Franco-American 'entente tres cordiale' (do pardon my French!). And Ms. Lazarus' poem has far more in common with the Founding Fathers than Mr. Cleveland, other than the office of the President of the US of A.
French influence has been prevalent in the activities and policies of the US of A. Taken off my bookmarked collection, random online pointers include, 'The Stewardship Doctrine' [1] and 'The U.S. Constitution: America's most important export', an essay by Mr. Blaustein. [2]. There are many more.
And yet, I find it amusing to see a total lack of desire or even a logical connection between History & Geography and Current Affairs, among modern day Americans, especially the policy makers . Two subjects, on which the French have always ensured continued emphasis across the centuries.
We, as sentient entities, occupy time and space. Ergo, History & Geography. QED. Ignoring or not learning from the two, tantamounts to denying existence.
A casual glance of the various histories of the various civilsations/nations, would bring to light almost identical situations, the US of A is facing. Even if they are restricted to that past 500 years. Islam & India. Enforced 'Civilisation' by the British. The Middle East & the Ottoman Empire. Russia and its Asian influences, Sub-Saharan Africa & Europe, etc. Every one of them was a socio-economic phenomenon under a veneer of 'the right kind of life'. And every one suffered, and more important, the 'future' was not worth the price.
Or perhaps, there is after all a God, who chooses his people, and therefore, by definition, outisde Time and Space.
********************
[1] http://www.conlaw.org/
[2] http://164.109.48.86/journals/itdhr/0304/ijde/blaustein.htm
Fri 09 Apr | VPC | From the first post of Dennis I've started thinking about
his grandparents and how they probably had worse living
conditions than almost anyone today in any part of Eastern
Europe, and then he said it himself.
Anything that we consider as civilisation today was really
non existent only hundred years ago. As in Brave New
World by Huxley, model T can be looked as start of
modern world.
Hot running water, electricity, roads and cars, ambulance,
credit cards & retirement plans where unknown only few
generations ago. In USA and in France, as well as in
Cambodia or Iraq or anywhere else.
I've seen somewhere that Lenin was financed by German
secret service because he promised to end the war on
eastern front. The question is not did Russians like
communism more than the rest of us, but without USSR
would we have Internet today?
Did anyone found the movie The Gangs of New York one
stunning revelation?
Life is strange, life stinks and life is a miracle.
From some book: Francis Drake was a pirate to Spaniards, but when he returned to England, Queen Elizabeth knighted
him... It is little wonder that the pleas of the Spanish
ambassador for the return of the loot went unheeded.
Adam Smith: A smuggler is a person who 'would have been,
in every respect, an excellent citizen had not the laws of his
country made that a crime which nature never meant to be
so.' This is from Wealth of Nations, very popular read
among American smugglers at the time when it was published in 1776.
Hi all,
I need to periodically (twice a month) import some huge text files into my Oracle 9i Database. The files range between 10 to 100 million records each. (10 GB aprox. average per file)
I plan to use Oracles Sql*loader ( http://www.orafaq.com/faqloadr.htm ) to actually import the data, but the text files come from three different systems (legacy systems from three companies that were acquired by my company).
So, I have *three* different formats. Al file hold the same info, but in two cases the records are character delimited (distinct layouts) and on the third case the records are fixed lenght.
I plan to break up the import process in two stages:
1.- Data mapping: Convert each specific format into a single standart format using some custom-made mapper utility.
2.- Use Sql*Load to import the unified format to the database.
I dont have exact requirements for batch duration times, but I would like to keep them as short as possible.
I have been thinkng about programming each of the three mapping processes in C#, (like the rest of the application).
In past implementations (on UNIX platforms) we have used awk to parse and convert similar files. But this time its Windows, and I havent decided yet what to do:
a) I could write my own parser/mapper with manage code (C#).
b) Write it in unmanage code (ughh!)
c) Use a windows awk implementation. Do you know which one is the best?
d) I could bypass completly the mapping process and use distinct Sq*Loader scripts for each file format. I dont want to do this for architectural cleaness.
Any other idea? What would you do?
Of course performance is the biggest issue here.
The server in which this process would run is a dual P4@2GHz with 4GB RAM. Windows 2000 Advanced Server.
Plase dont flame for wanting my problem solved by JOS readers. I *will* do my homework and measure. I just want to see if some can suggest anything else =)
thanks!
Tue 06 Apr | Doug | 'architectural cleaness' - huh?
If it were me I'd just do separate SQL*Loader scripts and be done with it. There's no sense in processing 10GB twice when once will do.
Tue 06 Apr | .NET Developer | You are *so* right. I feel the same,
One of the requirements was that the system must specify its own file format so future data sources can be integrated in the process.
But I could bypass the mapping for these three cases altoghether.
thanxs
Tue 06 Apr | Dan Maas | A good idea regardless of implementation would be if you could process the file in a one-pass/streaming manner (i.e. one program/function reads from the file, another munges the data, then another feeds the database, all at once). The IO overhead of reading in 10GB is probably going to dwarf whatever processing you need to do.
Personally I'd use perl or python for this sort of thing.
Tue 06 Apr | JWA | I've never dealt with a 10 gig text file, but I'd say that it makes a lot more sense to process the data once and only once. Then, just make the best of the three current formats the new standard and you're golden.
Wed 07 Apr | dmooney | 'One of the requirements was that the system must specify its own file format so future data sources can be integrated in the process.'
Why design a fourth format when you already have three. Write the three legacy->sql-loader converters and whichever one can be imported the fastest becomes the standard. Or you could just make the sql-loader format the standard -- which on second thought seems to make the most sense.
Wed 07 Apr | Buzzword, schmuzword | Design a standard XML schema for the data. Convert all the text files to XML. Write a program to parse the XML files and create a standard format for SQL*Loader.
Management will love it.
;-)
Wed 07 Apr | .NET Developer | Beleive it or not, *THAT* was JUST what management proposed.
I'm not kidding.
Wed 07 Apr | Ged Byrne | The book 'Data Munging in Perl' is very good.
http://www.manning.com/cross/
I use Ruby now, but the principles remained the same.
Wed 07 Apr | MR | I'd love to know how large the 10GB file gets when you start throwing all those redundant tags around.
Any bets?
Wed 07 Apr | Philo | Obviously 42GB. ;-)
I agree with the consensus - write the three loaders - choose one to be the standard. Choosing which one will rest on a few issues:
- if one format loads markedly faster than the others, it's a clear choice
- if these three formats are from three different organizations, will there be political pressure as to who ends up being 'the standard'? (As a techie I wouldn't let this sway my choice, but be aware of it)
- are any of the formats 'cleaner' or easier to read/parse?
etc.
Philo
Wed 07 Apr | JD | Especially for Fixed width format file, have you considered using SAS? I think SAS not only makes it easy to process these kind of text files but I have found it to be amazingly fast!
JD
Wed 07 Apr | AEB | Use common sense here and go with three SQL*Loader control files. If the data was different, then create three separate load_* tables or one that is a superset of all 3.
Seriously, you'll be done with the control files in 15 minutes - that tools saves SO much time. The database load table becomes your 'unifying format'. Why duplicate that in a file?
Wed 07 Apr | AEB | One more thing I should add about XML...
The bigger the file gets, the increase in memory and processor speed required is EXPONENTIAL.
We got 300MB EDI files and we processed them in Biztalk 2002, converting them to XML before loading them into SQL Server. We needed to buy the fastest XEON with 2 gigs of ram to get in under 5 hours for one file. Of course, the data had complex hierarchies and involved many issues, but this 'common XML' approach caused more pain then benefit.
Wed 07 Apr | Ray Beckett | Not sure if this is an option for you, but can you use DTS to put the data into SQL Server, then migrate the data into Oracle by way of a linked server? I know SQL Server's DTS import (especially Bulk Loads) scream for data imports, and 10GB is a rather large import...
Thu 08 Apr | .NET Developer | Thanks everyone. I will try to convince the team to bypass the intermediate 'standard' file.
I will have to justify it, but that will be quite easy with the first tests.
Fri 09 Apr | Chris Nahr | 'The bigger the file gets, the increase in memory and processor speed required is EXPONENTIAL.'
Only if you try to recreate the hierarchical file structure in memory, like DOM parsers do.
But you could also use a lightweight forward-only text reader with just enough knowledge of XML to validate incoming elements, separate names from contents and attributes, and so on. .NET provides such a reader in the XmlReader class (and the corresponding XmlWriter).
Such a reader shouldn't create a significantly higher system load than a plain text reader.
1. Compression - benefits on text emails would be enormous boost to cutting down actual usage. Report uncompressed size to users.
2. Keep single copies of emails.
Emails especially those sent out to multiple users, and those that contain multiple attachments really only need to be saved once. This too should cut down on actual disk use
3. Keep single copies of individual files
I know they will use it for sharing binary files, so I will only keep one of these too. Might take a bit more effort to figure out two files both called Warez.mp3 and both at 10Mb are different, but my engineers will get there.
Any more suggestions out there?? How could you run this show, both from a business, as well as a technical perspective.
Tue 06 Apr | JD | This article will help you understanding what Google folks are trying to achieve.
http://blog.topix.net/archives/000016.html
It's a must read for all techies intereted in developing new computing platform using obscure technologies!
JD
Tue 06 Apr | Seeker | You could checksum the files to determine equivalency, in additon to size and name etc.
Tue 06 Apr | John C. | It might be interesting to look at how the economics of compression work out. Yes, you save disk space, but at potentially significant cost to CPU cycles. If superior searchability of your e-mail archive is a big goal (which I'd take to be a given in this case), then displaying search results could be an especially big CPU load, because you'd have to decompress potentially dozens of files, I think, just to show the hits in context. Does Google compress HTML today? I have no idea.
Anyway, I don't know nearly enough about google's infrastructure to begin weighing those the cost of disk space vs. CPU time, but I'm quite confident that their engineers modeled the scalability implications and cost model for this service before they announced anything publicly.
As for determining whether two equally-sized files are equivalent or not, I'd think that well-established hashing algorithms would do the job nicely.
Tue 06 Apr | tapiwa | John C, I agree with you. What you gain in compression, you lose in CPU cycles.
wonder if Google has ever published how they compress their archives, caches, indexes etc.
I really doubt that even at this time, they keep their data uncompressed.
And if compression is at the kernel level of their heavily customised Linux distro, I think it would be on the fly an imperceptable to most users.
I would argue that the would hit HD limits before they maxed out their CPUs.
Tue 06 Apr | John C. | As a historical note, this paper by Brin and Page, which appears to be from about 1997, describes an early form of Google:
http://www7.scu.edu.au/programme/fullpapers/1921/com1921.htm
It reads: 'The repository contains the full HTML of every web page. Each page is compressed using zlib (see RFC1950). The choice of compression technique is a tradeoff between speed and compression ratio. We chose zlib's speed over a significant improvement in compression offered by bzip. The compression rate of bzip was approximately 4 to 1 on the repository as compared to zlib's 3 to 1 compression.'
Of course, 1997 was ages ago. It's amusing to note that 'the total size of the repository is about 53GB', when it's undoubtedly in the petabyte range today.
Tue 06 Apr | Almost Anonymous | 'It might be interesting to look at how the economics of compression work out. Yes, you save disk space, but at potentially significant cost to CPU cycles.'
As the link from JD points out, Google has both alot of disk space and alot of CPUs. They most likely have the cycles to burn.
'then displaying search results could be an especially big CPU load, because you'd have to decompress potentially dozens of files, I think, just to show the hits in context.'
Pulling the files off the disk is probably an order of magnatude slower than decompressing the files into memory. Unless the CPUs are very busy, this probably doesn't have much of an effect. You also have to remember that in compressing the file -- you have less data to retrieve off of the disk.
Tue 06 Apr | Code Monkey | >What you gain in compression, you lose in CPU cycles.
Not really always true...depends on whey you are called to do the decompression. Remembet to be able to see your email you need to login first so the decompression can occur at that point itself. There is no need to decompress everything only the mail for the users who are actively logged in. This also means to save disk space you have to auto logout users after some period of inactivity and I am sure google will present it as a security precaution.
But all aside I do not think that I for one would like to open an email account where email I delete is not really deleted and could be sold or correlated for profit without my knowledge. And getting 1 GB of space for email without these privacy intrusions is pretty easy...see http://www.spymac.com
I think this Google has become the right company now to become part of Microsoft. So much for the 'Do no evil' pledge.
Tue 06 Apr | Eric Debois | 'Google has 100,000 servers' it said in JDs link
100 000 servers? I mean, sh*t?
I feels like yesterday they said they had 1000 servers and everyone was impressed?
(Sorry.. just had to say it.)
Tue 06 Apr | r1ch | Here's a paper that they published on their 'Google File System'. It's highly optimised towards their use, but it makes interesting reading. http://www.cs.rochester.edu/sosp2003/papers/p125-ghemawat.pdf
Tue 06 Apr | MR | Code Monkey your post makes sense.
Even then, you only need to unzip the email *when read* because presumably that is when the ads would be displayed as well.
Tue 06 Apr | Code Monkey | MR wrote:
>Even then, you only need to unzip the email *when read* because presumably that is when the ads would be displayed as well.
Well to do a contextual analysis of what ad's to show in real time as the email is unzipped would perhaps be too much even for google to pull off but it does make sense to do it of google is smart enough to extract and link keywords in your email seperately to the ads.
Also I did not quite understand why they would insert ad text inside your email....that would plain take up too much space unless they are thinking of offering POP3 or IMAP access (IMap would be better) and hence assume that users might access email without a browser.
If an when it happens the only place where I would use GMail without worrying about privacy issues is as a destination for newsletters I subscribe to
Tue 06 Apr | Junkster | '2. Keep single copies of emails.
3. Keep single copies of individual files'
Microsoft Exchange does the same thing, of course only within in organization.
Tue 06 Apr | Seun Osewa(afriguru.com) | I would run a Jabber server using the same user authentication database as GMail, and provide chat gateways to all the major messaging services (MSN, Yahoo, AIM). This way yahoo and MSN will have more to think about than threatening google's core business - search. Go get 'em, google!
Tue 06 Apr | Seun Osewa(afriguru.com) | Besides, I have a little bit of a rant on this topic on my weblog. I forgot, however to specifically mention:
- That google doesn't really need to be a 'portal'. They just need to clone the most popular stuff that portals provide: e-mail and instant messaging?
- In criticising google's decision to provide 1gb space from the first day, i didn't mention what I would have done: Announce 1gb space in the April fool's e-mail, then when everybody feels gmail is a joke and the service is ready, announce the 'real' gmail with 50mb-200mb of space, open to everybody (no vaporware). Then double the provided space every 6 months until its 1gb!
- implement restrictions on message size and which proportion of e-mails should be pictures, and _relax_ them over time instead of introducing them when people start using gmail to replace online storage services (they need text to display their ads on!)
Address: http://www.afriguru.com/2004/google-messenger.html
Wed 07 Apr | Seun Osewa (afriguru.com) | I updated the article to include this two paragraphs:
'Google is wrong to drop the Google Directory, based on the Open Directory Project (dmoz.org) from the home page, without offering a replacement. Google's 'similar pages' feature doesn't work as accurately as finding other links in the same Open Directory category. It has always been nice to be able to conduct a search and go straight to the Directory category that is most closely related to the search.
'In the same vein, Google is absolutely wrong to put Froogle on the home page. There's no such thing as 'objective product search'(aka Froogle). Besides, Froogle is at the time of this posting still marked 'BETA'. Or what do you think?
Wed 07 Apr | tapiwa | They probably realised that not too many people were using the Dmoz directory.
I would postulate that most people that maintain the Dmoz directory use google anyway to find sites that are related to their branch. I know I would.
Wed 07 Apr | Seun Osewa (afriguru.com) | could you give me an example of a search where "related items" returns something meaningful? From my experience it just returns similar pages on the same site or .. em ... junk. There are too many dimensions in which pages could be related and directories are yet another way to sort information into categories. How can they hope to eliminate the human element? Sure, the Open Directory can be slow ... but the contribution is significant. I would rather get more people to know how to use it! I really miss "related categories"
Wed 07 Apr | Martha | Code Monkey, you've either misinterpreted what you've read about gmail, or you haven't actually read anything about it except fourth- and fifth-hand board postings.
-The ads are NOT going into emails themselves; instead, they show up in the gmail interface, along with 'related links' that are not ads.
-Deleted email IS deleted. It's just that with 1GB, you don't need to delete nearly as many emails. And I fail to see what any of this has to do with privacy.
Fri 09 Apr | Pete Jenkins | If I ran Gmail....everyone would get a @google.com address. I have a sneaking suspicion they are going to launch with @gmail.com addresses which would significantly slow adoption rate.
Regarding storage, I don't believe the space savings could be justified against system performance, complexity and maintenance. IMHO, gmail will store all mail, duplicate or not.
Google is much better off spending time on the spam problem itself rather than working on efficiently storing spam. If they do a great job I hope they provide a blacklist feed to ISP's and those that run their own mail servers.
Is there a site where one can download free open-source components to do common tasks such as forgot your password?
I maybe be living in fantasy-land here... but it would be absolutely wonderful if such a site existed...
Thu 08 Apr | Wayne | There are literally thousands of sites to get free source code for web applications. http://www.hotscripts.com and http://www.aspfree.com come to mind.
If you want strictly 'open sores', try http://www.sourceforge.net .
Thu 08 Apr | Clay Whipkey | Well, when you say 'open source', that leaves a lot of questions out there, but I'll hit what I know.
For PHP, if you are developing using classes, you can find a lot of free pre-written classes at http://www.phpclasses.org and also look into PEAR: http://pear.php.net
For ASP, there is a much smaller pool of 'free' stuff, but I enjoy the ASP Resource Index: http://www.aspin.com
Even though spammers use fake from addresses (such as jhfuoihd@abc.com), theres usually an HTML link in the body which can help reveal their identities.
I looked up some of domains of the more annoying emails on whois and found the names and emails of the admin and tech contacts; usually, theyre the same person, and theyre outside the US, usually eastern Europe (theyre just starting to understand the whole free market economy thing).
Anyway, most of these guys have hotmail or yahoo email addresses.
I contacted hotmail abuse, but they said that unless I had a message from the spammer sent using that account (with all the message headers to prove it), they wouldnt take action.
Since thats something a spammer would never do, hes pretty much safe to sit there using his (presumably spam-free) hotmail account and annoying the rest of the world.
Legal action is out, since these people (and businesses, if you can call them that) are not in this country.
Ive read about various vigilante schemes, like offering up DoS attacks on his server, filling his own inbox with crap (since its hotmail, though, it would be easy to just get a new account), but I wonder what would be the most effect.
It would be great to send a message to these guys along the lines of we know who you are, and we know what youre doing, so cease and desist or else!
Any ideas?
Thu 08 Apr | fw | Locking them into their houses, boarding it up and setting it on fire. I heard that's a decent way to deal with spammers.
Thu 08 Apr | James B. | I say we enlarge their debt and cut their...
Thu 08 Apr | Colonel Kruger | Just set up something to collect these email addresses and spam them back with thousands of emails.
Thu 08 Apr | Bruce Perry | Use that email addr in usenet postings and in other places likely to attract spam?
Help them choke on their own junk.
Thu 08 Apr | RocketJeff | Does anyone with even moderate intelligence think that spammers look at the hotmail/yahoo email address that they setup their domains with?
The main reason (besides being free) that spammers use hotmail/yahoo is that the account is totally disposable.
Also, the information visable on whois is easily changable (I just redid mine to keep it current) and has little to no validation - you might be venting your fury on someone's address the spammer picked at random (just like the from: address in spam email).
Thu 08 Apr | anonymous | You're right: email/electronic revenge isn't likely to be effective.
But the physical street address and telephone info in whois is likely to be egit, as well as the tech info (the domain has to be billed, the DNS servers have to point to the right location, etc.) so I was thinking more along those lines.
Thu 08 Apr | RocketJeff | Anonymous, you must not have read my post clear enough...
Spammers _don't_ care about their domains - they're less the $10 to register (less then $5 in bulk). They either didn't supply valid addresses when they signed up for the domain or they changed it to something bogus before they started their spam campaign. Changing domains frequently is a mingor cost of doing business for a spammer.
The DNS information, of course, has to be valid. Shared webhosting acocunts cost less then $10/month - they're disposable to. If you write to the host (easily found, usually), they'll shut down the account. If you attack the host (via DDOS attacks, etc), you're mainly hurting the other customers of the webhost - the spammer is probably long gone to a different host.
Thu 08 Apr | anonymous | Jeff, you're right: if the domains themselves are disposable (I hadn't considered the economics there), then tracking them down is near impossible.
Still, a spammer registering in bulk, signing up with many hosting companies, would leave a trail of some sort.
Perhaps sharing information amon registrars, hosting companies, under an ICANN/industry consortium panel would help detect them?
Thu 08 Apr | Katie Lucas | Why on earth would the companies want to stop the spammers giving them money to register domains for them?
It's not in their interest in any way to stop it happening.
Thu 08 Apr | anonymous | True, the small, pure registrar firms who make their only money on bulk domains won't like it, but all the other organizations involved (more reputable registrars, hosting companies, ISPs, etc.) certainly understand it's in their interest to stop this activity.
Our hosting company is one of those '$10/month shared server outfits' and they tell me they don't want spammers' business, precisely because it leads to IP blacklistings of their subnets, denial of service, etc.
I can't imagine a reputable firm in this space being seriously opposed to it.
Thu 08 Apr | Seun Osewa (afriguru.com) | In the case of scamming spammers, particularly the 419 type, I'd say having a distributed network of people that systematically bomb the spammers' return addresses when the free e-mail providers refuse to shut down their accounts will be a nice way to save a lot of people from being scammed by these people.
Our company is pretty much a design agency so solid technically methodologies are for the most part non existent, although this is fine for simple microsites, it becomes a problem when you enter the world of integrated systems and complicated functionality.
I have used the RUP over the last couple of years and generally find it all to pervasive to get through small to medium projects, I do however like some of the structure and processes that it can bring to a project.
The problem I have at this stage is using features and the vision document.
Features!! what are they? RUP says they should have a type of requirement but then they are a requirement that should be managed like any other requirement. I understand that a feature represents the end game that you want to get to, so what will the system do to enable a basic user NEED. e.g.
Need: Saftey is key in the design of this vehicle and so the driver must be able to stop in a safe manner under any circumstance.
Feature: Vechicle will have ABS
My understanding from this point would be to elaborate on the feature and start to develop both the business and technical requirements.
The problem is explaining the difference between feature and requirement and actually getting a client to buy into the concept, they will say we already know this, this is a waste of time.
Can you just call them requirements from the outset and give them an attribute of parent and then sub reqs are developed from those?
The Vision document, well some say a 1 pager and some say it is a document that grows as the project develops. Both ideas have goods points, the question I have is do you spin off a separate requirements document and later the functional specicifation that contains the techy reqs or do you just keep the reqs in the vision document?
The purpose in our organisation that I see real value in using the vision doc is that both statagey and technology have a single point to put info, in some cases there is a lot of dependancy between the two.
I guess the key problem I have terminology, as an analyst I take these concepts for grnated but get nailed when try to get other departments involved.
Any comments??
Regards,
Anthony.
Thu 08 Apr | anon |
Your approach seems backwards.
If you say: 'The vehicle will have ABS brakes', that is not a requirement. That is a design decision.
The requirement is: 'The vehicle needs to stop quickly'. It could be done with a length of rope and an anchor, if that satisfied the customer. Specifying ABS brakes crosses the line into design.
Since you're specifying the design first and then developing business and technical requirements from this, isn't that backwards?
I'd also say that if you need to expend energy to get a client to 'buy into' a concept, you may not be addressing his business needs. Why should the customer have to buy into anything?
I think you're worrying too much about labels. Capture what the customer really wants, in Swahili if necessary.
Thu 08 Apr | Philippe Back | Vision doc:
What is the problem ? (that's why they NEED your solution)
'The problem of affects and results in . The benefits of a solution (ours of course :-)) are: '
We will solve your problem through:
- list of 'features'
e.g.
- there will be support for search
- ability to maintain user profiles
- we will use the company graphical guidelines
- storage has to keep 2 years of logging
- support for on-line payments
- ...
Those entries are 'features', not detailed enough but that's how people talk when they try to approach and solve the problem.
They should be baselined (what's to keep, what's to left out).
Use priority (like : must, should, could, won't - have)
Customer will tell you the priorities
You as a team will tell the effort & risk
Then out of that, you can make a commitment for a given price (or prestudy project if too risky).
Out of the features, software requirements will flow (detailed use cases, UI, logging, workflow, security, performance etc). As well as some design constraints put on you.
All of the 'Features', 'software requirements' & 'design constraints' are 'requirements'.
Just that 'Features' lead to 'software requirements' and 'design constraint' limit your choice of technologies in the solution most of the time.
But, all in all, create a GUI prototype, it's what works with the users...
From a Marketing point of view is it viable that I promote my
Software Develoment Services (as a Freelancer/Independant Developer) and that I sell my shareware on the same web site ?
The positive side being that many prospect might give me projects if the shareware Ive developped is good & well designed.
The negative side being that it may not look professional
for someone who is visiting the site with the idea to download/purchase my shareware...
He might think what sort of support will I get from a one man band operation ... Does his website will still be around next month ?
Thu 08 Apr | Linus Ericsson |
What are the pros & cons ?
Do you know people who sucessfully manage to sell
technical consulting services & shareware from the same site ?
Thu 08 Apr | Mr. Analogy | One issue is market demographics (or 'Synergies')
Are the SAME sorts of folks going to be interested in your shareware and consulting?
For example: if your shareware were tools that helped IT Professionals who might want some customer software developed, then it's a good tie in.
But if you're selling video games, and your customers aren't interested in you making games for them, then you're diluting your 'brand'.
It would be like a plumber opening a store selling candy vs. a store selling plumbing supplies for do-it-yourself'ers. The latter is a much better fit. Better syngergy/
Thu 08 Apr | anonymous | Being a successful consultant is about understanding the value (not the technology) you bring to your clients, and presenting an impeccable, professional image (for more ideas on that check out www.vass.com and www.foxandcompany.com).
People who visit freeware/shareware sites, by defintion, have no budget and are looking to get something for nothing.
As the previous poster mentioned, the two do not mix.
On the other hand, if you take the approach that your software is valuable (and therefore expensive), then you could both sell your software on the same site as you pitch your consulting services. Paul Tyma, the creator of Mailinator, does that on his company's site (http://www.preemptive.com).
Thu 08 Apr | Fezzik | 'One issue is market demographics (or 'Synergies')'
You keep using that word. I don't think it means what you think it means.
Thu 08 Apr | Linus Ericsson | Fezzik :
I guess he meant Market Segment
Im writting a shareware which requires to log the transactions of file downloaded
The record is fairly simple : Entry No. (Integer which in incremented each time a transcation is logged), File Name,
duration of download, date of download, etc,etc,
The record will just contain a dozen of fields...
I do not want to store these transactions log into a text file but in a local database...
What would you advise me ?
Does MS Access is an easy/cheap/reliable solution
for this fairly simple task ?
What are the other easy/cheap/reliable alternatives ?
(CodeMonkey : Dont ask me to write my own DB Engine) ;-)
Thu 08 Apr | Canuck | You've written off text files ... why?
Thu 08 Apr | Linus Ericsson | Canuck :
The reasons why I do not want to store this in a text file are
1/ My application will requires more than the transcaction
table (ie: setup tables, lookup tables) for selection
So I dont want to end up with multiple text files for storing all that
2/ I may want to sort the data in the transaction log table,
by duration, file size, IP Address
(easier & faster to do in a DB than a text file)
Thu 08 Apr | Just me (Sir to you) | I would go with MSDE for this type of stuff (if I did not have a SQL Sever running already).
Thu 08 Apr | RocketJeff | The problem with MSDE is that you have to figure out how to install it with your application (his is shareware) if it isn't already and your download size is probably much larger. That and the fact that MSDE seems to be vulnerable to the same security problems that SQL Server has - but few customers know that the need to keep it patched...
A simple embeded DB like SQLite (free) or one of the commercial ones (Codebase, SQLanywhere, etc) would probably more then meet the needs of this app.
Thu 08 Apr | Dennis Forbes | I would advise against using MSDE : It is gross overkill. It is of course vulnerable to all of the issues of SQL Server because it is SQL Server (with a couple of detuning hacks and license limitations). Your options would be either to run MSDE all the time for the off time that you need to start your app, or to run it on startup of your app (and the startup of SQL Server is not inconsiderable). I'd eliminate it as an option. I'm a hearty advocate of SQL Server, but in this case it's like driving a bus to work because you see buses working for public transit.
The Firebird SQL project has a dll version that seems ideal for this need: When your app is running you'll have a full feature data engine at the ready, and when your app is stopped the system is quiet and unencumbered. http://firebird.sourceforge.net/
Hi, just want to get some opinions and ideas for a project I will be starting.
The system is for a multiuser environment (max 5 persons) and it is a simple invoicing and reporting system.
I will be using VB6 for the front end so that is no problem. But for the backend I am thinking of using Access2000 (Okay, thats the only db I have experienced in besides Ms SQL7 which I have messed around a bit). But my client cant afford MS SQL due to budget constraints.
Just wondering, what are the pros and cons if I use Access from your own experience for a system like this?
Thu 08 Apr | suhu | Sorry hit the Submit button too soon. I know some of you might recommend MSDE but I don't have any experience with it at all.
And I am not sure I will have the time to learn it before starting on the project. So unless Access2000 is really not suitable for the above system, I will have no choice but to look for alternative databases.
Thanks in advance.
Thu 08 Apr | Aussie Chick | We use access97 in the same sort of situation. We have a 25user environment, the program is used to keep track of client 'work in progress'.
It works quite fine. (although this really consitutes a limited opinion)
Thu 08 Apr | Justin | It'll be fine, assuming your volumes are reasonably low. How many invoices/month do they print? (Most businesses tend to do these all at once).
If the tool is fit for purpose (which it is, in my opinion, given the limited details), I would be inclined towards using it over another, superior tool that you have no experience with - otherwise, this is a major project risk.
Oh and make sure you *really* understand their invoicing process and what they expect from the system.
Thu 08 Apr | suhu | Thanks for the feedback so far.
Regarding the number of invoices, it is around 30 perday.
Will the db be able to handle around 5 users at once? I have heard that access can get corrupted and stuff.
Thu 08 Apr | Herbert Sitz | Access/Jet db's can get corrupted, but if it's going to happen in your intended 5-user setup it would probably be because a client computer crashed or was turned off by the user without shutting down, not some unpredictable error. Jet/Access clients are usually designed to each keep the db file open, which causes problems when one of the clients crashes.
Regarding an invoicing app, you might want to consider making some changes to the Access sample Northwinds application. I've seen small businesses use slightly modified versions with good success.
Thu 08 Apr | Stephen Jones | What I can't udnerstand is this statement...
---'I will be using VB6 for the front end'----
Coding the front end in Access is two or three times quicker than doing it in VB. Why take the weakest point of Access (the .mdb back end) and not use the strongest (the IDE).?
I'd consider writing it as an Access project using MSDE. This will make it easier to upgrade at a later date. If you are really pushed for time you could do an .mdb now, and change it to an MSDE later -- there is a button for doing this automatically but we all know what happens when you go around pressing strange buttons :)
Thu 08 Apr | Sam Livingston-Gray | Excellent point, Stephen.
Unless the app is intended for shrinkwrap delivery, Access offers a significantly faster dev environment -- not having to deal with DB connections, better data-integrated controls, and so on. If it's a departmental or internal app, Access will let you spend more time working on actual features and less time on the mechanics.
By the way, I've had good luck using Kixtart to ensure that users always have the latest version of the front end copied down to their machines. Email me for a sample script I put together recently.
Also, I wouldn't recommend MSDE for anything but an internal application -- I had enough installation support requests when I tried making an Access app publicly available without the configuration issues of having to have one computer always on. If you can physically manage the MSDE workstation (esp. working out a backup scheme), it's a good way to go, but don't try doing it over the phone; you'll lose all the time you saved by doing your front end in Access, and then some. ;>
Thu 08 Apr | Bob | I just ported an internal Access application to web-based php/mysql because, among other things, the Access app had major record-locking and corruption problems. It was a basic customer contact tracking system with about 15 users, 7 tables, 60,000+ contact records, and about 150 new contacts per day. it just couldn't handle the "load", although I think a lot of that was due to the design my boss created. she's an idiot.
Thu 08 Apr | pdq | Look, if you know SQL Server then you know MSDE. It's exactly SQL Server.
Five users and you may be fine with MS Access depending on the usage. I'd spend a couple of hours with MSDE and see if you can figure it out.
Thu 08 Apr | Kyralessa | And of course, if you only sort-of know SQL Server, then...
Go with Access, since you know it, and look at porting it to MSDE later. This could be good practice in seeing whether your data access strategy allows you to port easily.
Thu 08 Apr | suhu | Thanks for all the feedbacks. I will look at MSDE like some of you suggested. And depending on time constraints I will try to make the application db independent ( no Access specific SQLs etc) at the beginning and see how it goes.
But I will definately start looking at other databases after this project for future systems especially in a multiuser environment.
Check out one of the projects coming out of MS Research, Xen. Its an attempt to integrate XML and SQL into an OOP language as first class objects.
Theres a good summary article about it (with examples) by Robyn Peterson on ExtremeTech:
http://www.extremetech.com/article2/0,1558,1491790,00.asp
Still much too early to see whether this will help alleviate the impedance problem Joel mentions in todays post, but as a .NET programmer, Im glad to see theyre seriously thinking about it...
Thu 08 Apr | Dan J |
Check out the link that Joel provides at the beginning of the post.
Thu 08 Apr | Steve Jones (UK) | The code samples look interesting, but I wonder how efficient it would be.
For example:
//Selecting all customers named Fred with a custid greater than 100
Customer* Freds =
CustTable[it.name=='Fred' && it.custid>100];
This seems nice syntax (if you ignore the fact that it looks kile Freds might be a pointer to a Customer), but I wonder how it'd be implemented. If it is clever enough to build the appropriate SQL (select ... where name='Fred' and custid>100), then great.
On the other hand, if it simply fetches all the Customers, instantiates them, then iterates over them to see which ones satisfy the criteria, then this is not much good (especially if you have millions of Customers).
Thu 08 Apr | Steve Jones (UK) | Doh, "kile" should be "like".
Thu 08 Apr | Steve Jones (UK) | Maybe I'm reading too much into that code sample, but 'it.name=="Fred"' seems to imply that it's going to instantiate the Customer objects, otherwise it would have said 'it.name="Fred"'.
Washtec is a bit leftie for me -- they advocate unions for tech people, and I dont think Id be willing to become a union member... Im more of a free market type, but the current markets are not free -- but I like the ad they want to run later this year in major papers and magazines.
http://www.washtech.org/wt/outsourcing_ad.php
Its certainly worth a read. The proposed ad is short and succinct. I just made a (first time ever) donation based on the ad text, and Im not a joiner or much of a political advocate.
Wed 07 Apr | ThrowTheBumsOut | Ah... I see links are apparently not allowed. Washtech.org/wt/images/CWAWashHiTech_v2r5.pdf will take you there.
My apologies if I'm disobeying any site rules. If so, pls let me know. Thanks....
Wed 07 Apr | no name | If you are in favor of free markets, why would you support this group. I don't follow your reasoning. What does "the current markets are not free" mean? How are they not free? And how does running this ad change any of that?
Wed 07 Apr | no name | Free markets are a con job, you dork. Free markets mean corporations are free to do what they want, which means senior managements get richer while the rest of us get poorer.
Freedom means Daryl with his MBA gets $250,000 because he says that's what he's worth, while Julie the programmer scrounges for $60,000, even though she thinks she's worth the same as Daryl. That's free markets.
Thu 08 Apr | Philo | The fact that democracies and capitalist societies have the highest standards of living on the planet is quite simply not an issue here. We should definitely get government more involved in running businesses, like they did in the Soviet Union ('Bread lines' - just big business FUD. Honest)
Philo
Thu 08 Apr | Tayssir John Gabbour | Shrinkwrap software depends on gov't intervention; we argue it is best for society if law-abiding citizens are stopped from copying certain numbers from computer to computer. So while I don't like intrusion, we can't keep pulling out the Government Intrusion card when we tell the BSA to audit businesses who might be copying numbers.
Thu 08 Apr | no name | You're so right Philo.
Corporations should be free to hire 8 year old children, dilute food with cheap substitutes swept from the factory floor, cut down forests and assassinate rivals, as they do in South America.
How could I have been so ill-informed?
Thu 08 Apr | Not a Capitalist | Another view of 'free markets':
http://www.uaw.org/atissue/atstory.cfm?atId=78
Thu 08 Apr | Ali | The fact that Japan (where the government is involved in big business) has the highest standards of living on the planet and the Asian tigers have the highest growth rate
on the plant, is quite simply not an issue here. We should definitely get government less involved in running
businesses, like we forced the Asian tigers to do in 97
(Oops!) or we told Japan in the early 90s (Oops!)
The Asian crash and the Japanese - just lefty FUD, right
Philo?
Thu 08 Apr | | '''How are they not free? '''
There's a bajillion regulations on trade, and that's just in the US. If you want to import/export, then there's another bajillion regulations. If you can even import/export what you want.
For example, it's easy to export your job to India, but it's very hard to export any goods there. http://seattlepi.nwsource.com/business/165057_outsourcing17.html
Thu 08 Apr | Stephen Jones | If exporting is so hard for American industry because the rest of the world is ganging up on it, how come I am wearing American shoes, American jeans, and typing on an American keyboard using American software, ahd have been doing the same for longer than I can remember?
And can all of you guys in Peoria or wherever post in to say how easy it is in your town to see a Croatian film for example?
Thu 08 Apr | only have an 81 IQ and still pegged it | Stephen Jones ,
World trade 101: Not all countries have the same rules and restrictions?
Thu 08 Apr | no name | 'how come I am wearing American ....'
I'm not here to defend the united states, but personal anecdotes don't really make for a sound argument re: trade policy.
Thu 08 Apr | | 'world is ganging up on it'
Actually, I never even said this. You must have quite the ax to grind!!
Thu 08 Apr | AnonAnonAnon | Stephen,
I would be interested in what Jeans, shoes and keyboard you have. Keyboards are almost exclusivly build in Asia, while Jeans and shoes are rare to be created in the US.
While they may have US manufacturers names on them, that does not make them made in the US.
As for fair trade, my proposal is simple, if your country does not have the same trade policies as ours, you get a tariff until you do. As many have pointed out, the issue with India is not free trade it is fair trade. Indian law prevents employers from displacing Indian workers. You want to trade in India? You have to build and employ there.
I am using Tomcat to launch a Web Application.
If I use Port 8080, then users will have to enter the port number in the URL as well - i.e. www.abc.com:8080
At the moment I use port 80 so when users access the web application they just have to type the URL i.e. www.abc.com.
If I would like the connection users have to the server to be in SSL - will I have to make users access the site via the URL www.abc.com:443?
Wed 07 Apr | Brad Wilson | Not precisely.
http://www.abc.com/ defaults to unencrypted on port 80.
https://www.abc.com/ defaults to encrypted on port 443.
You can't forget to change the protocol. If you want to use a non-default port, both http and https URLs support the :port option.
Wed 07 Apr | Almost Anonymous | In addition, you can put some code in the default page for you site that users accessing the unencrypted site 'www.abc.com' are automatically redirected to the encypted version 'https://www.abc.com'
Thu 08 Apr | fw | It's not quite that easy. You can't bind to a port (generally) under 1024 unless it's run as a super user. It's best not to run things such as tomcat as a super user, for security reasons. That means an exploit in tomcat gives root/Administrator on the whole machine. Big no no.
Thu 08 Apr | Brad Wilson | The "work-around" that's used is a small super-user run daemon that then forwards the connections to non-priviledged code. Then, only the daemon needs to be hardened against any attacks of priviledge elevation.
Thu 08 Apr | fw | yeh, it would depend on the setup.
For example, if you're using NAT for your external IP address, just port forwarding, there's no reason why you can't forward to a different port. So if the request is for abc.com:80, you could just forward to 192.168.x.x:8080 anyway.
Also, if you're using tomcat, you could use mod_jk to forward requests, which also offers failover and load balancing for your tomcats. Of course having one webserver forwarding these isn't good either ;p
In my work Ive seen that the most effective anti-piracy and software distribution method for non web-apps used in corporate world is by using license server (eg. FlexLM, Elan) thingy.
We can just create a GPO distribution of the apps, and then just let the floating license scheme take care of the usage. I mean we dont have to NOT install the software because of license limitation, or installing the software WITHOUT having to exceed the license that we have.
What do you guys think? Why not more applications use this scheme?
Wed 07 Apr | Brad Wilson | License servers are easily bypassed.
Wed 07 Apr | Dan Maas | Yes I think network-based license servers are probably the easiest way to handle certain types of licenses (like only N copies allowed to run concurrently, or for N hours each day, whatever). They aren't any more fool-proof though. FlexLM is cracked often. But if all you care about is keeping honest customers honest, then it's a fine way to go. (oh, also make sure the licensing software *works* - bugs in licensing have got to be 10x more annoying than bugs in the software itself)
Wed 07 Apr | Christopher Wells | Consider its effect on performance too. For example, we had ClearCase clients and a server on our LAN, but with its license server somewhere away over the WAN ... and the resulting run-time performance was underwhelming.
Wed 07 Apr | Geek | License servers can also be super annoying if you're trying to do something you know is legal but the license server doesn't.
I've never seen a copy protection scheme that wasn't either very annoying to use, or prevented me from using the software legally.
Thu 08 Apr | christopher baus (www.baus.net) | I'm currently working on a such a scheme. Generally they fall into the keeping the honest people honest realm. This isn't too bad as most of our customers when reminded that they have exceeded their number of licences, pay the additional license cost.
Thu 08 Apr | Ali | Geek -->
'License servers can also be super annoying if you're trying to do something you know is legal but the license server doesn't.'
Care to give example?
Thu 08 Apr | Martin Beckett | Like the application crashed , or someone logged out and the app doesn't unlock the licence if it recieves a shutdown message.
Or a licence server which keeps a licence locked for 12 hours after an app stops responding or insists that every other user closes their app before you can recover a stuck licence.
Or a licence server which locks itself to the CPU id of the server so when you try and upgrade you get into a circus between Sun / Sun support / Licence manager support and the software company about getting the licence moved.
This is what I remember of Autocad and mathematica on SunOs when I was in grad school.
If any one knows of a Windows+linux licence manager that works ( and is cheap ) let me know.
Thu 08 Apr | Dan Maas | Dear god I stopped upgrading Mathematica precisely because of the licensing. I was tired of calling them up to get a new code every time I had to reinstall for any reason.
As I said, licensing bugs are the worst. If someone pays you to buy your software, and they can't use it, you've got a serious problem.
BTW I prefer licenses being locked to MAC addresses rather than other hardware. At least you can change a MAC address in an emergency. (and this doesn't really count as a 'hack' of the licensing system, since you'll have all sorts of problems if two machines on your LAN use the same MAC)
Thu 08 Apr | madking | Where I work we try to avoid software using license servers because it adds one more "single point of failure." If the license server goes down (or the connection to it), then you're out of luck.
Thu 08 Apr | tapiwa | I agree with the folk here.
Licencing servers are a b*tch to administer. They add more complexity, bandwidth overhead (some are really bad with clients polling continuously).
Go the dongle route, although even that is not infallable.
Thu 08 Apr | Just me (Sir to you) | We had to abandone a simulation package in the past because of persisting problems with the licence server (flexlm).
Thu 08 Apr | christopher baus (www.baus.net) | madking,
That problem is easily solved with redundant servers.
I have heard that its generally a bad idea to run MS-SQL on a machine thats either has a real IP or is not behind a firewall, so Im wondering if its a bad idea to run the free MSDE Desktop (or ASP) server. Microsofts website says that you can run MSDE as the database server for ASP.NET websites. However, Im worried if I run it, Ill be compromising my machine.
Has anyone here had any experience running the MSDE Desktop (or ASP) edition with a direct connection to the Net? Am I being an overly paranoid MySQL fan?
Thanks!
Wed 07 Apr | Philo | If you're running the database for a website, it doesn't need to be open to the 'net - it only needs to be open to the process running the site. Even if it's on the same machine, you can firewall it so 1433 calls are only allowed from the local host.
Philo
Wed 07 Apr | Duncan Smart | I think there's a setup switch for MSDE to disable all network protocols.
To be doubly sure you can run svrnetcn.exe (it should be in your PATH after installing MSDE) - here you can disable all network protocols. To connect to the database on the local machine you use: