last updated:10 Dec 2003 17:10 UK time
|
 |
|
(Comments added for week ending Sun 07 Dec 2003) | View Other Weeks
|
|
| C# Games | Sun 07 Dec | Andrew Burton |
| Back when I used to lurk in borland.public.delphi.non-technical, the topic of What games are written in Delphi came up. I was looking at my VC++ and C# books this weekend, and wondered if anyone knew of any games (or any non-business or non-web) written in C# on the market or in production.
Im a C# n00b as it were, but given that I keep hearing both C# is out there to replace Java and dont write BIG, graphics heavy games in Java(1), I was curious if C# had been used. Thanks!
--
1. I am not condemning Java or passing judgement, just repeating what I have heard during conversations about 3D games, virtual machines, and the XBox. |
| Sun 07 Dec | Dennis Forbes | The quick answer is that there are no professional C# authored games out there. You can find a mod of Quake 2 that is 'managed code', though in reality the managed code is an extremely small subset of the code for Quake2, and is really acting as a dispatcher to the actual native cod.
Having said that, with a proper stub to the 'native' gaming APIs (OpenGL, DirectX), which themselves are stubs to the video driver, which itself is often just a stub to on-GPU implementation, it is entirely possible to write a cutting edge game in many of the less efficient languages -- the point is that with a full hardware abstraction layer, it's the graphics card that is doing all of the heavy lifting, so if the stub-interoperations consumes a tiny iota more of the main CPU's time, it is hardly relevant. Of course this presumes that the game is primarily graphics bound, as most currently games are unfortunately, and that you're not trying to eak out every bit of performance for advanced AI or to model an entire war (ex. Falcon 4, which was a game _way_ before its time. I'm tempted to install it again to see if today's PCs are up to the challenge...) -- in that case less efficient languages become less realistic.
Having said that, this presumes that graphics are the majority of the |
|
| New Career? | Sun 07 Dec | RP |
| Hi everyone.
I believe Ive reached my limit. Im 25 and my career is quietly being destroyed. Ive been writing software professionaly since I was 19. Began with ASP and Visual Basic, moved to PHP and now Im doing Java/J2EE and C++.
But current events, especially that entry on the NYTimes has made me think twice about where were going. So I decided to switch careers. Or at least I began to think about it.
How do you guys feel about it? Going to college all over again and retrain myself. I had health care in mind, because its an area that has had a lack of professionals since ever.
Any ideas? Opinions? Something. |
| Sun 07 Dec | Ori Berger | Do you have a passion for something?
Go do that. You'll get by, somehow, and you'll be doing something you like. |
| Sun 07 Dec | Dennis Atkins | RP,
If you're thinking of being a registered nurse you should definitely talk to a few of them first and make sure you know what you're getting in to. Used to date one and their troubles seem worse than ours -- very stressful and low pay and you're stretched so far that people are dying because you can't give them the care they deserve because the administrators would rather make you work overtime till you're dead exhausted than hire another nurse. Well, at least in the city I lived at the time. Perhaps more rural areas of the country are better for nurses. Be real careful you don't get into debt going back to school. If you can get a full ride scholarship, it'd be worth it though.
If I had it to do again, maybe I'd get a commercial license and fly 747s. But I hear times are real bad for pilots right now too, though how bad can it be really? |
| Sun 07 Dec | no name | Be a radiographer. Seriously. I'm considering it myself. |
| Sun 07 Dec | Kristian Dupont | I would say that if you have a passion for something new then by all means, go ahead. But if you're planning to start all over just because times are changing for software developers, I would advise you to think twice.
Andrew Hunt and Dave Thomas spoke about this topic at JAOO (the slides are here: http://www.pragmaticprogrammer.com/talks/HowToKeepYourJob/HTKYJ.html ). Their point is that if you want to keep your job, you should invest in yourself and not just rely on the technologies and methodologies that you are familiar with. Keep up to date all the time and look around for new things.
I am also 25 years old. Having worked with software development for some 7 years professionally, I feel that I am only getting started. There is so much software out there waiting to be developed and I am not worried a bit. Am I being naive? :) |
| Sun 07 Dec | RP | And how are you?
Ori Berger, that happens everywhere, but nowadays the only jobs not going to India and China are the health care related ones.
You got paralegal jobs, accounting jobs, development jobs... hell, that NYTimes story made me open my eyes. We're commodities. We're not needed anymore. |
| Sun 07 Dec | Dennis Atkins | Well, they are outsourcing some medical jobs -- evaluating xrays and ultrasounds is now done in india.
But you've got the right idea that not all medicine can be outsourced.
You might have the right idea if looking into nursing -- times have changed since I last was in touch with it. This article from today's paper says that nurses are naming their own hours and forcing hospitals to bid on their services, to the tune of $30/hr:
http://story.news.yahoo.com/news?tmpl=story&cid=541&e=9&u=/ap/nurses_shift_bidding |
| Sun 07 Dec | Dennis Atkins | Don't pick PC repair as a career or you'll end up like this unfortunate fellow:
http://www.nytimes.com/2003/12/07/nyregion/07HOME.html
> Perry Vona works five days a week on a busy stretch of 43rd Street between Fifth Avenue and the Avenue of the Americas, which is not to say that he keeps an office there. Mr. Vona, who is homeless, works on 43rd Street — literally — repairing laptops, hard drives, keyboards, scanners, monitors and whatever other detritus of the digital age he can scavenge from the trash.
>He is a common sight amid the pedestrians in Midtown, who might encounter him at 8 a.m. on a weekday sitting in a swivel chair, hunched over a stubborn piece of computer hardware plugged into the base of a public light pole. Working curbside with a fully stocked toolbox, he claims to sell his products to wholesale buyers and bargain hunters for as little as $60 to $80 apiece.
>'I get them running, then I get them out the door,' said Mr. Vona, whose open-air repair shop has no door. 'I don't care what shape they come in, I can fix them.'
>'I do the upgrades, everything,' he continued. 'When I get done with a computer, it'll work.'
... I wonder if network administrators will be next? |
| Sun 07 Dec | Mike Swieton | I don't get that guy. What happened that has a man with that obviously expert level of skill out on the streets? A person that can honestly claim 'If its computer hardware, I can probably fix it' should be able to get a job, somewhere.
And #2, why doesn't he get out of NYC? Sure, he may not be able to make much money doing that in another city, but there are places that are far cheaper to live in, and for the cost of one of those products he can take a bus to pretty much any location in North America, and in all likelyhood have money left over for food.
I just don't understand this. This happens a lot: skilled people with no ties to their location (if he had family there, they should have helped him, or at least spotted him bus fare. You've burned a lot of bridges if you can't scrape together bus fare from your friends and family) choose to stay in an expensive place as homeless, when they could live - with an apartment, or roof at least - elsewhere on the salaries and wages they are quite capable of earning.
Can someone please explain this to me? |
| Sun 07 Dec | RP | For what I read, that guy was a metal worker who suffered an accident and spent some time in a coma. When he woke up he had mental problems.
Oh, and he lost his parent when he was 4 months old. He grew up in several foster homes and was probably abused in some of them (or so he says).
Basically, I don't think he's salvageable. He has deep problems that basically stop him from entering mainstream society. |
| Sun 07 Dec | braid_ged | RP,
I feel your pain buddy, I am 25 in a few days, have a similar work history, and it is apparent that this is the 'settle zone'.
Your experiencing pain as you realise that continuing on this course will not take you to your goals, yet changing course means much pain and uncertainty. You feel cheated.
On one side you have your dreams and hopes, your plan, on the other hand the effort required to advance is increasing dramatically, and at present life doesn't seem to have delivered on it's promises.
I have a feeling that a bitter computing person will only become a bitter health care professional or a bitter journalist etc.... ALL problems exist within.
The few things I have learned from direct life experience, as opposed to reading or hearing them are :
- you wont get rich working for somone else.
- you wont get as much freedom and control as you need working for somone else.
- it's always more subjective than you think, when your mood changes the whole universe will literally become a different place.
The simple conclusion seems to be life is harder than we thought it would be.... we can either settle for what we have or up the effort and go for what we want.
You have made the first step in admiting you are not happy, next define what you want, work out what you would have to do to get it, decide if you are prepared to do that, do it, or settle.
Also, I think it is worthwhile to realise that a lot of people put a lot of effort into making you feel unhappy and unfulfilled. They want you to feel inadequate unless you buy their product, they want you to long for the success that will drive you to show up to a silly job for 30 years.
My plan is to double the work rate and go for it. Try new things, fail, learn, keep motivating myself... |
| Sun 07 Dec | Clay Dowling | Being a few years older and finding myself in the same position, I can say that you need to find something you enjoy doing. I dropped out of the software industry because of burnout. A couple of years working in other fields brought me back, at least partially. I'm doing contract work now, and honestly finding it a whole lot more fulfilling than working for a company.
But I've also started building the bridges that will let me do other things. I love beer, and I really love brewing beer. So I wrote letters to any brewery within a couple of hours of my house (there are a lot of them) and asked if they could teach me more. A solid ten percent called back, and I've worked for them brewing beer and learning the business. It gives me a direction I can move in when a) I don't want to make my money in front of the computer and b) all the programming jobs pay too little to keep a roof over my head.
So start finding out what you can do to build bridges out, and see if you like doing other things. I couldn't be happier making beer on the weekends. Maybe you want to try out bricklaying or cabinetry. You'll be suprised at the options that turn up. |
| Sun 07 Dec | Bella | > very stressful and low pay and you're stretched so far that people are dying because you can't give them the care they deserve because the administrators would rather make you work overtime
Cool. Put in your 40 hours in 3 calendar days. (Or like firemen, who do it in 2 calendar days) Spend the rest of your week as you please, or building a THIRD career. |
| Sun 07 Dec | Sum Dum Gai | Um, the poster says people are dying, and your response is 'cool, maybe I'll have time to build a third career'?
Thank god you're not in nursing. |
|
| "Low Skill" Rhetoric | Sun 07 Dec | Bored Bystander |
| I think a lot of developers get overly cranked up about management specialists talking out of their asses about coding as low skill work.
This stuff goes in cycles, and the perception of programming as monkey work exists because it not only contradicts the real truth but is very useful to the agenda of outsourcers and business managements.
I truly believe that programming is the Rodney Dangerfield of brainwork: its status has always been under concerted, deliberate attack.
The reasons for attack are schadenfreude, envy, jealousy, and the ever present desire for group A presumably in control to need to get sticky pants over their vaunted status over group B, the doers of actual work.
The point is, only a developer understands the development process. And we make the actual product thats eventually sold or used by others. A manager doesnt, cant and never will. A hand waving PHB whose job is to diffuse blame and responsibility for decisions has no conception of performing work that can actually, specifically succeed or fail.
I say ... dont worry about it too much. Its a mind game being used to prevent us from realizing our potential as individuals and as a profession/occupation. |
| Sun 07 Dec | Mike Swieton | I think you make a dangerous statement when you say that only a developer understands the developement process. I don't see why the person has to be a professional developer. I think that your statement is (or at least sounds, to me) a bit too general: I think the process is best understood by those with some basic software development experience, which would include managers, salespeople, whoever.
I'm always very careful to qualify broad, sweeping statements. After all, there are exceptions to everything (except this). |
| Sun 07 Dec | Dennis Atkins | I agree with you BB -- concentrated and deliberate.
Makes me want to burn down the building to get my red stapler back. |
| Sun 07 Dec | T. Norman | There is also the constant rhetoric that 'IT is a commodity' -- IT is the same no matter who or where you get it from, so just get it from the cheapest source available.
And while all the 'low skill' and 'commodity' mantra is being shouted, at the same time they require 10 years experience in Java and 5 years of Windows 2000 for job applicants. |
| Sun 07 Dec | Dennis Atkins | Yeah Norman! What about that! Great point. |
| Sun 07 Dec | Evgeny Gesin /Javadesk/ | Quality coding required well defined guidelines (such as Sun Java coding convention), a UML tool generated class/interdace templates and good understanding of the design. |
| Sun 07 Dec | GP | Come on, Mike. I dislike broad statements too.
But what do you call 'basic software development experience' ?
In _my_ experience, 'basic software development experience' is the main cause for deadly wrong estimates ('hey, merging these databases shouldn't be that long. After all, they're all columns.').
Before being a professional developer, I had no clue about software development process. Either they are smarter than me, or they have no clue. Or both, probably. |
| Sun 07 Dec | Full name: | What's wrong T Norman, taking offense to 10 years of your life being called a commodity? |
| Sun 07 Dec | Bella | > I truly believe that programming is the 'Rodney Dangerfield' of brainwork:
Really? Then why can a programmer (w/ varied skills, 5-7 years experience, presentable, eloquent) make $20,000 month as a consultant? Clearing $200k a year is hardly 'getting no respect' |
| Sun 07 Dec | GP | Maybe we could ask ourselves if we do not have the same kind of feeling about those who do a job that we do not know or understand.
For instance, what do we think about those who work to provide commodities : water, electricity, phone, roads ? Well, I'm not sure. Maybe we prefer to think that they do not exist. |
| Sun 07 Dec | T. Norman | People with 10 years experience in Java aren't commodities; they are science fiction time travelers. |
| Sun 07 Dec | Ged Byrne | I think that there is one think that only developers seem to understand, and those with a simple grounding in the field cannot grasp.
There is no such thing as a necessary low skill coding job.
Yes Mike, I have qualified this: 'necessary.'
If something is low skilled then the computer can do it.
In the previous thread ... stated that he spent all his time just plumbing together API calls with standard error handlers. This is low skill work, and a total waste of time.
Yet so many of us coders are carrying out this type of work. It's a complete waste of time, but it pays the bills and so the practice of 'warm chair attrition is prevelant.
Clever management have dealt with this situation. They are paying people on the other side of the world much lower wages to keep the chairs warm.
Again and again the directors attempt to squeeze development into the low skill mould, reapplying the patterns that worked so well with manufacturing and other areas.
They are getting it totally wrong. Developing software is like nothing that has ever gone before. |
| Sun 07 Dec | GP | (For the sake of contradiction, Norman :-)
From http://www.ils.unc.edu/blaze/java/javahist.html :
June 1991
Gosling starts working on the 'Oak' interpreter, which, several years later (following a trademark search), is renamed 'Java.' |
| Sun 07 Dec | analyst | Bored, this is certainly true.
Consider also how many projects depend on the manager getting detailed information and reports from a senior developer, generally called the team lead.
Usually the manager in this situation will be paid much more than the developers, including the bonuses for delivering, and will get the praise and rewards for the job.
In actual fact, the role of many project managers is better seen as that of a co-ordinator for the experts, rather than manager. |
| Sun 07 Dec | analyst | If anyone still has doubts what open source is about, Eric Raymond in his blog celebrates the effect of offshoring on reducing the pay for programmers:
'But in keeping with tradition here at Armed and Dangerous, I'm going to skip the easy, soft arguments and cut straight to the most important and contentious one of all — falling salaries are good for you.'
http://esr.ibiblio.org |
| Sun 07 Dec | analyst | Bored, one area where I disagree with you is your claim that it doesn't matter. It DOES matter.
Even the term coder is a loaded one that developers should avoid using.
It doesn't take long before politicians accept the view that development is just a routine job, and let lawyers and accountants make decisions about development policy. For example, accountants spent the '90's telling business magazines they were better IT managers than geeks. And now they have those jobs.
A part of the open source movement is that it puts lawyers into positions of control in development inside organisations.
A lot of the agititation about 'security professionals' nowadays represents attempts by accounting firms to legitimise a lack of technical expertise for the role. In other words, to have accountants take these roles. Meanwhile the difficult work will be done by low-paid 'coders.' |
| Sun 07 Dec | Dennis Atkins | Ok, I think I agree with your post Ged (I am having a hard time nowadays telling who I agree and disagree with it's all become so complicated maybe someone could make a chart of everyone's position if only we ourselves knew what they were) but I want to comment on this common wisdom:
'They are paying people on the other side of the world much lower wages to keep the chairs warm.'
I think the overseas guys are doing more than keeping chairs warm! If that's all it is, I will take on all of those chair warming jobs and do it from home and I will only charge 1/3 what the overseas fellows are asking! |
| Sun 07 Dec | Dennis Atkins | > Eric Raymond ... celebrates ... reducing the pay for programmers
Doesn't Raymond get paid money from somebody? How does he pay his rent? |
| Sun 07 Dec | Simon Lucy | But peculiarly you may run into some skepticism that you will work efficiently or unsupervised at home whereas if you were several thousand miles away (and employed by a company to simply be), then this becomes simply a management and contractual issue that can be solved. |
| Sun 07 Dec | one programmer's opinion | BB wrote, 'I say ... don't worry about it too much. It's a mind game being used to prevent us from realizing our potential as individuals and as a profession/occupation. '
The above statement is about the only sentence from your post that I strongly disagree with. That statement is analogous to a what a senior manager might have said to his reports in the 1980s/1990s, 'Don't worry about all of the downsizing and outsourcing that is currently happening throughout the industry you folks possess valuable business domain knowledge that cannot easily be replaced.' |
| Sun 07 Dec | Dennis Atkins | 'A part of the open source movement is that it puts lawyers into positions of control in development inside organisations.'
OK, this looks like good material analyst, I'm biting... tell me more about your theory. |
| Sun 07 Dec | Dennis Atkins | Yeah Simon I know, but I'm not proposing I work efficiently at all. I wasn't planning to do any work at all. I understand the position to be that of 'seat warmer' which I can do for 1/3 the cost of an overseas seat warmer. Planning on multitasking that job with some freelance work for the Nielson Ratings Corporation and maybe do some literature reviews of contemporary nude portraiture. If any 'mindless typing' is required, I have a contact that can get be some rhesus monkeys to bang away at the keyboard in a foreign language known only to them. |
| Sun 07 Dec | Dennis Atkins | Ha! That's a good one, OPO. |
| Sun 07 Dec | Walter Rumsby | > Clearing $200k a year is hardly 'getting no respect'
How much does Rodney Dangerfield get paid? :)
Does anyone know if we can contact these people and ask them to expain their 'low skill' quote? Maybe Joel could interview them and ask them to justify their position. |
| Sun 07 Dec | Paul Mansour | Ged is right on. I just posted this on the previous thread before I got to this thread:
There is really no such thing as 'low-skill' coding, only bad coding. A program may always be written to perform a rote programming task. This is the essence of programming. If a programmer is not constantly boosting his own productivity (by coding) he can hardly be said to be a programmer.
A 'low-skill' coding job can by definition be eliminated by a skilled programmer. |
| Sun 07 Dec | www.marktaw.com | 'It's a mind game being used to prevent us from realizing our potential as individuals and as a profession/occupation.'
I agree with this statement. Outsourcing keeps you scared and despite what 'Must be a Manager' said in the 'Well, this is it' thread, fear causes you to make bad decisions. |
| Sun 07 Dec | Bored Bystander | In response to the many assertions that dispute my original contention that 'it doesn't matter'. Maybe I should have refined that statement as follows: if it really bothers you, you should get out of the field, because 'putting down programming' is embedded in history.
I meant that trashing of programming has *always* existed. Programming has *only* been respected and defined as mission-critical in a tiny minority of cases and times in recent history.
I've observed programming put down as a career choice and as an engineering-related discipline since the late 70's. I've lived with it in Fortune 500 product development labs, in DOD development groups, and in small company software development. And for at least as long I've observed programmers themselves put down on a personal level as overfocused, trivial, annoying, so- smart- they're- f*cking- stupid wankoffs.
The putdowns historically come from everywhere: electrical engineers who feel that their hardware knowledge is a vast superset of programming skill; line managers who genuinely believe that they are closer to God and more moral, and we developers, less so; executives who delight in seeing us as overly bright and malleable cretins; marketing types who have that shallow jock urge to haze us like a college prank; etc.
I would say, basically:
Nobody outside programming REALLY knows or understands what you do. They may think they know but they don't grok it. They can observe what you produce, they can attempt to quantify the intellectual activity, but they will always fail unless they are one of us.
Nor can anyone outside programming bottle up programing as a 'process' except within very, very rough parameters.
Programming has generally been an invisible occupation. Most people in other walks of life have no clue what you do.
The recent attention given in the business press to defining us down as useful simpleton morons came about mainly because the need for our services in our society has greatly expanded in the last 10 years, so much so that we are now highly visible as a cost center of the economy. We are now worth commenting on. Prior to that, we were not well regarded either, but we also weren't front page news.
That's all. And some of you guys live up to these 'idiot savant' labels by microanalyzing some of these statements to death and arguing for the sake of arguing. The broader message is that this stuff is practically inevitable, so either lobby for change (off of any programmer's BBS, IE in meatspace), get out of the field, or develop a thicker skin.
YES, I sure as hell wish that what I did for a living generated more respect than it does. But I also know that this disrespect is the ocean that we fish swim in. It can't be changed by individual efforts.
The point is simple - treating programmers like irrelevant idiots has always been done, and is the default condition of our field. |
| Sun 07 Dec | Walter Rumsby | 'Nobody outside programming REALLY knows or understands what you do.'
Which is why software project management is so difficult (aka 'high skill'?). It's pretty hard to manage something you don't understand. |
| Sun 07 Dec | Eric Debois | I think its because many dont see the amount of problem solving involved. Only the programmers are involved at the level where this is really visible.
When the 'outsiders' look at the specs and the results it always looks obvious how it should be done.
It never occurs to them that it looks obvious because someone made 1000 good design decisions. |
| Sun 07 Dec | analyst | Walter, not sure what you're saying when you say software project management is so difficult (aka 'high skill'?). Not sure if you're suggesting it is, or it isn't.
In general terms, what we're in the middle of is a cultural war.
Project management is generally defined to be a 'high skill' role - even though it requires much less expertise and learning than development - simply because most project managers get into the role other than through development.
Thus, for them to maintain their cultural role of power within the organisation, they have to maintain that it's a more important role.
The second main reason is that project managers by definition are more involved with the communicating regarding projects. They write the reports, go to the board meetings, generally serve on professional committees more. Thus their views acquire more weight, regardless of whether they're right.
Dennis, re open source pushing lawyers, my point is that any significant use of open source gear in products or internal systems involves a lot of licence checking and sometimes getting special copyright approvals and so on, and lawyers do all this. It can lead to a situation where the project is driven by lawyers. By comparison, I have never seen that situation in a normal software development environment. |
| Sun 07 Dec | Sum Dum Gai | analyst:
I wouldn't take Eric Raymod too seriously. He's just a self important blowhard who wants more than his 15 minutes of fame. I think a lot of people think of him as a bit of a nut, after all he's resorted to making threats of violence towards someone who he disagreed with on a mailing list!
In other words, don't take what he says as speaking for open source, because I don't think many people really believe he does. |
| Sun 07 Dec | hoser | ESR is merely speaking what he observes. Anyone who thinks that they're job is somehow more special or ought to be protected needs to reread the ESR post.
If you think you're immune to Walmartization, then:
1. You're writing code and servicing clients at a rate that demands a higher price.
2. You're dellusional.
The real problem is that its pretty hard to tell which is which until its too late.
Do you think that even Microsoft is immune to Walmartization? http://www.walmart.com/catalog/product_listing.gsp?path=0%3A3944%3A3951%3A41937%3A86796%3A96356&dept=3944&cat=96356&sb=61&bti=0 |
| Sun 07 Dec | one programmer's opinion | Well, just to be clear I objected to your 'don't worry' statement.
BB wrote, 'putting down programming is embedded in history.'
Yes, but imo the reasons why haven't been consistent over time.
The following is just a few simplified reasons why I think many corporate executives held a low opinion of their programmers (in-house and contractors) a few decades ago.
When I first got into the business of business software development, the mainframe ruled the world. During that era, most paid programmers that I knew spent all day writing source code according to a specification. There was a strict job hierarchy in place just about everywhere that went something like this:
* Programmer (from junior to senior)
* Systems Analyst
* Project manager
Programmers weren't respected all that much in the business community during this era because:
* Programmers were at the bottom of the corporate software development food chain and many of them had little prior programming experience before joining the organization.
* Most programmers did only one thing all day long -- they only wrote source code and mostly according to some pre-made spec. They didn't touch the hardware or the OS, they typically only knew one programming language, they typically only knew about one DBMS, they rarely participated in database creation, and much of the programming work being done was pretty much the same at just about every corporation (IT department) that employed programmers.
* The systems analyst (and sometimes the PM as well) did most if not all of the abstract project work. He/she typically exerted a significant influence over the organization in which he/she worked. Note: most analysts at the time were ex mainframe programmers and many could still write source code just as well as the programmers.
* Core software systems (purchasing, payroll, etc.) were the primary products being built (ERP was still in its infancy) inside most corporations. This type of project work typically required a whole slew of specialists (computer operators, DBAs, programmers, systems analysts, project managers). Why am I mentioning this fact? Because this along with the fact that most senior techies had previously done the same type of work as those lower in the food chain were currently doing made it relatively easy to determine which programmers were good at their job and which weren't. More importantly if a programmer suddenly quit or became ill -- in many instances -- an analyst or a PM could step in and finish coding any incomplete applications. |
| Sun 07 Dec | hoser | analyst: you're fucking oblivious.
1. What was the last project, for profit or not, that used open source code? If you can name one, what level of legal involvement was required?
Our company produces for profit software built on open source software. The legal counsel we hire, at an hourly rate, has the sole responsibility of fending off patent claims from proprietary software companies and building our IP base. We have never spent 1 cent on open source IP conflicts.
Open source is simple: you modify it, you submit it. It really is that simple. There are companies that seem to have a problem dealing with this reality, in which case copyright holders, the opensource authors, will assert their rights.
2. Have you ever partnered with Microsoft to redistribute their OS as part of a product? How about VxWorks, OS/9, pSOS or any other embedded OS company for which you redistribute the OS as part of the product. It requires a team of Jersey lawyers wearing Armani to get a favorable deal.
Your statements demonstrate the fact that you've never been part of a team which had to obtain closed source redistribution rights. You have no clue. |
| Sun 07 Dec | Sum Dum Gai | 'ESR is merely speaking what he observes. Anyone who thinks that they're job is somehow more special or ought to be protected needs to reread the ESR post.'
That's not what I specifically take issue with (although I happen to disagree with ESR's politics and hence his conclusions about the free market being so wonderous, that's beside the point here).
What I object to is analyst's characterisation as ESR's post shows why open source is so dangerous. Primarily because I don't feel that ESR is in any position to speak for open source. I'm not even sure any one person could be, due to the nature of the beast. |
|
| Building Different File Viewer | Sun 07 Dec | RasterBurner |
|
Whats the best language for developing
file viewers :
IE : I want to be able view the value in a file
which is in position 455 and has a lengh of 15 (its an amount) and another field which is in the file, lets call
it description, its located at position 500 and has a lengh of 50
Basically Ive to write about 30 of those file viewer (various file format some CSV other tab delimited)which enables you to view and changes the value if required.
A friend of mine has told me to try Perl, its great
for processing files and string, can anyone confirm ? |
| Sun 07 Dec | no name | C, C++, Perl, VB, C#, VB.NET, JAVA, Delphi... basically you name it, it can do it. What language do you know the best? Use that if you can. |
| Sun 07 Dec | Alex | Also, don't write them by hand. You could either write a 'generic' file viewer that uses a configuration file to describe the file to be viewed/edited or generate specific file viewers from configuration files that describe the file. If you're going to generate the code I'd recommend using xml for the config files as you can then use xslt for the generation. If you're going to produce a generic viewer then the format of the config file is up to you (I'd probably still use xml as you don't have to write a config file parser then).
Personally I wouldn't pick perl as the biggest labour you're going to face is the gui, and perl, though it has some gui builders, wouldn't be my choice. |
| Sun 07 Dec | Phil | Tcl/Tk |
|
| "Low-skill jobs like coding" (NYT) | Sun 07 Dec | Dennis Atkins |
| New York Times has a roundtable discussion about offshoring (yeah, I know, enough already but thats not why Im posting.):
http://www.nytimes.com/2003/12/07/business/yourmoney/07out.html?pagewanted=all&position= (reg. required alas)
Anyway, one quote in there caught my eye:
> Out in the Bay Area there are plenty of folks who would love to create a little bit of protectionism around their I.T. jobs, but we are far better off letting a lot of those jobs go. Low-skill jobs like coding are moving offshore and whats left in their place are more advanced project management jobs.
This statement was not contested by any of the other participants! Is writing code really a low skill job? Not even a medium skill, but... low? OK, lets assume its not (I think its high skill) -- does the general public believe its low skill? Or is it only the ceos who are outsourcing that think this?
Frankly, I doubt anyone who knows much at all about development would classify it as low skill, like garbage collection, street sweeping, ditch digging, and all the other low skill jobs. But these economists and ceos making outsourcing decisions really seem to believe they are.
I just wonder how prevalent this belief is. The New York Times accepts the assertion at face value as if it is common knowledge among the sophisticated and educated people who read the NYT. |
| Sun 07 Dec | no name | Although I didn't register to read the article, I also believe that coding is a high skill job. The wide spread availability of information on how to code and the ease with which one has access to a computer all add to the appearance of low skill. If coding is such a low skill then an education would obviously not be required to obtain a decent job. It would be like factory work or a McDonalds burger flipper.
Were any of the people on the board coders themselves? Perhaps it was just an off-the-cuff remark though I personally find it insulting. I don't like being a manager. I can do it and have done it, but what I really like is to code. It takes a person who can think and who is knowledgeable in all aspects of the problem domain. |
| Sun 07 Dec | not mr. johnson | Only a business professor would claim that the ability to manipulate a Gantt chart was high skill while coding was low skill. |
| Sun 07 Dec | ... | All I do these days is try to find existing API calls that do most of what I want, then write error catching code and simple business logic ("if" statements). Anyone with a high school education who can type could do my job. As far as I can tell, most programming jobs are like this. For 80-90% of programming, it IS a low skill job. |
| Sun 07 Dec | Dennis Atkins | THe participants met at the Algonuqin hotel in Manhatten last month. They were:
> The participants were Josh Bivens, an economist with the Economic Policy Institute, a nonprofit research group in Washington that receives a third of its financing from labor unions; Diana Farrell, the director of the McKinsey Global Institute, which is McKinsey & Company's internal economics research group; Edmund Harriss, the portfolio manager of the Guinness Atkinson China and Hong Kong fund and the Guinness Atkinson Asia Focus fund; M. Eric Johnson, director of Tuck's Glassmeyer/McNamee Center for Digital Strategies at the Tuck School of Business, Dartmouth College; and, via conference call from Singapore, Stephen S. Roach, managing director and chief economist of Morgan Stanley
For those who don't register, the article basically started with some token nod to concerns about outsourcing high tech white collar jobs and in the end said it was inevitable and the Luddites who oppose it must be fought with all strength of those who stand for the truth of the benefits of globalization. (that's my interpretation of their conclusion) |
| Sun 07 Dec | Dennis Atkins | Oh - it other words, the board was composed of overeducated wankers who had never seen a computer in their lives. (my interpretation, but I bet its accurate) |
| Sun 07 Dec | Philo | There are aspects of coding that are (IMHO) 'lower' skill. I've always felt that a smart code shop would set up a master/apprentice style affair - you have your 'masters' that do high-level analysis, proofs of concept, set up code architecture, etc.
Then, when it comes to the nitty-gritty of debugging, unit testing, validation against specs, you hand it off to the apprentice.
Over time, the apprentice learns (yeah, learns what an idiot the master is... [grin]) and can become a master in his/her own right. Apprentice moves up, you hire two more apprentices.
THAT would be a smart way to grow a business, instead of just hiring people willy-nilly off the street. Then you're also not paying someone $60/hr to nitpick through code to find a heisenbug.
Mind you, I still wouldn't want to see the apprentice work offshored...
Philo |
| Sun 07 Dec | Foiling the spammers | For registration - that's what mailinator.com is for :) |
| Sun 07 Dec | Dennis Atkins | 'anyone with a high school education who can type'
Hm - well I am sure that anyone with a high school education can sweep streets and dig ditchers. Anyone, as in 100% of them.
I would be willing to bet $5,000 that we could take a public high school graduating class in any medium to large sizeh high school and less than 50% of them would be able to develop professional applications with no training. Heck, I'm feeling generous, let's make it an even $10,000. |
| Sun 07 Dec | Tim Lara | Perhaps the 'low-skill' statement was borne from the general attitude among upper management types that the Project Managers/Architects are the ones REALLY doing all the thinking in the development process. I believe this attitude exists because when software development is explained to non-technical people (usu. BY the Project Manager) the process can be presented in such a way that it seems that after all the 'difficult' design work is completed by the Project Manager/Architect, all that is left for the 'coders' to do is to simply follow the elegant and exquisitely detailed specification documents laid out by the PM/Architect in a rote, step-by-step fashion as if building a plastic model of a car from a hobby shop.
In reality, of course, every sane developer knows that functional/design specification documents created by management are:
a) Never SO detailed that NO decisions ever need to be made while coding (no one can think of EVERYTHING up front, etc, etc) Even pseudo-code isn't going to cover all the possible snafus that could arise.
b) Often (if not constantly) revised DURING the development process when the developer tactfully informs the PM that the WAWA is never going to connect to the WUWU using the FOOBAR adapter...
Furthermore, another problem is that Pointy Haired Bosses don't typically understand that, like the Perl slogan says, there is almost always more than one way to do things when it comes to coding, and it often takes talent and experience to choose the best or most appropriate one.
Because they don't understand this, I really believe that a lot of PHB's think that coders are basically just 'filling in the blanks'... |
| Sun 07 Dec | it_ranter | The term 'coding' in and of itself is asinine. I am not a coder. Are you?
Wait a second--who's read Peopleware, here? What do programmers do?
They communicate human requirements and implement them in software. Even one who is not an advanced 'project manager' is on this boat to some extent. Project management can spec out requirements until the end of time, but the real craftmanship of programming comes from understanding how to implement those requirements in a way that users understand (often down to the 1%, in good software).
If we're just talking about implementing sorting algorithms, then yes, that is low-skill. If we're real programmers, working in the real world with real customers, then we deal with the much-more-difficult human aspect.
As for project management, that's clearly a sick joke. And even if it weren't, what makes it non-outsourcable? Is it 'business expertise'--which is, basically, schmoozing and cronyism. |
| Sun 07 Dec | Typical | Look up the bio of the guy who made this quote and you guessed it, his area of 'expertise' is operations management.
http://oracle-www.dartmouth.edu/dart/groucho/tuck_faculty_and_research.faculty_profile?p_id=Q1X3CS |
| Sun 07 Dec | Dennis Atkins | 'If we're just talking about implementing sorting algorithms, then yes, that is low-skill.'
OK well for what it's worth I disagree with even that. Low skill to me means anyone who graduated high school can do it with no training. So, maybe some reading is required to stock shelves and a day of training to know where the aisles are. Move to medium-low skill and we need to be able to operate the cash register or do some filing -- for your average high school graduate, some training is needed for those things, so it's medium-low skill.
Implementing sorting algorithms from a spec? Come on now, I've taught high school and I can tell you most students are not capable of doing even that.
Not that it matters -- I've never seen these 'low skill coders' in the professional market who recieve a magical complete spec and go through a step by step process to generate a working program. Has anyone seen these people working anywhere? Has anyone ever seen a spec for real life commercial products that actually specified stuff to the level where it could be 'coded' by low-skill, uneducated 'coders'? I think it would take far longer to create this mythical complete spec than it would to figure out what is needed and write the code. Now one place where they do have these sorts of extremely complete specs I admit is NASA. And indeed, writing the spec is what takes almost all the time. But, oddly enough, no one is suggesting NASA's code team are low-level jobs that could be done by any one with no training.
Regarding this 'high level project management type jobs' that these PhD economists are talking about. What's that about? If a project manager in the US was capable of managing a job remotely, then wouldn't they already be doing that, allowing for telecommuting from the low level coders? According to the round table, the cut off line is for 'high level project management'. Everybody below that level is a 'low level coder' whose tedious drudgery of a job rightly should be outsourced! |
| Sun 07 Dec | www.marktaw.com | > a roundtable at the Algonquin Hotel in Manhattan
HA HA HA. Literary joke.
> Now you've got this class of white-collar workers who
> are much more insecure about their job prospects, and
> their labor market bargaining power is being
> undermined.
This is about right, and basically a sophisticated and confusing way of saying what I've been saying all along:
Offshoring is designed to make the working class in America desperate and willing to accept lower wages as well.
> After falling by 2.8 million jobs since early 2001,
> employment has risen by 240,000 jobs since August.
> That gain, less than some expected, has not resolved
> whether the nation is suffering cyclical losses or
> permanent job destruction.
The gain is less than expected because the economy as a whole is picking up, but the jobs that traditionally would fill in the gap as people consume more (buy a car from Ford, they'll have to make another one for the showroom floor).
Ironically, when a piece of software sells, nobody has to be around to box & ship it, and nobody has to make a new one.
> It's a race to the bottom if we spend all our energy trying
> to protect existing sources of job creation, as the
> politicians in the U.S. Congress are inclined to do. ...
> The Chinese, for example, are reluctant to transform
> their habits from savers to consumers because they're
> losing jobs through the reform of their own economy,
> and they don't have social security or retirement. ...
> Over time there is a rising tide. But the political process is
> not that patient.
Ah spoken like a good managing director and chief economist of Morgan Stanley. The Chinese are to blame for their own economy because they're frugal and don't rack up debt like the good loyal American Consumer. Also if you want to blame the economy on someone, blame it on your congressman (and certainly not Morgan Stanley or any of the rest of Corporate America).
> This is exactly the same type of challenge farmers went
> through in the late 1800's, sweatshop workers went
> through in the early 1900's, and manufacturing workers
> did in the first half of the 80's. We've got to focus on
> setting in motion a debate that pushes us into new
> sources of job creation rather than bemoaning the loss.
> There are Republicans and Democrats alike who are
> involved in this protectionist backlash. They're very vocal
> right now, and they need to be challenged.
More 'blame the government' from a company who probably outsources a good portion of their back end processing. This time, combined with a 'historically, displaced workers will find enough work to become good loyal consumers once again. Why it's just a macroeconomic blip, and only affects me when I'm crossing the George Washington Bridge and a displaced worker tries to clean my windshield.'
> One is to look backward and hang on to what we think
> we're entitled to. The other is to recognize what has
> made America. Our virtues lie in a flexible and open,
> technology friendly, risk-taking, entrepreneurial,
> market-driven system.
Ah, a good old 'survival of the most willing to be exploited.' Interesting how he speaks for two seperate groups of people in one breath. The people who think they're entitled to jobs (i.e. the working class) and the corporations of the world who made America great by exploiting the working class.
This is sort of like the 'it's not you, it's me' speech when someone wants to break up with someone. Let's pretend it's for your benefit, when really it's for my benefit.
Interesting article, thanks for the link. |
| Sun 07 Dec | it_ranter | Dennis:
Well, ok. In that sense, I'll agree.
But let's just take it from the perspective that 'coding sorting algorithms' is something one can learn to do in, say, college, and could do right out the door. It is low-skill relative to, say, being CEO of a multinational corporation. Or a project manager (that's a tongue-in-cheek joke :)).
I don't want to take these guys too far out of context. Clearly the skill level for writing code, per se, is low, as in just-out-of-college level.
The main point remains, however, that we are not professional code-writers. We are business requirements-to-code translators, and that is far different from some rote task or academic algorithm exercises.
But I think we agree there, so I digress.
The main problem here is basically hypocrisy. The same people who complain about protectionism, endorse it outright in everything they do.
Management has basically defined itself as irreplacable in all respects. We never see seed capital sent overseas to start an 'India Management Institute.' Why? Because that would do the right thing; it would stripmine America of many of its middle management and executive VP positions, and perhaps more than a few CEO positions.
I mean, if we're going to embrace outsourcing, let's go all the way. And let's be honest about it. If I'm not allowed to say 'my job can't possibly be outsourced, it's a lot harder than you think!,' why should they? Especially since sending management overseas, and training low-paid, educated workers in domain knowledge would create massive, cheap, competitive ventures there.
Personally, I've always liked the idea of hiring Indian labor. And living in India to manage it. If one needs to sell or market, then do that here. But why should management stay in America? It's flagrantly inefficient.
There's no reason other than power politics, a great negotiation position, and the golf course culture.
Maybe we'll be lucky and India will do the job for us. Granted, the Indians have not been especially smart about capitalism to date, but they'll learn soon enough. We're giving them many great examples to follow. |
| Sun 07 Dec | Dennis Atkins | Right, I'm with you that it's a bunch of carefully constructed propoganda. This party line of the International Bankers is winning the hearts and minds of foolish companies everywhere. Personally, I see the purpose as a conspiracy to destroy the middle class world wide and create nations of slaves kowtowing to the elite, such as the International Bankers speaking in the article.
But let's say instead I'm just some John Birch loving conspiracy nut and toss all that out. Let's give these fellows the benefit of the doubt and assume they really believe what they are laying about all coding being low skill grunt jobs needing no training.
While eating some tacos here and making up a gallon pot of my secret Chai recipe, the following points occured to me:
1. I have seen these 'low skill' coders actually. Maybe we all have. The thing is, you don't want to be putting these folks to work on ANY project. You want to fire them. Many threads recently are about this very subject, whether they are the bottom 20%, 50%, or 80%, everyone knows these people are bad news to any project.
Perhaps these CEOs and economists have only seen this 'bottom 80%' of coders. They have never realized there is a secret hidden group of 20% of 'high skill' coders that are literate and have basic algebra skills who are actually doing all the work. Perhaps they just don't know because while the 'bottom 80%', the unskillers, are carousing and brownnosing, the 'silent competants' are invisible, in back rooms, writing the code that saves the company millions, or generates millions in sales.
Really, the solution here is not to fire the high skill workers and give the job to the low skill ones. The opposite, if anything, should be done.
2. I forgot. Chai is starting to smell pretty good. |
| Sun 07 Dec | Dennis Atkins | Well, if you redefine 'low skill' no mean 'requires a high school diploma with good grades, plus 4 years of college education' then you've got a very novel definition of low skill that is not shared by many folks other than PhD economists. |
| Sun 07 Dec | Dennis Atkins | Which makes me think that you are without a clue and your entire argument is either disingenuous or vacuous, depending on motivation. |
| Sun 07 Dec | Dennis Atkins | Given that 100% of the most successful tech companies were founded by engineers, that would suggest that tech is harder than management since it has a stronger correlation with success. |
| Sun 07 Dec | www.marktaw.com | It's not that coding is low skill, it's that it's so easily replaced. Your own personal opinions aside, corporate America has proven it to themselves by successfully sending it overseas.
Also, we don't know if that argument was contested or not, those are just excerpts from the round table.
In their eyes, any job that can be outsourced to foreigners is, almost by definition low skill, irregardless of the difficulty. Low skill just means 'you can train anyone to do it, even some back water, third world labor pool.' |
| Sun 07 Dec | Dennis Atkins | Well, if that's the argument, that it's low skill because it 'can be done by indians', then those economists are racists. Indians are not stupid.
Ah, now I remember my point #2, which is related to your theory.
The CEOs consider high skill to mean high pay and low skill to mean low pay, since that's traditional INternational banker economic theory. Thus, teachers and nurses, making $19,000, are low skill, and the CEO of Enron, is high skill.
So, if you find that a college educated developer in India can develop for $20,000 and a street sweeper can sweep for $20,000 then 'logic' dictates that programming is as low skill as street sweeping. |
| Sun 07 Dec | www.marktaw.com | Dennis, I don't mean it literally, you should read the article and draw your own conclusions. It's low skill because the warm-body to job ratio is so high, irregardless of where the warm bodies happen to be. 'Coders' come out of the working class, it's a way to bootstrap yourself up to a better lifestyle, and they're a dime a dozen.
On the other hand, Harvard, Princeton and Yale graduates are a fairly rare commodity. |
| Sun 07 Dec | Dennis Atkins | So mark, you personally believe that Charlie Steinberg and Marcus Zetterquist are folks with low-skill talents and just about any onld warm body could write Cubase and Reason? Word? Excel? Mach? XP? Visual Studio? Ad Infinitum? Come on now, show me the low skills people who are writing profit generating software! Show them to me that I may see them with my own eyes! |
| Sun 07 Dec | www.marktaw.com | Dennis, I'm just taking the devil's advocate position here. Trying to see things through "upper management's" perspective. |
| Sun 07 Dec | T. Norman | It all boils down to the fact that someone with no education or experience in IT can take a 1-month class in VB, call themselves a programmer, and get hired. (Well, the 'get hired' part is probably no longer applicable in this economy, but it used to be 5 years ago, and it could become true again.)
There is no licensing requirement. No master/apprentice system. No university education requirements. So the perception is that you can take any monkey off the street and turn them into a programmer very quickly. They compare that with the preparation that accountants, doctors, commercial pilots, and lawyers go through, and conclude that programming is 'low skill'. |
| Sun 07 Dec | analyst | T Norman, other groups have power because they deliberately restrict entry to create an artificial shortage. It's not about 'quality' or standards at all.
Most of the accounting and lawyer jobs for which you pay $250 to $500 per hour are much simpler than even the most basic development task.
Until developers learn to stop being 'team players' and to stand up for themselves, they will continue to get screwed.
Standing up for themselves doesn't mean slagging off at other programmers for not knowing 20 ways of formatting a string; it means slagging off at employers that exploit them. |
| Sun 07 Dec | Dennis Atkins | Mark,
Er, OK then. Really we need scorecards here to tell the players apart. I guess I play Devil's Advocate often enough and sometimes I can't even tell if I am doing it or not myself. We need a protocol like I will put these moose antlers on when I am playing devils advocate...
Norman,
Right, agreed with that, as long as there is the understanding also that the dudes with the 1 month training actually are less than useless... right? That's what I was saying with it being foolish to replace high skill developers with proven track records with low skill dudes with 1 month or 1 year of tech training at no-name U. You're not saying that the 1 month guys actually have a record of success at completing projects though, are you? |
| Sun 07 Dec | Paul Mansour | There is really no such thing as 'low-skill' coding, only bad coding. A program may always be written to perform a rote programming task. This is the essence of programming. If a programmer is not constantly boosting his own productivity (by coding) he can hardly be said to be a programmer.
A 'low-skill' coding job could by definition be eliminated by a skilled programmer. |
| Sun 07 Dec | -V. | >> means 'you can train anyone to do it, even some back water,
>> third world labor pool.'
Do you know the kind of people who do the outsourced work in India? Do you know the kind of people who work at Wipro, Infosys, Sasken, Satyam (these are outsourcing companies in India)??
Well I do ... they consist of people who have at LEAST a four year degree. Often the developers have a Masters and at the Tech Lead level most of them have PhDs!!!! Your telling me these guys are low-skilled ????? WTF????
The ONLY reason why its cheaper is because 1 dollar = 40 rupees. NO OTHER REASON.
Coding even at the most rudimentary level would not be a low-skill job... even at the plugging in API level. You can NEVER compare it with flipping burgers.
Never respect anyone in buisness unless he's actually founded a sucessfull buisness ... |
| Sun 07 Dec | Marcus Zetterquist | How did I get involved? :-)
At our company we're doing the reverse to outsourcing.
Looking back the last few years, our company has spend more time and energy recruiting each developer-position than for any other position.
Outsourcing and having the project manager in a different country than the rest of the team feels very wrong. We're doing the opposite - we are currently rearranging the workplace so each project manager can sit _closer_ to the rest of the team - sometimes sitting about 10 meters away was too far. India!? :-)
I also think the project manager should be _part_ of the team - not some sort of ehm. manager. At our company we have a rule that each team should be small enough so the project manager can spend at least about 50% of his/her time doing coding. I feel this is very important to stop project managers from growing pointy hair and for the team to have respect for the project manager. This requires the project manager to come from a coding background.
I also belive the Project manager is a _service_ to the developers on the team, not vice versa.
/Marcus |
| Sun 07 Dec | T. Norman | 'You're not saying that the 1 month guys actually have a record of success at completing projects though, are you?'
No. But they are 'programmers', and the skilled successful guys are 'programmers', so they all get lumped into the same group. In good economic times, everybody is seen as a high-skilled genius (therefore the $70K salaries for 'Teach yourself HTML in 24 hours' bozos). In a downturn, everybody is a low-skilled monkey whose job can be replaced by a moron off the street. |
| Sun 07 Dec | Dennis Atkins | Marcus,
I dragged you into it because you're one of the most brilliant developers in the world today and I knew you read JoS. I also knew that your success is because you guys are really smart, driven, love what you do, and find other folks you are brilliant and love to do it just as much. Stunningly successful companies like Propellerhead are the example that shows why all this negative propaganda about developers is utterly wrong. |
| Sun 07 Dec | Dennis Atkins | Norman,
OK.
Really, I don't think the situation is going to change with the 'illuminati' and 'bilderbund' types. As long as developers let these guys have power, they have power.
The solution, the proven path of success and fulfillment and achievment for developers, is to found our own companies and develop our own rocking fabulous products. To all of us who are dissatisfied with the way things are, this is the one path I see that leads to fulfilment which includes staying on as a developer. Developers don't need to worry about outsourcing, they need to worry about getting themselves in the position to realize their visions and create beautiful things. Every career move, every contract signed, every job taken, should be evaluated against these criteria -- is this bringing me closer to the goal of doing what I love? Some corporation run by MBAs is not going to 'let' you do what you love -- we must be responsible for the creation of our own destinies. A few have gone forth and showed a way through which fulfillment as a developer may be attained. Unhappiness is not necessary. Make plans now. Summon the courage to turn your backs on the discouraging propaganda of the economists, the bankers, the destroyers of dreams. Listen not to their evil whisperings. Build a future for yourself. Create the software of your dreams. |
| Sun 07 Dec | analyst | Paul Mansour, I'm afraid your comments buy into the low-skill idea since, by describing it as 'bad' programming, you endorse.
Look, when people talk about low skill coding, they don't give a stuff about distinctions as to good or bad. It's all simple stuff, as far as they're concerned.
If you want to condemn the concept, stay away from that attitude that is so common in programming, of agreeing others are low skill, but not you.
Dennis, I think the big change that is needed is for university lecturers to start to understand they have to teach students to have professional pride and to stand up for their professional rights. |
| Sun 07 Dec | T. Norman | Dennis, that is exactly what I've been thinking.
Eventually, either I'm going to change careers or strike out on my own. I've already taken the steps to become qualified for a starting position in another career (actuary), but I'm still figuring out how to get to the point where I can do the latter. |
| Sun 07 Dec | Sum Dum Gai | The more I think about it, the more I agree that programming is a low skilled job. Just not in the way that the comment was meant.
I think programming is low skill just like being an artist is low skill.
As people have said, anyone can become a programmer. Anyone can become an artist too. That's what I mean by low skill.
The similarity is that although anyone can become a programmer/artist, most people can't become a good one. It's a talent, and you're mostly born with it. Hard work can only get you so far in both fields, you've either got something or you don't I believe.
Hence I'd classify programmers (good ones anyway) as low skill, but extreamely high talent.
Project management on the other hand does seem to be something you can pick up if you're not a natural at it, and hence it's high skill. |
| Sun 07 Dec | Dennis Atkins | analyst,
It would definitely be a good move for professors to do a bit of school of real-life mentoring, that's astute of you. It reminded me of a professor I befriended. He was (still is) a famous genius and I loved and was inspired by his work for years before I even went back to college. Took independent study with him every chance I could and would just talk for hours about everything but development -- mainly I would show him stuff I was working on and he'd admire the design do stuff like that. He'd be reading some article by some big name in the industry and rant about what a poser that guy was and precisely why. After graduating, I saw him for lunch every few months and he'd ask what was going on and I'd tell him and he'd say stuff like 'Those guys (management where I was working) are a bunch of idiots. Don't listen to them. That company is going nowhere. Hows that side project you're working on anyway?'
Basically, his name carries a lot of weight in the industry and his contribution to me was to validate my own gut feelings about stuff. This was the most useful and inspiring reality check of my life. People really were insane and there were some smart people in the world who could see it too! You can't imagine what a relief it was to have this one other person who could see the emperor was naked. |
| Sun 07 Dec | Dennis Atkins | Well Heck, Sum Gai, brain surgery must be low skill too cause the cave men did it -- they called it tepinning. They weren't very good at it but anybody can do it. You just drill a hole in the skull with a sharp bone. It lets the spirits out.
Flying a jumbo jet is low-skill too -- those middle eastern dudes got their planes to the inntended destination without too much trouble.
And what about being a concert pianist or a rock musician? Low-skill.
Rocket scientist? The neighbor's kid makes has made several rockets - must be a low skill career there as well. |
| Sun 07 Dec | www.marktaw.com | Dennis, I agree with you that the way to go would be to develop a rockin product and charge for it. Killer apps aren't too hard to find really, and if you have a passion for something, you can play in a market with other players.
The problem is, I asked here a while ago... over the summer I think, why all the unemployed programmers here didn't develop one of the 'wouldn't it be great if we had an app that...' apps that had been discussed here, or one of those 'I could write this better than theirs' apps.
The response I got was... 'I don't have the initiative, I can't think of any apps I would want to write. I want to be told what to do.' I'm paraphrasing, but not much. |
| Sun 07 Dec | Sum Dum Gai | Yes, a concert pianist and a rock musician are artists. As I said, that's low skill. It's about talent, not training. We've all seen the 4 year old child prodigy musicians who can play 1000 times better than most people could with a lifetime of training.
Likewise, no matter how much skills training we give people, most aren't going to get anywhere near John Carmack as a 3D games engine developer. Or they aren't going to be able to learn the art of algorithm design to the extent of Knuth.
I'm not saying low skilled in a negative sense. Rather I'm saying it's about natural talent rather than skills training. |
| Sun 07 Dec | www.marktaw.com | > It's about talent, not training.
How do you get to Carnegie Hall? |
|
| CityDesk, Blogger and Joel's business model | Sat 06 Dec | RP |
| Ive just created my blog on blogger.com something struck me: most people cant afford to pay for a dedicated server to host their blogs or host them at home. Heck, people who are suppose to have their lives made easier by CityDesk cant write HTML, let alone understand or administer the server.
So, please guys, explain this to me. We got an excelent tool that was created to allow me to easily create my blog. But... where do I put it?
If there was a way to develop plugins to allow CD to publish to blogger.com and all the other blogging services, CityDesk would be attractive to much more people.
Ita a far superior tool to w.bloggar ( http://www.wbloggar.com ) which Im using now to edit my blog on blogger.com.
I think this is valid. When will we be able to use CityDesk to publish our blogs on blogger.com? |
| Sat 06 Dec | www.marktaw.com | You can afford CityDesk and you can't afford a $5 a month Pair.com hosting account?
The free version of CityDesk is *not* a blogging tool, in 2 months of daily blogging you'll run into the 50 item limit. |
| Sat 06 Dec | Sam Livingston-Gray | Somehow, I don't think CityDesk was created to help anyone with their blogs, per se. (It's a great way to deal with regularly-updated content, which is not the same thing as a blog.) Managing your blog can be a nice side effect of having CityDesk, but I really doubt that anyone will pony up $300 for something that is, in effect, a LiveJournal desktop client. (And then there's the pain of having to access multiple APIs for every blogging service out there.)
And speaking of cost, I have a hosting account for $40 per *year*, which, even in my weakened economic state, is not difficult to come by. (= |
| Sun 07 Dec | Tim Lara | I'd say that by setting the entry point for CityDesk at $300, Joel is going after the corporate content management market (i.e. - large company intranets, online magazines / newspapers, etc) and not the personal weblog market.
It seems that he is happy to let Blogger / Google, Moveable Type / TypePad and the others slug it out. I believe he sited tech support issues as one of the reasons for this... |
| Sun 07 Dec | Frederic Faure | Tim Lara >> I'd say that by setting the entry point for CityDesk at $300, Joel is going after the corporate content management market (i.e. - large company intranets, online magazines / newspapers, etc) and not the personal weblog market.
But then, are coporation happy with static pages, and having to go through the edit > generate > upload to FTP cycle every time an item changes in the database?
Seems to be that corporations really need a server-based CMS with a good dedicated app like CityDesk. Speaking of which, I wonder if someone looked into using Outlook, and edit items as e-mails. Mmm... |
| Sun 07 Dec | Andrew Hurst | ----
Speaking of which, I wonder if someone looked into using Outlook, and edit items as e-mails.
----
Too much chance for error, with not enough gain in functionality in my opinion. The problem with using emails, is that you need to encode control information into the email, and users are just too used to changing anything about the email.
For instance, check FogBugz method for matching emails to cases, by putting the case number in the subject line. For this to work with a CMS (assuming all the other information about the article to be posted was stored with that case number in the main database), you'd either need to have the application generate a case and email the user, to reply back, or you need to have the user login to the system on the web or another dedicated app, save the settings, and have it email the user. Too much work.
Or you could have control words in the email, like @post-on, @author, etc. Then a user could save a template of this posting email, and then fill it out and post it to the site. The problem with this as I see it, is no preview. You could get a horribly formatted article posted to the front page. Also your parser would have to be very intelligent, as what if they put the date in MM/DD/YYYY format, instead of MM-DD-YYYY format?
Sorry for the long reply, I'm itching for some design work lately (job getting boring). But thats my thought about email enabled CMSs. I still think it can be done correctly, but only for edge cases. |
| Sun 07 Dec | www.marktaw.com | CityDesk seems to be going after a mid range market. Not bloggers, not giant corporations. In between blogger.com and Solaris server farms there's a middle ground of small businesses who only want to pay a few thousand and want to be able to update their site on a regular basis. Shave some money off of that and you can get rid of any server side processing whatsoever and create a static "brochureware" site. |
| Sun 07 Dec | Mike | My father purchased City Desk. He uses it to update a small articles section on a discussion site we run. I started him on the free version. He hadn't hit the 50 item limit, but it was easy for him to use and worked well, so he paid the $300. He builds custom rifles for a living so is willing to buy a specialized tool if it saves him time or just plain does the job better than other things.
I'm a computer geek, so have no problem with hierarchical file systems, ftp etc. To have a tool where someone that knows how to run a piece of software, but doesn't have to think about the hairy bits like finding the particular local file that needs to go to the web server, then opening an ftp tool, and then trying to find out where on the web server the file goes and then remembering that you need to move the image and the html file, because the html file only contains a reference to the image not the image (yeah, but the image is in that page in my browser) etc, etc.... I understand these things, my father does not, and really should not have to.
Thank you Joel, for creating City Desk. I'm not sure who's happier, my father because he can update his site himself, or me because he can update his site himself. |
| Sun 07 Dec | Darren Collins | I agree with the others. CityDesk and a $40/yr hosting plan from someone like dr2.net is the way to go.
Why build a CityDesk interface to blogger.com when people who want that could just use Blogger to begin with? |
| Sun 07 Dec | www.marktaw.com | CityDesk's core concepts don't fit the blogger.com model.
Why would you want to create a site in CityDesk and host on blogger.com anyway? Wouldn't you rather want to create a site in Blogger and then host it somewhere that doesn't show ad banners? |
|
| Win32 admin: I'm pathetic, please help | Sat 06 Dec | hoser |
| I know I asked this question several weeks ago. I tried searching for the thread, but could not find it.
Anyhow, the kids managed to install spyware all over the game computer (again). This time I royally killed it when removing registry entries. Well, so much the better. Now I want to truly admin this thing:
1. Only one user, admin should have admin privs.
2. All other users have unique names/passwds.
3. All users should be able to install programs into their own writable area.
4. If one user installs a program, activeX control, virus, spyware, etc. it should not affect other users.
5. Only admin should be able to install updates which affect the OS.
So how do I do it? The default install (which is happening on the game computer as we speak, a new clean install of WinXP) only allows for 2 user types: admin and brain-dead. Admin can do all, brain dead can do nothing.
How do I get to the chocolatey middle. Thanks for the help. |
| Sat 06 Dec | Dennis Forbes | The problem is that a lot of Windows software presumes that only admins will install it, so it tries to stick itself into system folders, and its registry entries in HKEY_LOCAL_MACHINE, etc. Due to this problem it's generally impossible to allow users to install their own software (because most installs are so horribly broken). |
| Sat 06 Dec | hoser | If this is so, then the children shall have NO GAMES.
Please, think of the children... |
| Sat 06 Dec | a | hoser, you're on the right track - that is, having the kids log on as plain users rather than admins or power users. On Windows 2000, you can manage the user settings from Control Panel -> Users and Passwords.
When I set up some XP machines, I don't recall it being much different from that, but I don't have one here to check.
Most programs will operate just fine for users with User privileges. While installating, you might need to provide an admin password, but generally they're OK. Those that don't, yes, you're probably right, don't bother with them. |
| Sun 07 Dec | æøå |
Google for SpyBot Search And Destroy - install, update and remove all your spyware in one go. And do it regularly. |
| Sun 07 Dec | Brad Wilson | Do the kids play GAME games, or do they play education disguised as games? If the former, then the best option is to just buy them an Xbox and be done with it. :)
XP Professional has full user management. You have to get to it through the Users and Groups section under Computer Management, rather than the under-powered Users control panel applet.
Be aware that many programs will not run without admin permissions at least to install, and as often as not, admin permissions to run. The Windows world is chock full of lazy developers who run everything as admin all the time, and churn out code that simply never works without admin privs. |
| Sun 07 Dec | anonymous | I would just not let the children install anything. They shouldn't have a need to install software very often and you will get a chance to review what they want installed before deciding whether or not to install it. |
| Sun 07 Dec | Stephen Jones | You can change the settings from just the two user types if you wish (or at least you can in XP Pro - I've never used home); the default setting is simply there because it's easier.
Power Users should be able to install most programs, though that won't solve your wish to have them not affect the whole computer. Should be safer than letting the kids run as admin however. |
|
| If there are few decent jobs in programming... | Sat 06 Dec | Warren Henning |
| If getting a decent job in programming is so hard, are there any other, better fields worth pursuing?
Im a freshman in college, and so Im still at a point where I can decide what career Id like to pursue easily. I think I could be happy doing just about anything thats analytical/quantitative.
Or do people just come to this forum to rant and rave, exaggerating the reality of the situation? Are there no particularly good careers right now? |
| Sat 06 Dec | hoser | People just come here to rant and rave:
* Indians are taking my birthrite.
* My boss is an idiot (no really).
* Java sucks.
* Microsoft sucks (no really).
etc. |
| Sat 06 Dec | Sam Livingston-Gray | Getting a really decent job anywhere is hard. There's always going to be something you don't like about where you work, sometimes even several somethings. Keep your eyes open for things that make you go "Ooooh!" and see if you can turn them into careers. ;> |
| Sat 06 Dec | no name | I hear fishing is a pretty good career. |
| Sat 06 Dec | hoser | Warren, I love what I do (really). I was a ham radio operator back in my youth. Radio and electronics were my passion, so what else to become other than a EE?
The fact is that in every project, whether software or hardware, there came a point where anything else seemed attractive.
But hey, you're a freshman, you're taking calculus, and finals are coming up, don't you wish you were taking a course 'broadcast communications' -- y'know, like Katie Kuric (sp?) took when she was a lass - and no doubt, she's probably making more than you'll ever make. But think of who she had to sleep with along the way.
You gotta love this stuff or leave it. And I don't mean all of it, you just gotta love the part you really love. You can probably make a career out of that. It is a lot of fun. |
| Sat 06 Dec | Vince | hoser, why does java suck? |
| Sat 06 Dec | hoser | Why are Indians taking my birthrite?
Camping out on Jos this evening. Woohoo. Almost as fun as Xmas shopping. |
| Sat 06 Dec | Noname | It's hard to know what the job market will be like 3-4 years from now. Just do something that gives you more than one option, unless you are pursuing something relatively secure like law or medicine. Choose a major that can give you a normal path to two or more occupations (or a major+minor, or a double major that can do the same). |
| Sun 07 Dec | Tim Lara | Warren:
Yes. People come here to rant and rave. Increasingly so, it seems, as compared to the topics from a year or two ago. Joel provides a very valuable community service, for each long, cathartic rant seen here potentially staved off the severe beating of an unsuspecting co-worker. ;-)
Seriously, though, I agree with Sam's general advice above. The fact that you know that you'd be happy doing things that are analytical/quantitative already tells me that you're off to a good start. If there's one common trait between almost all of the unhappy people I know, it's that they are struggling to figure out what it is that they like to do. It may sound trite and silly, but it really is an extremely important question to be able to answer for yourself. If you know what you enjoy doing, you're probably either good at it already or you will at least have the patience and diligence to succeed eventually.
Though it's obviously not the case with every unemployed / 'under-employed' tech person, a sampling of many of the grumbling people I've met over the past couple of years gave me the impression that a lot of them still haven't gotten over the bursting of the dot com bubble. It seems like a lot of people who are unhappy in the computer field now are the ones who got into it relatively recently and not because they had a passion for the work but because the field was 'hot'. That type of reasoning may be good for making a quick buck once in a while if you're lucky enough to be in the right place at the right time and know the right people, but in general, just following 'what's hot' isn't necessarily a recipe for long-term satisfaction... |
| Sun 07 Dec | Warren Henning | The replies have been encouraging. Thanks.
'Just do something that gives you more than one option, unless you are pursuing something relatively secure like law or medicine.'
Medicine is secure, as far as I know, but applications to law school soared during the recession. I don't think of it as a 'secure' field, unless you go to a top school. |
| Sun 07 Dec | anon | If you dig physics, I recommend you investigate the field of medical dosimetry and see if it's for you. They're paid well. They work regular hours. They get the satisfaction of knowing that they're involved in helping really sick people get better or at least buying them some time to be with their families. As far as I know, the requirements are a degree in physics and a residency, no med school. If I was just starting college now, this would be one field I'd be very seriously considering. |
| Sun 07 Dec | www.marktaw.com | Warren.
The Occupational Outlook Handbook put out by the U.S. Department of Labor, Bureau of Labor Statistics is a fairly up to date (there's a 2002-03 edition) list of occupations, how much they tend to pay, what you need to do them, and what the prospects are in the coming years.
The idea here would be to find an occupation that you enjoy, and one that you will be rewarded (financially and emotionally/spiritually for). Also try to match your career to your tempermant. High paced, high stress careers aren't for everyone.
Good Luck. |
| Sun 07 Dec | www.marktaw.com | Oh Yeah
http://www.bls.gov/oco/home.htm |
| Sun 07 Dec | T. Norman | >'Medicine is secure, as far as I know, but applications to law school soared during the recession. I don't think of it as a 'secure' field, unless you go to a top school.'
How many unemployed lawyers do you know? Law is secure for employment once you finish law school and the bar exam. Maybe you won't get into a law firm that enables you to make $200K, but you will have a job somewhere.
True, it is not so 'secure' to get into law school, but anyone with decent grades and a good LSAT can get into a law school, even if it isn't the school of their choice. However, a CS graduate with excellent grades still has a nontrivial probability of never getting a job in the field, at least in a market like today's. |
| Sun 07 Dec | hoser | Tim Lara wrote:
'... a lot of them still haven't gotten over the bursting of the dot com bubble. It seems like a lot of people who are unhappy in the computer field now are the ones who got into it relatively recently and not because they had a passion for the work but because the field was 'hot'. '
True dat. |
| Sun 07 Dec | mackinac | Warren, some people do just come here to rant and rave. That is the case with humans in general. If you don't really understand what's going on, you can always predict gloom and doom and pretend like you do.
Nevertheless, many complaints you hear are valid. There have been business cycles in the past and you can expect them to continue in the future. People doing technical work have always been affected, but unemployment rates for engineers and computer programmers are usually small compared to the general unemployment rate. This time it is different. Articles posted at ieeeusa.org note record high unemployment levels with numbers as high as 6% or higher.
To the high unemployment rate add the outsourcing phenomenon. This adds a major factor of uncertainty to the idea of having a career in computer programming. The uncertainty is driving a lot of the ranting and raving. And that makes it difficult to tell you if there is any future in it.
You also have to look at how technical work is actually done. Way back when I was a college student I liked math and science and had some notion that engineering was important and interesting work and having a worthwhile career was available to anyone who put in a reasonable effort. It's not. You might enjoy the analytic nature of computer programming, but to many employers you are just an expensive data entry clerk.
If you think that might be an exageration, consider the typical cube farm depicted in Dilbert. It is well designed for workers who sit in front of a keyboard and monitor and spend 8 hours a day typing. Thinking or being creative isn't considered part of your job, so it is not considered in the design of the work space. There are exceptions to this common pattern. If you decide to stick with programming you will have to search out the few good places to work and not take any job that comes along.
Some random bits of advice:
Read DeMarco and Listers 'Peopleware' to get an idea of what is possible. Read Scott Adams 'The Dilbert Principle' to learn what real work life can be like and what you have to work to avoid.
If you want to do engineering work, look in to bioengineering and nanotechnology. These do seem to be up and coming fields.
For a more stable future, consider law, medicine, or business, if you might like any of those fields. Science and engineering should only be considered by people who aren't good at anything else. Me, I'm a nerd and wouldn't have a chance at anything else. And on a few occasions I have worked on really interesting projects. |
| Sun 07 Dec | mackinac | >>> It seems like a lot of people who are unhappy in the computer field now are the ones who got into it relatively recently and not because they had a passion for the work but because the field was 'hot'. <<<
I would question this statement. When I got started in the computer field there wasn't an Internet and the idea that computers could be personal items was only starting to form. There were a lot of cubicle jobs even back then, but there were some fairly decent developer jobs, too.
In retrospect, I realize that the problem wasn't the bursting of the bubble, it was the growth period. Engineers became hot commodities. The small company where I had worked for 15 years was bought out. Where quality had been the focus of our company culture, the new culture became one of growth. Hire as many deveopers as you could before someone else did. Working there wasn't fun any more.
Before the bubble it was always somewhat difficult to find good software development work. When the bubble was growing, it seemed like we might get to the point there would be more then enough work for everyone. But that never happened. My career got a 20 year setback, without the options that Warren has.
So I have mixed feelings. I like to develop software or do any kind of engineering work. But recent events make it hard to recommend to a freshman as a lifelong career. |
| Sun 07 Dec | Bella | Warren,
Your ONLY goal in your 20's is to find a career you ENJOY. this is so cliche, but you won't be able to appreciate the gravity of this statement until it's too late. Take this one on faith. Do not chase money. And NEVER think you're locked into a job or career before you have kids or a family. Till then, you can do as you please, with almost zero consequence. If you enjoy your career, many many other aspects of your life will fall smoothly into place. And vice versa. If you hate your career, or are in it only for some money, many other aspects of your life will also suffer.
There are plenty of programming jobs around, and there will continue to be. Computing is only growing. The salary future level of a programmer is up to debate. But see above rant, and it is a non-issue.
Good luck, you will be fine. A college freshman that possess your resourcefulness will go far. Trust youself. |
| Sun 07 Dec | XBox'er |
Try the video game industry, you can play with a wide varierty of things there :
AI
3D
Networking
Compilers |
| Sun 07 Dec | -V. | >> Your ONLY goal in your 20's is to find a career you ENJOY.
Heed this advice. But you wont! :-) ... because you ARE in your 20's :-). You'll hear this advice so often that you'll forget it. Seriously! What you will do is go for the job which makes the most money/most 'stable'. You'll get the job out of college. And then at sometime in your life you might stumble across what it is you really want to do... and then you'll be in a position where you wont be able to make a career change due to wife/children/current lifestyle ...blah blah blah.
When your young you CAN make mistakes... so go ahead, try out as many things as you can to find out if what you want to do them for the REST OF YOUR LIFE!
Step 1.
List all options : snowboard instructor, avalanche rescue team, software engineer, himalayan trekking guide, lawyer ... write down EVERY job you think you might like to do. List by priority and then:
1. Try em out if possible: ie do related things during the weekend /after school ... eg: for 'testing' software development ...actually develop some software ... 3hours per day after school and 8 hours on sunday or saturday...
for 'testing' snowboard instructor go snowboarding ono the weekends... sign up as an instructor...
2. Find out the lifestyle of the people in these professions. ie the kind of money they make, their quality of life, the types of people they work with, the apartments they live in ...the amount of free time they get ....
3. Describe a day in the lives of people in these professions ... a whole day.
Suddenly you'll stumble on something that makes you smile ... that makes you dream of actually doing it .... That should be the job you should try to do....
After doing all this analysis I realised that I wanted to have my own software/design buisness ... and am slowly steering my career towards this.
All the best. |
| Sun 07 Dec | Bella | The problem with #2 is he will only see what he wants to see. eg: Ignore the handful of $60k 12 hour day lawyers, and focus on the 1 Johnny Cochran. See what you want to see. |
|
| Does C# is going to Kill Delphi ? | Sat 06 Dec | Gollum |
|
Does C# is going to Kill Delphi ?
Someone who wonders if its still worth learning Delphi nowadays (for writting small application/Tools) |
| Sat 06 Dec | Mourning for Delphi | Borland is going to kill Delphi with their foolhardy strategies. |
| Sat 06 Dec | Tom Vu | Worth learning depends on your ultimate goal. But if you want to get a job developing new software or features be realistic. |
| Sat 06 Dec | Cletus | 'Worth learning depends on your ultimate goal. But if you want to get a job developing new software or features be realistic.'
Agreed!
If you're going to write and sell your own shrink- wrapped software, then Delphi is definitely worth learning. It is a mature tool, fully oop language/component framework, large 3rd party components, excellent user community support, applications compile to a single exe (no deployment hassles with runtime libraires).
If your're plans are to be an enterprise developer then C# is your best bet. Delphi is a great language/tool, but the fact of the matter is that there are very little jobs for it. |
| Sun 07 Dec | MX | C# and Visual Studio .NET are promising tools.
C# is a little better than ObjectPascal.
But Delphi is better than C# and Visual Studio .NET in many, many other areas, including fast execution speed, support for 3rd party components, and the fact that the components that come with Delphi are MUCH better and bug-free than the components that come with Visual Studio .NET. |
| Sun 07 Dec | Beware the power of my stinky feet! | 'But Delphi is better than C# and Visual Studio .NET in many, many other areas, including fast execution speed, support for 3rd party components, and the fact that the components that come with Delphi are MUCH better and bug-free than the components that come with Visual Studio .NET. '
The veracity of the above statement will decrease with time. |
| Sun 07 Dec | Brad Wilson | And that's really the issue, isn't it.
It's one thing to say Delphi is great today if you're making a desktop app. I don't think anybody who's used it will disagree with you. But as time goes on, you can see the writing on the wall. Anders is working for Microsoft now, not Borland.
Unless Borland acts completely contrary to their history, Delphi is now a dying product.
If you were asking me what to use today, I'd say Delphi (or VB... depends on your developers). If you were asking me what to learn today for future safety? I'd say .NET. |
|
| This app won't die | Sat 06 Dec | Sathyaish Chakravarthy |
| Going back to Win32, I quickly spat out code to get a simple window application. It all works fine, compiles perfectly and I am able to build an EXE but for some reason, the EXE does not stop running even after I close the window whether from the control box or from the system menu. It keeps running as a process. I am processing WM_DESTROY but I think GetMessage still does not return 0 even after hearing from PostQuitMessage. Could you please tell me what is it that I am forgetting? I know its going to be some foolish thing.
PS: I also noted some changes from VC++ 5.0 to VC++ 6 IDE. Back then, it was simpler to select an Application type workspace and youd get a project workspace for Win32. Now, its a little more confusing. Anyway, heres my simple code, the most cliche code on Win32. I guess youll have to spot my fault in either the message loop in WinMain or in the WndProc message handler, though I dont have any messages there but for WM_DESTROY.
[CODE]
[FILE]
WinMain.c
[/FILE]
#include StdAfx.h
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
WNDCLASS wc;
HWND hWnd;
MSG msg;
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
int nWidth,nHeight;
int iRetVal;
nWidth=0;
nWidth=GetSystemMetrics(SM_CXSCREEN);
nHeight=GetSystemMetrics(SM_CYSCREEN);
if (hPrevInstance==0)
{
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hInstance=hInstance;
wc.lpfnWndProc=(WNDPROC)WndProc;
wc.lpszClassName=SampleWin32;
wc.lpszMenuName=0;
wc.style=CS_HREDRAW|CS_VREDRAW;
}
iRetVal =RegisterClass(&wc);
if (iRetVal==0)
{
MessageBox(hWnd,Could not register WNDCLASS,Quitting,MB_OK);
}
hWnd = CreateWindow(SampleWin32,A Sample Win32 Application,WS_OVERLAPPEDWINDOW,0,0,
nWidth,nHeight,0,NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&msg,hWnd,0,0) != 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (msg.wParam);
} //WinMain
[FILE]
WndProc.c
[/FILE]
#include StdAfx.h
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return (DefWindowProc(hWnd,msg,wParam,lParam));
}
return 0;
} //WndProc
[/CODE] |
| Sat 06 Dec | C# fan | Change:
while(GetMessage(&msg,hWnd,0,0) != 0)
To:
while(GetMessage(&msg,NULL,0,0) != 0)
Check the API documentation to see why. |
| Sat 06 Dec | Sathyaish Chakravarthy | Wow! Thanks, man!
But I read the documentation and could not relate what you said with it. What's the reason? |
| Sat 06 Dec | Back In The Future | C# fan : WHY ? |
| Sat 06 Dec | Beware the power of my stinky feet! | API Documentation:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues/messagesandmessagequeuesreference/messagesandmessagequeuesfunctions/getmessage.asp |
Sat 06 Dec | Sathyaish Chakravarthy | I still don't get it. I've read it a couple of times now. Its the same that I read from my older version offline MSDN. If you're talking about this line,
Warning
Because the return value can be nonzero, zero, or -1, avoid code like this:
while (GetMessage( lpMsg, hWnd, 0, 0)) ...
The possibility of a -1 return value means that such code can lead to fatal application errors. Instead, use code like this:
BOOL bRet;
while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
{
if (bRet == -1)
blah..blah..
then that's not it. Here, the guy says don't test for a boolean return value from GetMessage because of the possibility of the window handle being invalid leading to a negative return value. Instead, go for an explicit comparison with the comparison operators. |
| Sat 06 Dec | Christopher Wells | There's no HWND passed as a parameter to the PostQuitMessage function ... so, presumably the WM_QUIT message arrives with NULL == hWnd. |
| Sat 06 Dec | Dave B. | The way I understand it, and of course I could be wrong, is that the WM_QUIT message is not associated with an HWND, like other messages are, rather it is associated with a thread.
Thus when you call GetMessage( &msg, hWnd, 0, 0 ) you are in effect saying 'Get the messages from the message queue that are being sent to the window whose handle is hWnd.' and of course this window never recieves the WM_QUIT message becuase you just told GetMessage only to retrieve messages associated with the window you just created and ignore messages directed to the thread.
OTOH, Calling GetMessage ( &msg, NULL, 0, 0 ) says 'Get the messages from the message queue that are directed to my window and to my thread.' The WM_QUIT message is directed to the thread.
Because the WM_QUIT message is not associated with a window handle you cannot process it with a window procedure. Thus you have to process the WM_DESTROY message and then tell the thread that you want to quit by 'posting a quit message' i.e. PostQuitMessage(0).
I'm not an expert at this kind of stuff, and I could be wrong. |
| Sun 07 Dec | C# fan | The problem is the PostQuitMessage(0) is on WM_DESTROY switch. When that switch is executated the original hWnd is invalid (it was destroyed).
So you have to use NULL on GetMessage.
Another fix to the original program is to use the PostQuitMessage on the WM_CLOSE switch. There, hWnd is still valid. |
| Sun 07 Dec | no name | I disagree C#. HWND is still valid in the WM_DESTROY message. It is NOT valid in a WM_QUIT message, which can't be processed in a window proc. You can still reference HWND in WM_DESTROY before you return 0. The window has simply been removed from the screen, but all windows (child included) still exist. |
| Sun 07 Dec | C# fan | ' ', you are right. My 'fix' using WM_CLOSE works, but the reason isn't the one I thinked.
So, I dont know why.
Raymond Chen ( http://software.ericsink.com/index.html ) is the man to solve this ;) |
| Sun 07 Dec | C# fan | Ooops, wrong URL. The correcy is http://blogs.gotdotnet.com/raymondc/ |
| Sun 07 Dec | asdf | GetMessage returns -1 if you pass it an invalid HWND (other than NULL) and hWnd becomes invalid after WM_DESTROY so that's why you're not getting WM_QUIT. Passing NULL instead of hWnd is the only fix I would endorse. |
| Sun 07 Dec | Raymond Chen | Once I changed
GetMessage(&msg, hWnd, 0, 0)
with
GetMessage(&msg, NULL, 0, 0)
the program ran fine and exited when the X was pushed. The reason - as has already been noted - is that the WM_QUIT message is not associated with a window (notice that there is no HWND parameter to PostQuitMessage) so if you use a filtered message loop you will never see it.
I can't think of a case where you would want to use a filtered GetMessage. It assumes that there is only one window on your thread - no child windows, etc. On Far East systems this is almost never the case (there are system windows for things like input method editing). |
| Sun 07 Dec | Dave B. | Take a look at the 'PostThreadMessage' function.
Though I don't recommend it for daily use try replacing 'PostQuitMessage(0);' in the WM_DESTROY case with:
PostThreadMessage(GetCurrentThreadId(), WM_QUIT, 0, 0);
Neato! |
| Sun 07 Dec | Dave B. | OTOH, don't try that (unless you like experimenting)... it'll mess up your system. It doesn't actually work like I thought it would. |
| Sun 07 Dec | Dave B. | Err....
Ok it does work, I was still filtering messages through GetMessage and didn't replace hWnd with NULL.
PostQuitMessage must be a Macro/Function for the special case of WM_QUIT and PostThreadMessage. |
| Sun 07 Dec | Dave B. | Maybe a more proper way to write it:
long iRet = 0;
do {
iRet = PostThreadMessage(GetCurrentThreadId(), WM_QUIT, 0, 0);
Sleep(100);
} while (0 == iRet);
Replace the wParam argument of PostThreadMessage with the return value you want. |
|
| Running a VB app inside a browser | Sat 06 Dec | Sathyaish Chakravarthy |
| I have a bloated VB app that I want to run inside a browser. How do I do that? The ActiveXDocument EXE project does not allow me to run MDI forms inside the browser. |
| Sat 06 Dec | Dennis Forbes | Why would you do that? |
| Sat 06 Dec | Frederic Faure | Forget about ActiveX documents. Besides the fact that Microsoft gave up on them, they're so unstable as to be useless.
On the other hand, you might want to move your code into an ActiveX control, and make it available through a web page using the OBJECT tag, and see if it works for you.
But then, not sure either what the connexion is between a bloated VB dedicated app, and moving to a web application... |
| Sat 06 Dec | Sathyaish Chakravarthy | >Why would you do that?
Dunno! It is Saturday night 11:30 PM. I had it in mind this evening that this will be one new cool thing I'll be trying tonight besides working more on XML.
>Do away with ActiveX Doc and port your code to an OCX....
But that won't work, would it? An OCX would not be interactive. I mean, it would just be a object that would reflect a state but won't interact...uh I am not able to explain it. But I hope you get the idea. Its not a multimedia control that I want to >display<. Its an application that would require the user to fill in some data, click a few buttons, then drag and drop a few things around, draw some graphs etc. |
| Sat 06 Dec | Ged Byrne | Sathyaish,
I'd love to help out, but I'm trying to teach my mum how to use the shell. |
| Sat 06 Dec | Sathyaish Chakravarthy | Ged, never mind. I'll be anticipating. This is not serious work, just one of my musings at leisure. When you have the time, I'll be glad to take your help. |
| Sun 07 Dec | Frederic Faure | >>An OCX would not be interactive. I mean, it would just be a object that would reflect a state but won't interact...uh I am not able to explain it. But I hope you get the idea. Its not a multimedia control that I want to >display<. Its an application that would require the user to fill in some data, click a few buttons, then drag and drop a few things around, draw some graphs etc.
Er... We are currently selling a couple of business applets in VB, rewritten from stand-alone EXEs to ActiveX controls, embedded in web pages. Those applets include the SQLite SQL DLL to manage data on the customers' LAN (local host, or a remote host swhere on their network), and the VSFlexGrid spreadsheet object.
Pretty interactive to me :-) |
|
| The real enemy of programmer productivity | Fri 05 Dec | the artist formerly known as prince |
| The topic on 80% programmers are useless really got me thinking about why. I think a big part of it is just management doesnt know how to select who is productive and in many cases, cannot even create an environment where anyone can be productive, but I think another huge issue with productivity is the ridiculous technology as a fashion statement strategy that every company not even just tech companies have adopted!
I think that no programmer who starts working today can ever really hit his stride, because every few years he will be forced to change languages, now the zealots with computer science degrees will chime in at this point and say, all that matters are concepts not languages or trivia and to a certain extent that is true (although you dont need a degree to learn concepts), but most decent programmers can pick up pretty much any 4gl and be somewhat productive within 3-5 days (at least to the point where they can maintain existing code), but the problem is that its not in the concepts that some of the biggest obstacles to productivity lie...
As some of you guys know I quit the software development biz to start an insurance agency, and this is a field where a)no software is open source, and the amount of paperwork is simply overwhelming, so one of the things I do is build simple programs to help me automate the more mundane tasks- requesting inspections, data entry...
One such particular program was a tool that let me pull data from an email requesting a quote, and enter it in my quoting program ( a program I cant modify directly) so I am using a gui automation tool to enter the data manually, now the language of this tool is a 4gl that I havent used in a while, but was fairly straight forward and within 2 weekend days it was working 95 percent except for one liitle bug, it was always inputing 49 as the square footage of a house, no matter what I put into the database, or how I tweaked and double checked the query.
I spent a day going over the code until I was nearly insane with frustration, and then after a short break it finally hit me
this language binds a variable to a column in the resultset and the fetch next command (method/function) whatever simply puts the next rows value into the variable.
Well as it turns out the language is very strongly typed (about on the level of java) ... but it DOES NOT PERFORM TYPE CHECKING ON VALUES IT GETS FROM RESULTSETS, and I had forgotten that I changed the type of one of the DB fields. Now I had a respectable knowledge of this 4gl, but I had not worked with it enough to master all its idiosynchrosies, and that made me at least 33% (3 days versus two) less productive than a programmer of the same caliber as me who would have been a master, now I submit that that extra 33% is what lowers a ton of good programmers to decent or bad! And I also submit that if we simply stuck with the languages/tools/Standards we already had, we would get a lot more productivity out of the current work force |
| Sat 06 Dec | Sam Livingston-Gray | Wow, I thought *I* was verbose. |
| Sat 06 Dec | Bored Bystander | While verbose, I agree with you, Mr. 'Ankh Symbol'. The churn in programming technologies effectively makes us 'stupid' in being able to deliver solutions when we allow ourselves to chase the new language or tech being pushed.
I've stayed with Delphi for seven years because the language platform has been exceptionally stable and backward-compatible, and the programming model has been largely invariant since the Windows 3.1 version of Delphi. That allows me to produce faster, better and quicker.
The fact that C# was architected by the guy who invented the Delphi programming model, and that C# looks almost like Delphi says exactly two things: one, most programmers and most of the 'IT media' are stupid and lack wisdom about the history of, and the antecedents to the commercially popular offerings of today; and, that nothing is really new.
The only reason I consider other languages is because either another language does something that Delphi can't, or Delphi simply isn't available on the OS I want to use. |
| Sat 06 Dec | Bored Bystander | By the way, your thread title belies the point of your rant. I thought it would contain some commentary on construction of a better programmer work environment, or some commentary on the mental blocks we developers encounter in real life.
However, it was still a good point. |
| Sat 06 Dec | Stephen Jones | Dear Bored,
The fact that Delphi remained stable for seven years since the time of Windows 3.1 often shows in the UI of the apps it makes :) |
| Sat 06 Dec | Bored Bystander | Ha... ha. Ahem, Stephen, I've done Visual C++, Borland C++, Visual Basic, and others. Whatever I can do and whatever controls I can use in any MS tool, I can do and use in Delphi. I consider your comment typical of the bias in our industry.
My client sells his Delphi based application (for which I developed the core UI) to a customer base of 20,000 workstations.
If you think you observe a deficiency in Delphi apps, blame the poor market penetration - IE, the fact that there are not enough shops selling Delphi apps to allow a fair statistical sampling to take place, and the fact that shrink wrap shops don't often publicize their tool set. |
| Sat 06 Dec | Dennis Atkins | Fire and Motion baby, Fire and Motion.
Notice that Microsoft's top developers still write everything in C and C++ while the 'unproductive' ones all are racing after the next big thing, be it VB, new and improved VB, dot-net, whatever. Meanwhile the productive programmers stay with the same language year after year and kick everyone else's rears while they wondered what happened.
Yep, great point. Fire and Motion. |
| Sat 06 Dec | Brad Wilson | Anybody who thinks Delphi's UI capabilities are sub-standard just needs to look at FeedDemon. That's one sweet UI, and it's all Delphi. |
| Sat 06 Dec | it_ranter | 'Notice that Microsoft's top developers still write everything in C and C++ while the 'unproductive' ones all are racing after the next big thing, be it VB, new and improved VB, dot-net, whatever.'
Hm, I don't know, Microsoft doesn't exactly target VB as a 'core tool development platform.' To me this is not a 'fire and motion' issue, so much as an 'ownership' issue.
In the sense that, really smart companies develop their core tools from scratch, so they own them from the ground up. While this is more expensive, they avoid the churn the original poster is complaining about, because they own and control every inch of their technology.
Microsoft is obviously the king of this. Whereas many firms are outsourcing everything (and I mean that in the technology as well as the labor sense).
There probably is an element of fire and motion, but from the OP perspective, it doesn't sound like he's adopting the new technology just to adopt it. He just needs the 'high level' functionality, and he can't afford to build it from the ground up.
So yea, it sucks that standards and good practices aren't followed in all tools we use. What really sucks more is that we have to use third-party tools. :)
But in a free-for-all industry like this, how can we ever assure standards like, say, type safety make it into small vertical market apps?
(that's not a rhetorical question) |
| Sat 06 Dec | Eric Lippert | > Notice that Microsoft's top developers still write
> everything in C and C++ while the 'unproductive'
> ones all are racing after the next big thing,
I'd be fascinated to know where you learned this 'fact'. What data supports it?
I do not know whether I am one of the 'top' developers or not, but I do know that I write lots of code in both C++ and C#, and that I produce much higher quality C# code, much faster.
I personally wouldn't care to speak to the experiences of the other thousands of developers at Microsoft, but perhaps you know more about them than I do? |
| Sat 06 Dec | Dennis Forbes | If you have the inside information, Eric, then tell us otherwise -- Of Microsoft's commercial software offerings, how many are written in any language other than C/C++? I can't answer this question myself, but I would guess that the percentage is very close to 100% (if not actually 100%). Of course the evangelists will proclaim that the next version of xyz is going to be 100% managed code, blah blah blah, but let's just say that such proclamations are easier said than done. |
| Sat 06 Dec | Dennis Atkins | Eric,
You know that the top guys where you are are working on the most critical things, like the kernel, the file system, the graphics subsystem, the compilers -- the back bone.
This stuff is not written in C#. Or have things changed? |
| Sat 06 Dec | Dennis Forbes | Whooops....in the above I intended to say that the number of commercial Microsoft apps written in anything other than C/C++ was close to 0%, or 0%, and by corollary that the number of commercial Microsoft apps written in C/C++ is close to 100%, or 100%. Phew.
:-) |
| Sun 07 Dec | Matt Foley | >The fact that Delphi remained stable for seven years
>since the time of Windows 3.1 often shows in the UI
>of the apps it makes
Stephen, you're talking out of your ass. |
| Sun 07 Dec | ajs | > Stephen, you're talking out of your ass.
That's a bit harsh. Sounds like you're upset because no-one likes those command buttons with the red cross & green tick on them any more.
Well, except Borland. (or whatever they're known as)
Now that was a short-lived GUI fad. Now about CoolBars... |
| Sun 07 Dec | Brad Wilson | Time moves slowly.
True, there are probably virtually no commercial applications from Microsoft written in C#. But is that because C# sucks? Or is it because these apps exist from a time before C#?
Ask this question a few years from now, when product lifecycles for new products will have given them the opportunity for using .NET.
To me, the 'top' people at Microsoft ARE the ones who are working on and in .NET. I wouldn't consider some Excel code maintainer the top of the food tree of Microsoft engineers.
As for not doing anything critical in .NET, the next version of the Windows shell is written in .NET. *shrug* Now you can argue whether that's critical enough to satisfy your own self test, but it sure is telling enough to me. |
| Sun 07 Dec | Dennis Forbes | 'But is that because C# sucks? Or is it because these apps exist from a time before C#?'
Who said C# sucks? I most certainly didn't, but the reality is that Microsoft made itself a half-a-trillion dollar empire almost entire using C/C++ as their foundation.
'I wouldn't consider some Excel code maintainer the top of the food tree of Microsoft engineers.'
You have absolutely got to be kidding. The .NET folks are now filling the role that the VB branch used to--basically push out whatever you want, because the sheep-like masses will eat it up and call it good regardless. I'm not saying that this means that .NET isn't worthwhile (as I've stated many times -- it is a fantastic environment). The office 'code maintainers' have to develop enough every couple of years to basically support a large part of the organization (as the office group is one of the largest income generators). |
| Sun 07 Dec | Stephen Jones | --' Sounds like you're upset because no-one likes those command buttons with the red cross & green tick on them any more.'---
Yep, they were the first thing that sprang to mind. And I did put a smily at the end of the comment. |
| Sun 07 Dec | Mike Treit | Dennis, the fact that C/C++ was used for most applications in the past does not tell you anything about whether or not that will hold true for the future.
Folks at Microsoft, like most smart developers, will tend to use the best tool for the job. C/C++ is not always the best tool.
Heck, the team I worked on until just recently shipped a product in the spring that had major portions written in C#, and that from a group at Microsoft that is about as traditionally C/C++ focused as you can get... |
| Sun 07 Dec | Dennis Forbes | 'Dennis, the fact that C/C++ was used for most applications in the past does not tell you anything about whether or not that will hold true for the future.'
Indeed, this is very true. However I would say that time will tell, and hand waving and prophecies right now mean very little -- A few years back we were promised a plethora of amazing software products built entirely in Java -- we all know how that went.
It is fascinating counting how many commercial Microsoft products were built using Visual Basic -- I mean this was the dogfood that everyone else was convinced was the true way to salvation and amazing productivity. |
| Sun 07 Dec | Tj | 'The fact that Delphi remained stable for seven years since the time of Windows 3.1 often shows in the UI of the apps it makes'
Bullshit. Three words: Dev-C++, FeedDemon, Delphi 7 (all made in Delphi). And if that technically surpasses the aforementioned 3 words please hold your breath while I make an effort to give a fuck. |
|
| Are Debuggers Wasteful Timesinks? Martin thinks so | Fri 05 Dec | Crimson |
| http://www.artima.com/weblogs/viewpost.jsp?thread=23476
This is something Ive often felt, but was never sure about because it seemed so contrarian to the common view. What do you guys think? People scoff at good ol print statements, but theyve always done wonders for me and are often faster than using debuggers.
I guess the lesson as always is dogmatism is bad...generally. |
| Fri 05 Dec | Brian | Couldn't disagree more. I was going to suggest the debugger as the single greatest innovation in the "axe and knife" thread. |
| Fri 05 Dec | runtime | Linus Torvalds also thinks debuggers are evil. Patches exist to add kernel debuggers into the Linux kernel, but Linus refuses to merge them into his official tree. He actively discourages their use.
The general idea is that if you need a debugger to stare at memory dumps and thread stacks, then your code is too complicated and should be rewritten. |
| Fri 05 Dec | Crimson | runtime:
You weren't kidding. Linus's view on debuggers make Martin's seem downright charitable.
http://seclists.org/linux-kernel/2000/Sep/1177.html |
| Fri 05 Dec | Mike McNertney | One of the big advantages of debuggers over printing is you don't have to recompile every time you find out you need some new information.
If you don't want to use a debugger that's your choice, but I don't see how you can claim they are wasteful timesinks if they help you track down bugs faster. For some uses printing an extensive log is clearly superior to a debugger, but in most cases I just can't see printing being actually better... at best it is equal in productivity
Good debuggers (ie, not gdb... if this is your only experience with a debugger, you can't really speak with any authority) also provide a myriad of tools for helping to understand code, navigate code, and other tasks that are not necessarily directly related to tracking down a bug. |
| Fri 05 Dec | Karel Thönissen | In our company, debuggers are not allowed. Debuggers are to controlled development what gotos are to structured programming or what informal testing is to automated unit testing.
Alright, one can find bugs with a debugger, but there are much better methods. Let me reiterate the claim by a previous poster that debuggers should not be necessary for well-written, well-structured code.
But , there is a very fundamental problem with debuggers. They make the debugging activity non-repeatable. Effectively, one is comparing perceived programming behaviour with a /mental/ model. What is the programmer leaves the organisation, or is away from the code for more than a few weeks/days, hours.
If the programmer is able to reason about the expected state of the execution at some point in the code, then he should add an assertion. No excuse possible.
Debuggers are absolute evil. I have never used one and my code is rock-solid.
I should start my own web log about this and similar practices that we use.... |
| Fri 05 Dec | Tayssir John Gabbour | Linus's context is very different from many others. Good pro-debugger arguments come from the perspective that you're going through some guy's code who probably didn't use good engineering. But Linus controls his project. So Linus's view applies to just a special case of the debate.
I didn't like the debate on the guy's weblog, because it's a large enough subject that there are multiple cases where you have to decide if it's appropriate to use a debugger. |
| Fri 05 Dec | Almost Anonymous | I do most of my daily work in a platform with a debugger. Sometimes, I wish I had a debugger -- I've literally spent hours trying to find a subtle bug somewhere. But I'll be the first to admit that the subtle bug was due to way over complicated code! |
| Fri 05 Dec | Mr. Fancypants | I find that my need for an interactive debugger has dropped quite a bit in these OO-happy days (compared to, say, when I was writing in C). But you'd have to take it away from me by prying it from my cold, dead fingers. It is way too useful a tool in some situations to go without it.
The author's views sorta remind me of the luddite 'write with a typewritter, not a word processor' folk; who are probably a lot like the 'write with a pen; not a typewritter' folk before them (though I'm just guessing; wasn't around back then). |
| Fri 05 Dec | Mr. Fancypants | Sorry for the quick extra post, but I forgot to mention that I find it weird that he wouldn't at least see the usefulness in debuggers for his students -- isn't it a *good* thing that they are stepping through the code line by line? Peeking under the hood, as it were? |
| Fri 05 Dec | Philo | Maybe different people work better in different ways? |
| Fri 05 Dec | Roose | I agree with Karel's point. Using a debugger is good _for you_.
The fix you make with the debugger, if you are someone who _hasn't gone through the debug process_, is not good. It is easy to come up with a lot of hack fixes, instead of restructuring the code to properly solve the problem.
Multiply this type of fix by the team spending 50% of their time in debuggers, and you can see why so many codebases are a total mess.
But of course, I wouldn't take an extreme view... to ship a product, you do NEED debuggers. However, it would be advisable to somehow limit their use during development. |
| Fri 05 Dec | Sum Dum Gai | A debugger is invaluable when you don't know what code is going to do. Not necessarily because it's complicated, but sometimes you don't know what the result of a function is going to be with particular arguments (documentation is never perfect!)
So you can build a seperate little program to call that function and print the results. Or you can add print statements to your big program (and wait for the recompile). Or you can spend a couple of seconds putting a break point in and running to it to see what happens.
Debuggers, if used properly, are a time saver. Of course if you use them for absolutely everything you're sometimes going to waste time. That they can be misused is no excuse for throwing them away altogether. |
| Fri 05 Dec | Roose | Philo: it's true, but these people have to work together, so it is definitely a valid to discuss whether you should use a debugger or not, or in what cases, etc.
If you are a 1-man team, then of course you can do whatever you want. |
| Fri 05 Dec | Richard Kuo | These guys are obviously trying to stir up some controversy. Debuggers are not evil, they are a tool.
A more reasonable explanation might be to say that debuggers are powerful tools, but should not be a crutch that replaces the developer's understanding of the code. |
| Fri 05 Dec | Insert half smiley here. | I think "debuggers are evil" is a koan. It gives you something to think about, but the statement itself borders on nonsense :) |
| Fri 05 Dec | Philo | Roose - also what music you should listen to while coding and what font you should have in your editor.
So long as a debugger doesn't *change* the code, who cares whether a dev uses it or not? How does it affect the ability of the team to work together?
Philo |
| Fri 05 Dec | hoser | Debuggers are a great tool when trying to understand somone else's code. Single-stepping through with different sets of inputs when trying to understand something poorly documented - or not at all is very enlightening.
However, I don't remember the last time I've found a bug with a debugger. Hmmm. |
| Fri 05 Dec | Insert half smiley here. | I found a null pointer dereference with a debugger a couple of months ago. |
| Fri 05 Dec | Bleh | I hate it when some donkey make a ridiculously broad statement about some facet or programming, and all the useless 'haxors' that fancy themselves me too-ing all over the place.
If you're wasting time using a debugger, maybe you're using it innappropriately? Maybe you should use a different means of identifying a bug for that particular case? It all depends on the circumstance. IMO, a debugger is a good way of getting to the absolute heart of a problem in a way logging never can.
Personally, I find it difficult to take anyone seriously that doesn't know how to use a debugger effectively. I suspect most detractors just never learned how to use the tool properly in the first place. |
| Fri 05 Dec | Dennis Atkins | bleh, agreed.
If one is a strawman randomly stumbling through code with a debugger cluelessly looking for bugs with no idea what he is looking for, then yes, that is a poor use of debuggers (the Martin guy gave something like this as an example). But I say that anyone doing that with a debugger would be just as clueless without a debugger. Let them have printfs and they'd randomly stick them all over the program. None of this has to do with debuggers or printfs, but with a certain hypothetical group of poor programmers who don't know how to debug.
Here's a typical debugger case for me. I don't go stepping through the code. I have a bug report and from looking at it, I know exactly what function is causing the problem. I open up the debugger and set a break on that function. I then execute the program and reproduce the bug behavior, which breaks on that function. I look at the arguments to that function on up the call stack and see where things went awry. Takes but a few seconds and there is zero stepping through code -- the debugger has automatically provided me with the call stack at the time the bug occurs. I could look up the call stack manually, but it would take three minutes. With the debugger it takes fifteen seconds. Time is saved and there has been no loss of understanding. |
| Sat 06 Dec | Roose | Philo:
'So long as a debugger doesn't *change* the code, who cares whether a dev uses it or not? How does it affect the ability of the team to work together?'
The claim is that it does change the code. Haven't you guys ever seen code that 'looks like' it was written with about 20 iterations through a debugger? I find it hard to believe you haven't. Maybe it depends on the language... at least in C I notice this a lot. C debuggers tend to be very powerful nowadays.
You have a lot of extra insight because you can browse memory all over the place, modify memory, skip over statements, etc. There is no way you could do what you can do with a debugger by stepping through code in your head, no matter who you are.
Now, I am not one against extra insight. The problem, though, is that it makes your code hard to read. You can no longer understand the code just by _reading_ it or doing some basic test runs, but rather you have to now step through it in a debugger to figure out how it works. And every person who looks at it does, which makes the code a time sink.
Dennis:
'If one is a strawman randomly stumbling through code with a debugger cluelessly looking for bugs with no idea what he is looking '
I don't think it is really a strawman. What percent of the time do you spend writing code in your editor vs. debugging? Maybe you guys do it fine, and you're good programmers. The claim is that many or most people are not. Where I work it is probably about 50/50 ratio, which is way too high. A more realistic ratio would be 80/20 or 90/10. |
| Sat 06 Dec | Dennis Atkins | I've never measured it but I definitely spend less time poking through the debugger than just about any other activities. A typical coding session for me is to create some big new feature through some sort of process described by hand waving, then use the compiler as a crutch to find all the spelling errors, which I correct. I then run the code, it passes the test harnesses. Then move the new feature to QA if one is available (maybe its me) for more indepth testing and I move on to the next feature. Maybe one time out of five there is some sort of bug, which 9/10 times I locate without debugger or editor -- I just know where the bug is since I've seen everything that can go wrong so many times (and also I use lots of live asserts which always catch when some assumpition is violated by new code months or years after the original code with the assert was been fire tested). Then for the remaining errors, I'll go for a walk or do some cleaning and think about the design until the likely location of the error occurs to me. This is right half the time. Somewhere among all this a debugger might be fired up to finalize what is going on.
Poking through a debugger for hours on end without a clue happens about once a year, when there is some freaky undescribed API behavior that just needs to be carefully observed at a low level. |
| Sat 06 Dec | Dennis Atkins | Wait a minute Roose, so in your experience in industry, you are seeing folks who are just sitting there for 4 hours a day running code through the debugger?
Yeah, I'm against that! That's just a waste of time. What is going on with them?
It's nothing to do with debuggers though.
Your comment on debuggers affecting structure is interesting. What I find is that any beginning design I have is usually poor but that over time, it magically gets refactored into some elegant underlying pattern that I never even imagined -- it just sort of happens. Make this a little simpler, reduce some arguments there and to ueries instead. Soon, the whole code restructures itself without even needing a master plan.
It does start out impossible to understand but over time becomes much easier to maintain, which is necessary because if you don't attack the complexity at ever higher levels of the pyramid, it will collapse in a heap of rubble. |
| Sat 06 Dec | Dennis Atkins | To refactor my statement, i'd say that code rot due to lack of refactoring causes the complexity you are observing and not the debuggers themselves.
Maybe for some people having a debugger enables them to put off refactoring a little longer. Not a good trade off there though. |
| Sat 06 Dec | T. Norman | The problem is not with the debugger itself, it is with the need for a debugger in the first place.
Having a great need for a debugger indicates that the code complexity has reeled out of control, and/or that the programmers lack the focus or experience to actually understand the code, so they just keep hacking the code and running it with the debugger until it appears to work right.
I do use a debugger, but only as a once-in-a-blue-moon last resort. |
| Sat 06 Dec | Simon Lucy | I would not use a molecular screwdriver to put together an IKEA Billy Bookcase.
Similarly I would not use an allen key to build a house (not unless it was a very small house and I didn't mind it going all loose after three months).
Sometimes debuggers are the only way to find a bug relatively quickly, there are other tools that can be used along side them, even the print statement (or some wizzy UI equivalent ).
If the language you're using is so abstracted that a debugger would simply confuse and change the process so much as to make it opaque then its likely the debugger won't help you.
Those who've written C and assembler apps know the scenario where it works if you run it under the debugger and crashes and burns if you don't. And that always tends to suggest there's some stack crapping going on.
As for kernel debuggers, apart from the heisenbug side effects you don't really want debugger traps in production kernels for security sake as much as anything else (like performance).
Using a debugger is wasteful only if it doesn't get you to diagnose and fix the problem in a timely manner. Not using a debugger in the right circumstances is just as bad. |
| Sat 06 Dec | T. Norman | I the article's point is more that heavy reliance on debuggers makes them become like a crutch which is a substitute for properly understanding the code, and that leads to time being wasted in other ways.
Heavy dependence on the debugger causes the programmer to judge the code's correctness based on how it goes through the debugger instead of actually understanding the logic. When the debugger says it works, they think they are done, but their failure to actually understand the code means there may be several bugs still left which weren't tested by the combinations that ran through the debugger. |
| Sat 06 Dec | r1ch | Wow - I really didn't think that so many people still thought this way...
Sure, people who wander around code in a debugger without trying to understand the code itself are wasting their time, but I'd that doesn't mean that it's the general case. I fail to see how printf's can be quicker or more efficient than examining context in a debugger. Typically when I'm using printf statements for debugging (generally because the quality of the debuggers available for that platform is so bad) I find that I think I need some state information, so I add some print statements (generally more than I think I'll need), recompile and re-test... then realise that I need more info, so the cycle repeats. In a debugger there is a much quicker turnaround.
Also, print statements are fine for simple bugs in a single threaded process, but how on earth do you use them to track down errors like a method call on an object with a corrupt v-table because it has been released too early - in a debugger you can see very quickly that the call stack follows an unexpected route but even with a quite comprehensive logging system that can be much harder to spot. That's just one example where debuggers are a massive help - what about problems like stack overflows, memory corruption, threading issues etc where any (even slight) change to the code can change or even mask the issue completely.
(As an aside - I wonder how many of the people that don't like debuggers also said that they didn't like exceptions in that recent thread - one of my favourite things about debuggers is that they make it very easy to break at, and examine the context around, an area of code that is throwing an exception - without a debugger it's probably easier to know about the area where the exception was caught, which isn't always as useful. If exceptions are being used properly then you know that if your debugger ever breaks in on an exception, something has gone wrong.) |
| Sat 06 Dec | T. Norman | 'I fail to see how printf's can be quicker or more efficient than examining context in a debugger.'
The main comparison is with debuggers vs. understanding of the code, not debuggers vs. printf.
Understand the code, and you will seldom need a debugger. And if you use printf, it will be only in a few strategic places.
Think about it this way ... suppose a debugger doesn't exist for your language or platform? Would you be helpless, or would you be prompted to read the code thoroughly? |
| Sat 06 Dec | r1ch | Sorry - I should have been more specific - I'd just read the article author's comments in the comments section of his weblog he said - 'My real beef is with depending on debuggers to debug code that could 1) be debugged more easily through inspection and 2) be debugged more easily using print statements.'
I quite often work on platforms where the debuggers are so unreliable that they're not worth bothering with (AIX for example), but I think to fix a problem properly you need to understand the code regardless of whether a debugger is available or not - I just find that it's far quicker to pin a problem down using a debugger. |
| Sat 06 Dec | T. Norman | 'fix a problem properly...'
*Properly* is the relevant word here. For people who overly depend on debuggers, fixing is the process of repeatedly changing sections of code until the debugger shows that the program runs as expected. They haven't fixed it *properly*, they've just fixed the cases that were shown in their debug run and may have created other problems that will manifest themselves another day. |
| Sat 06 Dec | Mister Fancypants | The anti-debugger folks make it seem as if the debugger just goes in and fixes all the bugs for you, which as we all know is just bullcrap. You still have to understand the code to fix it and make it run; whether that understanding comes from a debug session or running the code 'in your head' or whatever other method is irrelevant and I'd never work for anyone who tried to dictate such a stupid thing as not allowing developers to use debuggers... |
| Sat 06 Dec | T. Norman | Some people use the debugger to fix code without really understanding it. Literally, I've seen people do things like 'let me increment this variable here and watch what happens.' Eventually they get it to work through trial and error ... for now.
Yes, they need at least a PARTIAL understanding of the code to get it to work in some form. But the full and proper understanding is not there, and the debugger is used to cover up the gaps in their understanding.
Debuggers are useful, but depending on them in day-to-day programming hinders a proper understanding of the code. |
| Sat 06 Dec | Simon Lucy | Well if people use debuggers to suck and see and prod the code to see what behaviour it has (and they have full knowledge of the code and aren't reverse engineering it), then I'd say they were at fault and not the debugger.
That has precious little to say about debuggers and their use though. |
| Sat 06 Dec | Flabbergasted | I find all the comments above amazing. Why don't you actually *read* the half-page blog entry linked above instead of commenting on the headline and what you perceive to be the topic?! Or is it that you read the entry, but you glossed over the phrase 'Test-Driven Development' as unfamiliar, which would be just as damning for a programmer?
Martin is just saying that for good programmers who write good automated unit tests for all their code, debuggers have become almost obsolete. Most (probably all) bugs you could find with a debugger will have been revealed by your unit tests, during every build, before you even run your program for the first time. Those few bugs that sneak through due to shabby test coverage tend to be easy to spot with a glance at the code. |
| Sat 06 Dec | Anon. Coward | I bet there's a strong correlation between the anti-debugger camp and people who don't use IDEs. When all you have is gdb, then yes, that kind of debugger doesn't add much value over printf statements and code inspections. But a good integrated IDE debugger like Eclipse or Visual Studio, *will* help solve bugs faster than mere code inspections, period. |
| Sat 06 Dec | T. Norman | Yes, when there is a problem a debugger probably does help find the cause faster. But if you use code inspection first and foremost, preceded by well-organized code, you'll be better able to understand the code as a whole, make modifications more quickly, and prevent other bugs from occuring. |
| Sat 06 Dec | Christopher Wells | > quickly found through inspection and a few judiciously placed print statements
I agree. I recently wrote a protocol converter: I log all input and output messages, all internal state changes, and all error messages. Given all these log messages, it's quick and easy when reading the source code to know the code path that was executed in the processing of a given message. A disadvantage of using a debugger is that it's no good for debugging errors that happened when you were not running under a debugger (for example, an error on a QA or customer machine). The one time a debugger is a real tme-saver is when analysing a crash dump or core file. |
| Sat 06 Dec | Michael Kale | I happen to use debuggers while debugging, but even if you don't like that, debuggers are a real time saver when testing too.
Need to make sure that your code can handle a rare error in foo module correctly? Just break in with a debugger and write over the return value from a function call and let it go again. Much faster than actually trying to cause that rare error...
Debuggers are also handy when analyzing memory dumps from crashes that happen at customer sites, etc, etc.... |
| Sat 06 Dec | Philo | It honestly looks to me like another case of baby/bathwater:
'Many people don't use debuggers right, so we should get rid of debuggers.'
FWIW, that indicates an exceptionally poor grasp of logic, and an inflated sense of self-importance. Sounds like a definite 'no hire' [grin]
'The claim is that it does change the code. Haven't you guys ever seen code that 'looks like' it was written with about 20 iterations through a debugger?'
Yet another 'someone used a debugger to write crap code, so it must be the debugger's fault'
When I crank up a debugger, as someone else mentioned, I've identified where the problem is and set breakpoints - I'm just trying to figure out exactly what's going on. And when I find the problem, I only 'patch' it if a patch is appropriate (boundary case, for example). Often it prompts minor (or in a few cases, major) refactoring.
Philo |
| Sat 06 Dec | son of parnas | Doctors shouldn't use MRIs or xrays either. Just look at
the person and poke them a little. |
| Sat 06 Dec | Russell Thackston | Ummm... The real point to the article is found in the top right-hand corner of the blog page. |
| Sat 06 Dec | Rick Watson | I'm not sure about you guys...
But since I've started using nUnit, I've stopped using debuggers more and more. An earlier chap had a great point - do things that are repeatable.
If you spend 5% of your time in the debugger, spend 95% of your time writing the unit test so you don't have to be there next time. |
| Sat 06 Dec | Roose | <<>>
I would say this indicates an inability to read -- also a definite 'no hire'.
Neither I, nor Martin, or Torvalds said anything about getting rid of debuggers. Torvalds says he doesn't include it in the distribution to discourage their use. In fact I said you NEED a debugger to ship a product.
We are saying that people use debuggers too much. If you're talking about knocking down strawman on our side, then why don't you refute the real argument, instead of mocking a contrived extremist one.
Also, as for boundary cases -- that is precisely where you shouldn't use a debugger. In most cases, it is easy to identify the boundary cases a priori, and you can take care of them while you're coding. Not 'code for the common case' and use the debugger to fix the boundary cases. I am not accusing you of doing that, but if you have never met anyone who does, then you probably have no programmed with many other people.
Let it be known that I use a debugger every day. I have to because of the codebase I work on. That is why I am against their abuse. |
| Sat 06 Dec | Roose | Dennis:
'Wait a minute Roose, so in your experience in industry, you are seeing folks who are just sitting there for 4 hours a day running code through the debugger?'
Well, I said the ratio between writing code and debugging. You don't code all day -- you read JOS, you have meetings, talk with coworkers, etc. : ) But yes, I would say the ratio can be 50/50 -- especially because at the end of the cycle, before ship, we spend essentially all day in the debugger to find bugs.
The problem is not necessarily that each individual programmer is stupid, or relies on a debugger. The problem is basically with a large team of programmers --communication and planning. If I am developing the high-level code, and you're developing the low-level code, then you need to give a solid API in order for me to avoid stepping through your code in a debugger all the time to figure out where my assumptions are wrong. As many others have mentioned here, you should provide an automated test which unequivocally defines what your code does and verifies it.
'To refactor my statement, i'd say that code rot due to lack of refactoring causes the complexity you are observing and not the debuggers themselves.'
That's fair, and I can accept that. Note that refactoring also requires unit tests. The debugger is a crutch to avoid writing unit tests, and so thus it prevents refactoring. |
| Sat 06 Dec | T. Norman | 'Doctors shouldn't use MRIs or xrays either. Just look at
the person and poke them a little.'
Actually, that's sort of the point. They should know enough about the human body, and know how to examine you and ask questions so that they don't send you for an MRI or X-Ray when your problem could have been solved with a simple procedure or prescription, or diagnosed with a more appopriate tool. |
| Sat 06 Dec | Philo | T. Norman - I'm gonna start calling you 'Luka'
(ER reference)
Philo |
| Sat 06 Dec | son of parnas | T, please don't be my doctor. I would like someone
who can exercise judgement. Someone who can say
these are my tools and here are the best times to
use them. Your kind of doctoring could end up killing
me. |
| Sat 06 Dec | T. Norman | So I take it you would prefer your doctor to send you for an X-Ray or MRI even when the problem would be more effectively solved or diagnosed otherwise?
You are missing the point but you are agreeing with me. I am exactly saying that the doctor should know the appropriate time when to use and NOT use each tool, and should not rely on one popular tool as a crutch to cover up gaps in their understanding. |
| Sat 06 Dec | Jorel on Software | Well, unit tests are good, but what happens when your unit needs to be integrated with someone elses unit? (in a non-sexual way).
Last time I ran Linux it dumped core all over the place. Maybe Linus *should* be using a debugger. |
| Sat 06 Dec | son of parnas | >So I take it you would prefer your doctor to send you for an >X-Ray or MRI even when the problem would be more >effectively solved or diagnosed otherwise?
I would expect my doctor to have the experience
and judgement to pick the right strategy. I would
not expect absolute simple minded statements, like
all disease can be cured with deep tissue massage,
when there are clearly times when an MRI is necessary. |
| Sun 07 Dec | Portabella | I am also very solidly in the 'no debuggers' camp.
I just recently started a new contract and 2 incidents reinforced my point of view:
1. Coworker and I were adding a feature, he using a debugger, I relying on log statements and understanding the code (this is 'instant legacy' code -- no unit tests). He kept seeing a persistent error that I wasn't seeing. Finally he ran it without the debugger, and the phantom problem disappeared -- the cause was a bug in the debugger.
2. Same coworker and I tracking down a bug. It's not clear why it's happening, so we pair program for a while. At his cube, we step through the same code, repetition after weary repetition. After 20 minutes, I have a brainstorm and go look at the code base. Sure enough, a critical file hasn't been updated. We update it, and all is well.
I don't object to *any* technique that I can think of that's used with intelligence and vigor, and I know some people do use debuggers that way: as tools, not crutches. But I've seen many, many cases like the ones above, and so I prefer unit tests, assertions, logging and *thinking* to debugger tedium. |
| Sun 07 Dec | realist | A few years ago we decided to design and implement a debugging class into all of our applications. It would do all the neat stuff like write logs, etc all the things that a debugger is meant to do. However we discovered that on 40% of the times that our software broke it was caused by the debugger! Typically trying to write to a log file on a server that had dropped out, or trying to use a COM component that was non existent, etc. We dumped it in the end and life was easier. I still think debuggers are useful but as far as I'm concerned they need to be kept extremely simple. |
| Sun 07 Dec | son of parnas | Realist, if you can't write a logging subsystem there's
not much hope for anything else :-) |
| Sun 07 Dec | whatever | Try writing an emulator for the Sega Saturn video game console machine and then come back to talk to me about debuggers. Emulating complex hardware separates the men from the Linuses. |
|
| Recommendations for Customer Support software? | Fri 05 Dec | Matthew Wilson |
| Hi -- I was wondering if the Joel on Software crowd has much experience with tools for post-sales support. We have been running with Microsoft CRM for a couple months now, but have found its email integration to be less than stellar and the Service side of the application (the only side were interested in) feels much more like it was an afterthought to the Sales side (which we dont need).
The types of system we want should track:
- customer status (current versions of our products they have, technical information to help us with support such as IP addresses of their servers, etc.)
- issue tracking (they call us, we open a ticket)
- feature request tracking (one feature may be requested by multiple customers, etc... feature requests are usually handled differently than tech support issues, so Id expect a system like this to know the difference)
- E-Mail integration (incoming and outgoing... emails to customer X should show up in their file, if that email happens to be related to a specific case it should be linked into that case, etc. A filtering element for incoming mail [through Exchange] would be nice to associate incoming mails with cases if theres an appropriate tag in the subject or header... or even if theres a button in Outlook to click to stuff the message into the CRM system thatd be great)
Anyway, thats a quick overview of what were looking for. We do large Enterprise deployments of our software, so there is a small number of customers but they each get a lot of attention.
Id appreciate any insight into tools that have worked for everyone else here. Thanks! |
| Sat 06 Dec | Hector | Maximizer 7 has great integration with Outlook. It can be setup to track a lot of your requested info on customers easily. I really like its ability to group documents for a specific customer. I used to track faxes, graphics (from digital cameras), and emails all in one place.
There are also several other CRM packages out there such as ACT!, GoldMine, and Contact Plus. |
| Sat 06 Dec | Dave | We've been very pleased with Clientele, although we are not using the latest version (which perhaps may be even better.)
The #1 benefit we found was the ability to customize the package using its built in VB-like programming language. |
| Sun 07 Dec | Brad Wilson | You might want to look into HEAT from FrontRange software (caveat: I used to work for them, but no financial interest). It's an application that's designed for customer assistance.
http://www.frontrange.com/heat/ |
|
| What's wrong with InstallShield ? | Fri 05 Dec | GP |
| (This is not a rhetorical question.)
I have read in a thread here that InstallShield sucked beyond belief.
Ive used InstallShield Professional 5, and I can tell what was wrong with it :
- crashes from time to time
- builds are not so fast
- below-average code editor
- no way to sort the files by date, name, size, whatever
- no way to know if a file is already inserted
- no ****** password field
- generally takes 100 % CPU during an install on NT or W2K
- cannot add more than 5 files at a time to the install (Not kidding - maybe there was a service pack for this one).
On the positive side, Ive managed to build installs, without being limited by the script language.
Do the issues I mentioned still exist ? Who has stories to tell about the present versions (DevStudio 9, if Im correct) ? |
| Fri 05 Dec | Myron A. Semack | I gave up after version 7. Maybe this stuff has been fixed.
Problems I had:
- Crashes frequently.
- The IDE insists on connecting to the Internet every so often to check for updates. When you're on a system not connected to the outside world (like I am), the whole app will freeze for a while while it tries to resolve the DNS. This is extremely painful. Also, it does this even when I uncheck the 'automatically check for updates' option.
- For the longest time, they refused to make their updates/service packs downloadable as a stand-alone file. I could only get updates from within the application. If you have a system not connected to the internet, you're screwed.
- For how much money the application costs, they don't give you any phone support. You can only go through their web site, where you send an e-mail and get ignored.
- They could at least send a fucking manual with it. They send you this nice pretty software box, and it's filled with foam!!!!!! All that's in the box is a CD in a sleeve.
- It insists on using absolute pathnames for files to include in the install package. If I open up the project on a different computer (where things are in a different directory), then the application borks.
- The wizard won't let you recursivley add a direcotory and it's contents.
- No support for drag-n-drop in the interface.
- No ability to rename a component. If I create a Start Menu folder, and then make entries inside that folder, I can't change the name of the folder. I have to delete the folder, and then manually recreate everything that was in it. And I can't recursively delete the folder and it's contents. I have to manually delete everything inside the folder.
- If you mess up the project file in an outside editor, the application doesn't tell you. It just crashes.
That's just what I can remember. I have touched it in a few months. |
| Fri 05 Dec | dmooney | I hate the absolute filename misfeature too. What's wrong with relative path names? All of the developers at my company have the same source tree but it might be on a different drive, or have a different root. On the build server, everything is rooted at C:\Build I think, but not so on any other machine. So what we do is only author installs on the build machine, using a single license of the software. If they supported relative paths we might have even bought one for each machine.
I've heard here the InnoSetup is nice and I think I'll look into that for the next one I need to do. I've also used PiMP, freeware from NullSoft, for some simple things. |
| Fri 05 Dec | Brian | We're using 7 currently, and it suffers from all the bugs and misfeatures listed above. We're going to start switching to version 9 soon, so we'll see how that is.
My big complaint is that it interacts poorly with Visual Source Safe. You have to check out all of the project files, and it often makes unnecessary changes (moving sections of ini-like files). That and the scripting language *literally* combines the worst features of C and VB. |
| Sat 06 Dec | Chris Tavares | Add to all that, some general misdesigns.
The installscript language they use is a mess - worse than VB 6 on a bad day. The examples in the documentation are often wrong. And, there's no real structure to the script they build - it's just code with a bunch of gotos for each section in it. |
| Sat 06 Dec | Richard Lehman | Six weeks ago we sent out our beta product to 3,000 beta sites (medium and large companies/organizations). The installation was built with InstallShield DevStudio 9 (InstallScript project). InstallShield is an awful product. The IDE GPFed several times a day on XP and 2000 (after that a reboot was required). Believe it or not, the installations failure rate was 9%!!!! This was a tech support 'nightmare'. My impression about Installshield's capabilities is very low.
Neither InnoSetup nor NSIS were an option because we had to release small binary patches during the beta cycle. One of our customers suggested a product called Setup Builder. It turned out that the current release was not powerful enough for us to distribute our software. Nevertheless, we contacted Linder Software and they gave us access to their new (soon coming) Setup Builder version 5.
What shall I say? Their SetupScript scripting language contains all the features we need. Documentation was not available, but my colleague was able to build a new installer within three hours. The resulting setup.exe was one-third of the size of the InstallShield crap and the installations failure rate was close to 0%.
Is there anyone out there who actually likes InstallShield? |
| Sat 06 Dec | Jason Allen | You can do relative paths with InstallShield (at least with InstallShield Professional 7), you just have to do it in a strange way. For example, if I want to include everything in a 'files' directory a couple directories below where my InstallShield project is, I would create a File Group and set the Link Type to Dynamic Links and put this in the Folder:
\..\..\files
Then the installer can be built on any machine, no matter where the files are located. |
| Sun 07 Dec | Clay Dowling | I've had very good luck with NSIS, but I'm only building simple installations. I've never tried using it for larger projects. It is much more like programing though, which means that while it's great for simple things, complex things can be a real head scratcher. It's definite good side is the extensibility. I found it easy to extend with C language DLLs.
If you're seriously stuck for an installer and want some help, contact me off the board and I'll see what I can do for you. |
|
| "Secret Question" Password Reminders | Fri 05 Dec | My Aibo's name is Spike |
| Is anyone else annoyed with those secret question password hints that are on every web site with user accounts?
Youre supposed to give the site an answer to one of several usually-predetermined questions, like your mothers maiden name, or your pets name, or where you were born. Then, if you forget your password, they ask you the question back and you provide the correct answer.
Problem is, to me, that the questions are always so simple that anyone who knew me personally could find that stuff out. Lots of people could know my pets name, and Im sure they could find out where I was born with a little digging.
So WTF? Doesnt that throw all the SSL encryption out the window? It doesnt matter on random discussion boards so much, but ecommerce/job search sites with sensitive information seem to be using this as well, and its becomming preferred or even mandatory when it used to be optional.
I usually just put in garbage, but that could be a PITA if I ever forget the passwords. Seems like such a gaping security hole... am I missing something obvious? |
| Fri 05 Dec | bpd | I can see why you don't like the "Secret Questions". However, to avoid the inherent security risks that you mentioned you could simply supply answers of "123" to each of the questions. Who could guess or find out that your mother's maiden name is "123"? |
| Fri 05 Dec | www.marktaw.com | http://world.std.com/~reinhold/diceware.html
Generate a secure passphrase /password this way, and then use the secret question to clue yourself in to which die rolls you used to get there. |
| Fri 05 Dec | Simon Lucy | Yes there's no necessity for the answer to be correct or even remotely connected to the question.
Just so long as you remember the relationship |
| Fri 05 Dec | SG | I hate those sites that let you receiving your password, in case you forget it, by emailing the address they have in their database.
That's just lovely, if someone on a shared network wanted your password to something, and they knew your username, it's pretty easy to get the password.
Just issue secureID cards to everyone... |
| Fri 05 Dec | www.marktaw.com | Oh wait, the answer to a question that is the seed for your generated password won't help because you won't have access to that either.
How much less secure is this than a bank that uses your address, mother's maiden name, and SSN to identify you?
Most banks will let you change the secure question they use to identify you.
I'd be more concerned with some admin having acces to your mother's maiden name than with my friends having access to my hotmail.
Invent fake answers to all of the questions.
Mother's maiden name: supercalafragilisticexpialadocious
City where you were born: antiestablishmentarianism
Pet's Name: fourscoreandsevenyearsago
And stick with these from site to site so you can remember them if need be. |
| Fri 05 Dec | Une Ternal | I just use something like, ';asdfiahega834y23t948tyljkhsdfas;lda8ehfasfdkfj'
for the answer to the question. I'll never be able to answer the question, then again, I'll never need to. |
| Fri 05 Dec | somebody | I do the same thing as Une Ternal -- some random long string of junk. |
| Fri 05 Dec | T. Norman | 'I hate those sites that let you receiving your password, in case you forget it, by emailing the address they have in their database.'
'That's just lovely, if someone on a shared network wanted your password to something, and they knew your username, it's pretty easy to get the password.'
That is much more secure than actually displaying the password onscreen. They send email to the address you previously gave them, not to one you are just providing them. How would someone get your password just from knowing your username? |
| Fri 05 Dec | Brian | the real annoyance is having to enter a password for a useless site in the first place. Do I really have to remember my username and password to read the New York Times online? Forget remembering invented answers to 'security' questions, don't make me remember anything!
Of course, this probably isn't the kind of site you had in mind. Security is always a tradeoff. If you think the site you are dealing with doesn't adequately protect your account, let them know. |
| Sat 06 Dec | Joe | > And stick with these from site to site so you can remember them if need be.
Seems like bad advice if you want to maintain security. I generally don't want site A to have access to my password for site B. |
| Sat 06 Dec | www.marktaw.com | I agree. On the other hand, writing them down seems like as much a breach of security as writing down your password.
So the dillema is: You want your password to be retrievable if you forget it. You want a way to authenticate that you genuinely are the person requesting the password reset. You don't want this to be based on common knowledge. How do you do it?
I prefer the site that let you write your own question. |
| Sun 07 Dec | ko | If you get a site which lets you ask your own question, then you get people who will put in questions like "asdf" where the answer is "asdf". Sometimes people need protecting from themselves. I, therefore, don't agree with letting people ask their own questions. |
| Sun 07 Dec | Rob Walker | I agree with Brian - it depends on the site.
For all sites were I don't care about the security I use the same password, question / answer. I don't do that for the my online banking!
It usually comes down to whose benefits from me logging in - is it for my benefit / protection, or just so that the site owner can track things better.
I don't mind too much logging in if that is the case, but I'm not going to try and remember a secure password for the site. |
|
| Well, this is it | Fri 05 Dec | Hey, it's me! |
| Well, this seems to be it.
My company is dumping me and I am scared. Scared beyond recognition.
I can see that there are no wanted adds on the web (although its xmas time and no employer hires during this period). I also have a feeling Im going to die. This is the end of me as a developer. Although I am certified, I can only think of horror stories. Like never getting a job as a developer again. I guess Ive been reading too many stories on the business section of the NY Times.
Guys, some word of advice or solace please. My head is spinning way too fast for me to take it easy. I think Im going to throw up. |
| Fri 05 Dec | K | Get whatever kind of work you can. It will be fine in the end, even if you have to go through a rough period without doing what you'd like. Your experience as a developer isn't wasted. If you pay attention to what you do, even if it has nothing to do with development directly, you can always come back to development-for-a-living because there'll always be value in automating work.
Getting suicidal certainly isn't going to help you think more clearly. |
| Fri 05 Dec | Slashbot | Stop reading newspapers. First, there are no job ads in there anyway, second, you save some money, and third, newspaper journalists amplify the current mood, so black gets even darker. |
| Fri 05 Dec | Ran Whittle | The initial news of being laid off is very shocking. That shock passes, so understand that you will not always feel the way you do right now. Ignore the news about jobs being outsourced, there ARE employers in America hiring developers right now.
Good luck, and don't let this completely spoil your holidays. |
| Fri 05 Dec | Dennis Atkins | K is right. This sort of stuff happens to *everybody* at some point in their life, it's too early to give up hope. Take on another job if you need the income to keep yourself occupied -- maybe a job as a librarian or fish store clerk, or whatever. If you'll have problems meeting bills and mortgage than view this a good once in a life time opportunity to downscale your lifestyle and embrace a simpler life. Years from now you'll look back at this and wonder what the big deal was. Think of the time your grandparents had during the depression and how they made it through despite having nothing. |
| Fri 05 Dec | The Pedant (Brent P. Newhall) | My advice?
Stop.
Give yourself a week or two. Go on vacation somewhere, if you can possibly afford it.
Then look at your situation. |
| Fri 05 Dec | no name | I'm not a developer and I do ok for myself. The prospect of change is always scary. Computers are what you know and what you like and what you have become accustomed to, but don't close your mind to other things. You may have to change your lifestyle because you won't be making as much money, but it's not the end of the world. I certainly don't live extravagently.
( You may in fact be spoiled by having had the opportunity to work with computers. Are you too good to work at the mall or in factory or at McDonalds? I don't think so. Welcome (back) to the other end of the spectrum. ) |
| Fri 05 Dec | Foo | people are hiring, take your time and search monster |
| Fri 05 Dec | Name Withheld | You have to do what I eventually did when my job disappeared... swallow your pride and take whatever paycheck you can find. Me? I was a supervisor at Target by day and drone at Blockbuster by night to make sure the bills got paid.
Now, I'm back working in an office, developing... not the best location, not the best environment, but it's a job. |
| Fri 05 Dec | the artist formerly known as prince | Make a list of everyting you ever wanted to do, learn and see, do do it learn it and see it |
| Fri 05 Dec | son of parnas | Please don't do anything drastic. Your are having
a very reasonable response to a shocking situation.
It's like any other loss and there is a grief process
you go through. Understanding the process
might hopefully give you some perspective that
there is light at the tunnel's end.
http://web.vet.cornell.edu/public/petloss/ekr.htm
Yet don't forget to drink and curse and rail against
the injustice! A good sulk is good too. |
| Fri 05 Dec | Chris Tavares | The last time I was laid off nearly destroyed me. I had moved my family 3000 miles for this job, and had invested lots of late nights and personal pride into our product. When the entire division got cut, all I could think is 'what did *I* do wrong?'
What finally snapped me out of it was the realization that I am NOT the job. I have worth as a human above and beyond the code I write, and the job is secondary.
I'm feeling a lot better (and my marriage is much stronger) now that I've realized that.
Take a little time, step back, and try to separate yourself from the job. |
| Fri 05 Dec | Ted | You'll be alright dude.
You may have to take a stop-gap job if you haven't saved up enough of an emergency fund.
Start listening/reading only to positive news sources. (Quit this board!). Remember that fear sells news.
Look at this as an opportunity. You've got a chance to branch out, start a new adventure, or turn your life around 180 degrees. |
| Fri 05 Dec | Alyosha` | Been there. I was unemployed for 18 months. But now I'm back in the game again.
I was sitting on a stack of cash when I got the boot (I had been preparing for the eventuality), so between that and unemployment and a few odd custom programming jobs, I squeaked by OK.
Don't worry about it too much. Losing a job is a part of life. The first one seems a lot more traumatic than it actually is. The tech economy is a whole lot better than it was a year ago; on one jobs list I'm subscribed to, I was getting one new opening a week. Now it's like two or three a day.
Christmas time is usually a slow time in this industry, but keep on the lookout, some hiring managers are trying to get a head start for January. |
| Fri 05 Dec | www.marktaw.com | Sounds like you have a good resume - certification and all.
You'll learn a few things from this experience like how well you work when you're not being told what to do, and that what you think is 'the bottom' is almost never the real bottom and that there's going to be another path that opens itself to you. Maybe you'll move into a less expensive place or in with your parents or a friend, maybe you'll eat out less and get a job at The Gap, but at the end of the day, you'll still be you and being laid off can't take that away.
If you were laid off, you'll get unemployment. Hopefully you got a severence package. Those should hold you over. Maybe you'll dip into your credit cards and your 401k, but you'll survive, and on the other end, you'll be more appreciative of what you have, and you'll know better what is you and what isn't.
Or maybe you'll get a new job within a couple of months. |
| Fri 05 Dec | www.marktaw.com | Oh, and avoid thinking like "nobody's hiring now" I thought that way when I was laid off around this time last year and it prevented me from getting into the game for a couple of months... bad idea, once you get lazy it's hard to get back into serious job hunting. |
| Fri 05 Dec | bye | The worst part about being laid off is what it can do to a man's soul. Layoffs usually come just when you think you've developed a solid relationship with your company. One momet, you're happily coding away, in blissful ignorance of your coming demise. The next moment -- BOOM! -- your whole world is crushed by the merciless machinations of capitalism.
The world can be heartless and cold at times. As much as the mass of humanity wants to believe in some kind of natural justice, alas, there appears to be no such thing. Events in our lifes sometimes appear to be as random as a pinball bouncing off a bumper in a 'The Simpsons' pinball game. Life can be cruel at times, and yet exhilarating at other times. When the going gets tough the tough get going. If there is one thing that has always been true about life since the movie Forrest Gump came out it is that this world we live in, our existence as it were, is like a box of chocolates.
One time I was up very early in the morning. It was very dark, darker than it had been probably all night. Then shortly, Dawn came. It was about time, as I had been riding her nearly half the night. But, it just goes to show you that its usually darkest right before the coming of Dawn.
I hope this lone message on a disembodied message board that resides in the nether of cyberland has shown you that you too can go on. Just keep your chin up. And don't ever, every stop reaching for the stars. |
| Fri 05 Dec | no name | bye, that was so sappy, come on. |
| Fri 05 Dec | Reginald Braithwaite-Lee | A fellow I know owned a chain of stores during the last recession. His business shrink to one store under bankruptcy protection.
What did he do? He was delivering pizza at night just to pay his bills. He got back on his feet and turned things around.
Remember:
This situation is impersonal: it's not about you. It isn't a judgment of your value as a human being.
This situation is temporary: bad times come and bad times go.
This situation is specific to your job: you still have something good in your family, your friends, your hobbies, your sports et cetera.
If you want to talk, email and we can trade phone numbers. There are lots of people out here who care about you! |
| Fri 05 Dec | www.marktaw.com | Whether or not you believe in a greater meaning to life is personal. By definition faith is something you believe in that cannot be proven.
Bye seems to be conflicted. He says life is arbitrary and there is no greater meaning, and then says that when things go bad, they always get better, as if there was a greater plan.
Reginald is right. You should realize that the situation is impersonal and doesn't sleight you or your abilities. Also, lots of people have been in the same situation. I heard all of these things from the outplacement firm when I was laid off. I think maybe the best thing would be for people to relay their own stories and how they dealt with it.
I think real life, solid examples would be the most helpful. |
| Fri 05 Dec | Must be a manager | Hey, it's me ... your responses to this situation are correct. You need to be scared and to start behaving differently to survive an emergency.
One of the most dangerous things people can tell you is not to worry. You do need to worry. You will have a hard time.
Do NOT go on a holiday in the current environment. It will set you up in a non-productive behaviour. Straight away, you have to go get some sort of job that keeps money coming in. Using your savings makes a much bigger hit than it seems at the time.
To find other jobs, you probably have to get into networks of companies that might be hiring. Join something, if possible. Don't rely on job boards or recruiters. They are a massive waste of your time, and encourage passivity.
Hang in there. It could be worse. But know that you have a problem and a fight on your hands. |
| Fri 05 Dec | Alyosha` | Must be a Manager's advice is correct if you could just surround it parentheses and put a big ! negation operator in front of it.
Worry is a counterproductive. It won't help you find a job any faster; it adds needless guilt and stress if things don't go right, and it's going to make you come off as desperate for a job. The last thing you need is ruined confidence right now. There's nothing wrong with taking a week off and getting in touch with the things that are important to you. Just don't go too long. Looks bad on the resume.
His bit about networking being far more useful than headhunters and job boards is correct, though. But don't write recruiters off completely; they're a good resource if you use them correctly. |
| Fri 05 Dec | Must be a manager | Fear and worry have evolutionary value, you know, Alyosha. |
| Fri 05 Dec | van pelt | Use dice.com . I needed to find a job in one month. I got 3 calls the next day, had 2 interviews less than a week later, and had a job within 4 days after that. |
| Sat 06 Dec | www.marktaw.com | > Fear and worry have evolutionary value, you know, Alyosha.
But that doesn't mean you're at your best when you're stressed all the time. The evolutionary value of Fear is so that you don't get killed. Once the danger of being killed has passed, humans should be able to calm down. Your decision making is impaired, and your body undergoes physiological stress.
What value do sweaty palms, and a fight or flight attitude have during a job interview? Or not being able to keep down food? |
| Sat 06 Dec | Must be a manager | > What value do sweaty palms, and a fight or flight attitude have during a job interview?
Yes, that's true. I didn't really mean so much mean that they guy should suffer, as that he should recognise that his alarm is a valid response indicating danger. |
| Sat 06 Dec | one programmer's opinion | 'Guys, some word of advice or solace please.'
Tells us more about your overall general situation if you feel up to it.
What is your financial situation like?
Are you eligible for unemployment insurance?
How old are you?
You have my empathy, but if you need some solace you should really be seeking that from family and friends. Don't hide the fact that you no longer have a job from them!
Nomally, people don't feel suicidal until they have been out of work for a while. That being said there is nothing abnormal about the way you currently feel.
My advice to you is the following:
* Don't let others tell you how you should be reacting this life altering event. Go ahead and cry and feel sorry for yourself for awhile if that is what you feel like doing. Just don't allow yourself to become a perpetual couch potato.
* Expect your job search to last anywhere from six months to a year.
* Start coming up with a list of jobs that you can apply for that will hold you over until you are able to land another programming position. Don't just think about jobs that you might like to try.
* Stop spending money! In other words, be prepared to change your current lifestyle.
* While underemployed/unemployed keep your programming skills current and work on areas you feel need improvment (i.e. interviewing skills). |
| Sun 07 Dec | realist | Hey, it's me - I'm glad it's you and not me.
Walk around the city and look up at all those skyscrapers and office blocks filled with people with jobs. Some of them can barely spell their own name.
Be realistic, with your skills you'll be working sooner rather than later. |
|
| Patterns For Relational Database Design | Fri 05 Dec | Brian |
| Im looking for patterns (no matter if web-site or a book) for how to design a relational database. Some patterns (like normal forms) are well known and practiced but Im looking for patterns that go beyond normalisation. Especially in terms of designing a database thats easy to map to OO.
I was searching the Net for quite a while but without results: There are many patterns for designing O/R (object/relational) mapping and DALs (data access layers) but thats a layer that comes after a good relational database design. |
| Fri 05 Dec | Simon Lucy | So do you want how to model data such that it produces the 'correct' database?
If so Terry Halpin http://www.orm.net/halpin.html is your man. |
| Fri 05 Dec | Nathan | There's a great .NET show where Terry walks you through how to do this with Visio - Enterprise Architect. One of my favorite .NET shows.
http://msdn.microsoft.com/theshow/Episode025/default.asp |
| Fri 05 Dec | Brian | ORM is a very interesting (and with Visio surely applyable - been there, done that :)) technique but what I'm searching for something more like GoF design patterns format for "low level" relational database design (with consideration of later O/R mapping and DAL's). |
| Fri 05 Dec | Brian | (Ahhh... those pesky typos and grammar errors... sorry.) |
| Fri 05 Dec | puck | You mean something like this:
http://www.amazon.com/exec/obidos/asin/0471380237
or this:
http://www.agiledata.org/
?? Hard to know from the description exactly what sort of information would be useful to you. |
| Fri 05 Dec | Brian | @puck
Both the book and the web-site you suggest come near.
That book is a good one. In the book many examples of working models are made. Great! But it's not the essence of database modeling extracted in the form of a pattern so that you don't need to read long chapters to learn the way of designing better databases.
Scott Ambler is on the right path and his web-site shows the way it should be done (but he's still not there). |
| Fri 05 Dec | Simon Lucy | Ummm, the pattern is the data. That's the point of ORM, just the facts ma'am, oh and the constraints... |
| Sat 06 Dec | Matt Latourette | Although not a pattern book per se, Designing Quality Databases with IDEF1X Information Models is an excellent relational DB design book. Someone well-versed in pattern-based programming should be able to read the text and translate the ideas into patterns for your problem domain.
http://www.amazon.com/exec/obidos/tg/detail/-/0932633188/qid=1070731645/sr=1-1/ref=sr_1_1/002-0849587-1157654?v=glance&s=books |
| Sun 07 Dec | Phil | www.pragmatier.com
www.simpleorm.org
Get the products|code, generate some stuff and learn from there. |
|
| Assertions in C# | Fri 05 Dec | Fry |
| When do you use Debug.Assert in C#? Id particualrly like to hear Joels take on this. |
| Fri 05 Dec | Kev | I use an assert whenever I make an assumption that has any chance of being wrong. For example if I write a function that other developers will call, I use asserts to make sure the arguments aren't null. I also like to use them in switch statements in the 'default' case (debug.assert(false)). This is very useful when checking all values of an enum. If you add another enum then the assert will tell you right away that you need to add the case to the switch statement. |
| Fri 05 Dec | Joe | I wouldn't use Debug.Assert or Trace.Assert to check for null/invalid arguments: I'd explicity check the arguments and throw an ArgumentNullException or an ArgumentOutOfRangeException.
Otherwise use Debug.Assert liberally for almost any assumption (it's only included in debug builds). Use Trace.Assert for important assertions that you want to catch in a release build (VS enables tracing by default -use /d:TRACE if using the compiler from the command line) |
| Sat 06 Dec | Anon. Coward | Use both--assertions and exceptions. The problem with throwing an exception is some calling function might catch it and silently recover. Then you'd never know about your bug. But using an assertion guarantees you'll be made aware of the bug. |
| Sun 07 Dec | Fry | > Use both--assertions and exceptions.
This seem like a good idea. But the problem is when you create the ship version, the caller of your function might not handle the exception because it was never encountered in the debug version.
I've always thought assertions and exceptions contradict in some way. When should you use exceptions and when assertions? And when should they overlap? |
| Sun 07 Dec | Chris Nahr | Exceptions should be used to test conditions that an external client (where 'external' is relative to the current code unit) might get wrong. Typical case: supplying null references in parameters where none are allowed, or trying to open a nonexistent file.
Exceptions also specifically allow for the client to catch & handle them, which is why it's wrong to test the same condition with an assertion. That is, exceptions should also be used for conditions that the client might expect to fail and will be prepared to handle.
Assertions should be used when none of the above applies -- that is, for condition testing within a code unit (you won't handle failure anyway and you want maximum speed in release mode), or for testing conditions that cannot possibly fail except due to a fatal programming error.
Usually, assertions verify conditions that were already guarded by exceptions higher up the call tree, or during data initialization etc.
Short version: use exceptions for conditions that MIGHT fail, use assertions for conditions that CANNOT possibly fail, except due to catastrophic bugs.
In time-critical code, there's also the point that Debug.Assert will be removed in release mode so you save a little time compared to exceptions. But you should only use assertions to save time where it's really necessary. |
| Sun 07 Dec | Fry | Chris, can you give a concrete example of when to use Assertions?
If I am not mistaken, it would seem that you find assertions almost useless if you are already using the exception model. |
|
| Garbage Collection in VB6 | Thu 04 Dec | Aussie Chick |
| This might be a little off topic for this forum but I have just written my project code to parse a text file (40kb file).
The code getrs parsed into a little heirarchy of classes:
STYLE has many TYPEs
TYPE has many INPUTCONTROLs
many VARIABLEs
many FILTERs
VARIABLE has many FILTERs
The main body of my program has one style, it calls that style and initialises it with a text file (style parses the text file).
Dim fso As FileSystemObject
Dim fil As File
Dim fileName As String
Dim tS As TextStream
fileName = C:\Documents and Settings\Cassie Harley\Desktop\Reference Project\Harvard.rfm
Set fso = CreateObject(Scripting.FileSystemObject)
Set fil = fso.GetFile(fileName)
Set tS = fil.OpenAsTextStream(ForReading)
Set tStyle = New Style
tStyle.after_Initialise (tS.ReadAll)
tS.Close
Will the ts.close close all the child classes?
Or are they just left clogging up the memory?
I ask because it seems that the more I run the program, (run debug run debug...) the slower my computer gets.
Any advice?
Again sorry if this is off topic, please delete it if you think so. |
| Thu 04 Dec | Damian | Set all the objects to nothing when you are finished with them. |
| Thu 04 Dec | DJ | Also before you set them to nothing
use any close / clear / end / quit, etc. method to allow it to free up it's own resources. |
| Thu 04 Dec | Matthew | Aussie Chick,
I recommend http://peach.ease.lsoft.com/scripts/wa.exe?A0=visbas-l as an excellent VB list for this type of question.
Seeya |
| Thu 04 Dec | Matthew | Aussie Chick,
As a side issue, I would replace:
tStyle.after_Initialise (tS.ReadAll)
with:
Call tStyle.after_Initialise (tS.ReadAll)
tStyle.after_Initialise tS.ReadAll
Your way would be slightly slower with no benefit.
Seeya |
| Thu 04 Dec | Matthew | Aussie Chick,
For the above post:
Call tStyle.after_Initialise (tS.ReadAll)
tStyle.after_Initialise tS.ReadAll
should state:
Call tStyle.after_Initialise (tS.ReadAll)
OR
tStyle.after_Initialise tS.ReadAll
Seeya |
| Fri 05 Dec | Aussie Chick | Mathew, thanks for the link, I will check it out.
I made the changes top, and it cut the load time down from 30-40 seconds to 25-30seconds, which is better.
I am still trying to figure some ways to cut it down more, like only parsing the parts of the text file that are being used. |
Fri 05 Dec | Matthew | Aussie Chick,
I am still trying to figure some ways to cut it down more, like only parsing the parts of the text file that are being used.
From memory, the FSO is not the fastest way to go when dealing with files. You may get some speed improvement (though not sure how much) by moving back to the 'old' way of doing things using Open, Input etc...
Seeya |
| Fri 05 Dec | Sam Livingston-Gray | At the risk of stating the obvious, VB6 doesn't do garbage collection as such. It uses reference counting: setting a variable to refer to an object increments its reference count, releasing the variable decrements it. When the number of references to a particular object drops to zero, it's destroyed immediately, there and then.
Which Damian technically said, but it's good to be completely clear on this point. (= This is in contrast to garbage collection, in which you mark objects for disposal, but are never quite sure how long they're going to hang around in object limbo before they're destroyed. |
| Fri 05 Dec | Aussie Chick | I plan to dump FSO and use the 'old' way on advise from someone else.
However the only time the FSO is used is that single section of code, from them on it is just the string (or part there of) that is used.
That part of the code doesn't take much time at all (a split second) and is only ever run one single time.
I have knocked some more out by get rid of some dim statements.
ie
dim tF as filter
call addFilter(tF)
becomes:
call addFilter(new filter)
And am working on not having my arrays redim as much
ie
redim(16)
redim(32)
as opposed to redim for every new element. |
| Fri 05 Dec | Aussie Chick | Sam, I was reading an article about that earlier.
The article said that the referencecount is set to zero when the object is set = nothing, or goes out of focus.
I assumed this to mean if class A creates and instance of Class B, then when Class A is closed, Class B is automatically closed to?
Or should I have a terminate function on all my class to set every object to nothing? |
Fri 05 Dec | Sathyaish Chakravarthy | Hi,
Your speed issue is not concerned with reference counting. The slow speed is because of the use of FSO. But to answer your question,
I assumed this to mean if class A creates and instance of Class B, then when Class A is closed, Class B is automatically closed to?
VB *never* leaves a dangling pointer/reference. It calls Release (IUnknown) on its own. And you do not have to keep track of the number of AddRefs (Set Thingy = New Foo) too and match them with the Release(s), whether they are through an interface (Set Dog = New IAnmial) or through object instantiation (CreateObject('MyLib.TelephoneIndex').
By closing If you mean setting the object A to Nothing, then the answer is Yes, if an object of class B is contained in class A, the setting the object of A to Nothing automatically would destroy B. However, if you are refering to some Close method for class A that you've written, then you would know best what's inside the method definition for the Close method of class A.
To reduce the speed, it would serve you best to use either the VB intrinsic functions for file handing as already suggested, or even better to go for the API (CreateFile, OpenFile, i.e. file I/O API routines or file mapping, as you may choose). |
| Fri 05 Dec | Sathyaish Chakravarthy | I would like to add that as a matter of practice, it is best to explicitly set children to Nothing within the parent objects. Whether you do this in the Close method of class A or the Class_Terminate event is upto you. A live implementation comes from ADODB.Recordset as in closing a recordset sets its child Fields collection to Nothing too and you don't have to bother about the contained objects within the Recordset object when you say rs.Close. What remains then is only setting the rs to Nothing. |
| Fri 05 Dec | Dave Hallett | That's not quite it. If an object B of class B is a member variable of object A (of class A), then when A is set to Nothing (or goes out of scope), object B will also go out of scope and cease to exist, *as long as no other object holds a reference to it*. But if you had earlier passed a reference to B to some other object C that was still around, B will survive the death of A, otherwise you would not be happy.
The thing to watch out for in VB is circular references, where A holds a reference to B, and B holds a reference to A. GC systems can generally recognise this situation and throw the whole shebang out, but reference-counting languages like VB get stuck, and the symbiotic pair persist in memory as long as your process is running. In this situation you have to put something in to explicitly release the resource at an opportune moment. A Form Closing event is often a reasonable place, for example.
One thing I found useful in the past was to put debug messages in my creation routines and destruction events for the major classes, so that you can see what is really going on.
Disclaimer - I am no expert in any of this. Corrections and clarifications from the more learned may well follow! |
| Fri 05 Dec | Dave Hallett | Or, indeed, get in before I press the Post Message button!
*sigh* |
| Fri 05 Dec | Aussie Chick | Thanks guys.
That answers my garbage collection question.
I am still working on speeding up the loading.
I have it from 45sec down to 20-25secs.
>Your speed issue is not concerned with reference >counting. The slow speed is because of the use of FSO.
I understand FSO is slower, however I do not use it other then to initially read the file, then I shut it down. I have tested to see how much time this takes up and it is only a split second of the 20+ second load time, so it is not my main concern yet.
If anyone can recommend any good webpages on increasing efficiency in VB6.... |
| Fri 05 Dec | Sathyaish Chakravarthy | I recollect having seen some optimization tips on VB Helper. You can search the site at http://www.vbhelper.com, in the old site index which is in a left pane at the bottom of the home page.
Apart from that, you'll find some tips on this page and its links:
http://www.aivosto.com/vbtips/vbtips.html
Further, you can browse some VB sites such as mvps.org, vb-explorer and vbtt.com for some tips.
If FSO isn't the reason for the delay in execution, then you'll have to clean up some of your code, which is perhaps why you're asking.
Good Luck! |
| Fri 05 Dec | no name | http://www.mvps.org/vbnet/index.html |
| Fri 05 Dec | Eric Lippert | Two things:
1) To answer the original question, closing the text stream just closes the text stream. That doesn't have any effect on any other objects you might have in your program.
2) Note that the ReadAll method is somewhat inefficient for extremely large files. It's very fast for small files, but when they get up there, it gets slower and slower.
Why's that? Well, internally, the FSO uses the same code to handle reading files as it does reading standard streams -- but of course, you can determine the size of a file ahead of time. You _cannot_ determine the size of a standard stream ahead of time. Since the ReadAll method uses an algorithm that ignores the fact that the stream size can be known, it is less efficient than it could be -- in the large file case, it ends up doing a lot of unnecessary large block allocations. (It uses a double-when-full algorithm, which is pretty good, but it could be better.)
Though I long intended to, I never did get around to rewriting the underlying file stream code to take advantage of the fact that some streams are of known size. I apologize for the inconvenience.
I your program is slow because of that ReadAll, you might consider getting rid of it. Perhaps you can change your algorithm to parse a single line at a time?
If your program is slow for some other reason, well, there's not much I can do about that. :-)
How large a file are we talking about here? |
| Fri 05 Dec | Eric Lippert | I should read more carefully. You said it was a 40 KB file. ReadAll should handle that no problem. |
| Fri 05 Dec | Aussie Chick | woohoo.
I checked out those links, download a demo of a product callled 'VB Watch' from one of them.
It profiled my code and showed that just about all my wasted time was due to me wrapping a 'dictionary' object to hold some constants.
Have changed it to a switch-case and suddenly it loads in no-time.
Thanks for your input guys. |
| Sat 06 Dec | Eric Lippert | Can you describe briefly what you were doing to the dictionary object that made it run slowly?
Thanks! |
| Sat 06 Dec | Aussie Chick | Sure, (do you have a vested interest in it?)
I had wrapped the dictionary object. the main reason for wrapping it was so that I wouldn't have to test whether the item exists. (code below):
'********************************
'my wrapper
'********************************
Private tDic As Scripting.Dictionary
Private Sub Class_Initialize()
Set tDic = New Scripting.Dictionary
End Sub
Private Sub Class_Terminate()
Set tDic = Nothing
End Sub
Public Function add(key As String, value As String)
If (tDic.exists(key)) Then
tDic.item(key) = value
Else
tDic.add key, value
End If
End Function
'note:
'tdic.comparemode is not being encapuslated.
Public Function count() As Long
count = tDic.count
End Function
Public Function exists(key As String) As Boolean
exists = False
If tDic.exists(key) Then
exists = True
End If
End Function
Public Function item(key As String) As String
item = tDic.item(key)
End Function
Public Function items()
items = tDic.items
End Function
Public Function key(oldKey As String, newKey As String)
tDic.key(oldKey) = newKey
End Function
Public Function keys()
keys = tDic.keys
End Function
Public Function remove(key As String)
tDic.remove (key)
End Function
Public Function removeAll()
tDic.removeAll
End Function
'********************************
As for what I was doing using the wrapped dictionary object for, well in my program I allow the user to make changes to a text file, which effects the program (the program reads the text file at run-time). I had allowed some constants in this text file to make it easier (and less error-prone).
when the program encountered a possible constant it would check the wrapped dictionary object (see below)
'**********************************
'my constants.cls
'**********************************
Option Explicit
Private Constants As CalebS_Dictionary_dll.data_collection
Private Sub Class_Initialize()
Set Constants = New CalebS_Dictionary_dll.data_collection
Constants.Add 'LABELLEFT', '120'
Constants.Add 'LABELMIDLEFT', '2220'
Constants.Add 'LABELRLEFT', '3850'
Constants.Add 'LABELWIDTH_SM', '735'
Constants.Add 'LABELWIDTH_LG', '1215'
Constants.Add 'TEXTLEFT', '1320'
Constants.Add 'TEXTMIDLEFT', '2900'
Constants.Add 'TEXTRLEFT', '4465'
Constants.Add 'TEXTWIDTH_SM', '855'
Constants.Add 'TEXTWIDTH_MED', '2435'
Constants.Add 'TEXTWIDTH_LG', '4000'
Constants.Add 'TRUE', '1'
Constants.Add 'FALSE', '0'
End Sub
Public Function constant(constant_String As String) As Integer
constant = 0
constant_String = UCase(constant_String)
'remove any spaces.
Dim tC() As String
tC = Split(constant_String)
Dim ii As Integer
For ii = 0 To UBound(tC)
If tC(ii) <> ' ' And tC(ii) <> '' Then
constant_String = tC(ii)
End If
Next ii
If Constants.Exists(constant_String) Then
constant = Val(Constants.Item(constant_String))
ElseIf Val(constant_String) <> 0 Then
constant = Val(constant_String)
End If
End Function
'**********************************
The above has now all been replaced with the following to lop off 20seconds load time.
'**********************************
'my new constants module
'**********************************
Option Explicit
Public Function constant(constant_String As String) As Integer
constant = 0
'turn constant_string into uppercase, and remove any spaces
constant_String = UCase$(constant_String)
constant_String = Replace(constant_String, ' ', '')
Select Case constant_String
Case 'LABELLEFT':
constant = 120
Case 'LABELMIDLEFT':
constant = 2220
Case 'LABELRLEFT':
constant = '3850'
Case 'LABELWIDTH_SM':
constant = '735'
Case 'LABELWIDTH_LG':
constant = '1215'
Case 'TEXTLEFT':
constant = '1320'
Case 'TEXTMIDLEFT':
constant = '2900'
Case 'TEXTRLEFT':
constant = '4465'
Case 'TEXTWIDTH_SM':
constant = '855'
Case 'TEXTWIDTH_MED':
constant = '2435'
Case 'TEXTWIDTH_LG':
constant = '4000'
Case Else:
constant = Val(constant_String)
End Select
End Function
'**********************************
I am assuming that you have some interest in the dictionary object, how so? |
| Sat 06 Dec | no name | Eric Lippert is like the dude who wrote VB6!!!!! |
| Sat 06 Dec | Aussie Chick | really? well that explains the interest then.
...that is kind of funny. |
| Sun 07 Dec | Matthew | Aussie Chick,
If anyone can recommend any good webpages on increasing efficiency in VB6.... ,
http://peach.ease.lsoft.com/scripts/wa.exe?A0=visbas-l
;-)
Seeya |
Sun 07 Dec | Matthew | Aussie Chick,
The article said that the referencecount is set to zero when the object is set = nothing, or goes out of focus.
To start with, I assume you mean scope rather than focus.
Many misunderstandings with VB are caused to do with lack of clarity when using terms - particularly in the help files.
For example, the help file does not clearly differentiate between objects and object variables. This can lead to problems such as seen in http://shorterlink.com/?8QGD6V .
Looking at your statement above though, it should be rephrased as follows:
The referencecount of an object is reduced by one whenever the object variable pointing to the object is set = nothing, or goes out of scope (which implicitly sets it to nothing). When the reference count of an object is <= 0, the object will 'terminate' itself.
Pedantic - possibly. ;-)
I assumed this to mean if class A creates an instance of Class B, then when Class A is closed, Class B is automatically closed to?
If the instance of Class B has a reference count of 1 (ie there is only one object variable pointing to it, and that object variable is part of the Class A instance), then the above statement is true.
Or should I have a terminate function on all my class to set every object to nothing?
It isn't required. Some people will argue it is required, but that is almost certainly due to bugs in old DAO versions - and that was generally due to not calling Close rather than not setting the object variable to Nothing.
If you do ever put code in a Terminate event handler, make sure you use On Error Resume Next. Because if any code in there raises an error (very unlikely on Set obj = Nothing, but anyway) then your app will crash.
Seeya
Matthew |
|
| American programmers at Indian wages | Thu 04 Dec | bye |
| Prepare to see your salary get cut in half:
http://businessweek.com/smallbiz/content/dec2003/sb2003122_8887.htm |
| Thu 04 Dec | Vince | 'The result? 'We got flooded' with resumes, about 90 in total, many from highly qualified programmers having trouble finding work in the down economy, Jon says'
Hahaha. What a joke. If I had to bet my entire savings that this will fail, i'd do it. I'm sure he's really finding 'quality' workers for 40k a year. |
| Thu 04 Dec | bye | Yeah, it's probably just writing web pages or some crap. The media doesn't know any better, though, so they like to write inflammatory articles about it.
(and I like to post them) |
| Thu 04 Dec | Mr. Fancypants | Actually I think it is quite possible he found good programmers for $40k.
The real issue is that they almost certainly view it as a 'until something better comes along' job and will jump ship at the first possible chance. |
| Thu 04 Dec | Skagg | "Pay peanuts, get monkeys." |
| Thu 04 Dec | Mitch & Murray (from downtown) | 22 years ago I was learning my trade. I was the only wannabe code jockey in a particular plant's engineering department of one of the Big Three automakers in the USA. I was working on a project with a squad of guys from a now defunct computer company, who worked on site every day. Something like 20 of them arrived every day to work in this brand new computer room full of blue and white boxes in the middle of a automobile component plant in the town that made the movie 'Roger and Me' famous.
The head engineering guy (older white shirt blue tie type) wandered over to my desk one day (this is before the invention of the cube farm) and wondered what I saw in all this computer stuff. I replied that it was the wave of the future, and I thought it was a fascinating business to be in. He replied that it looked to him like these programmers were glorified draftsmen, and were both nothing special and easily replaced.
In retrospect, we were both right. |
| Thu 04 Dec | Beth | The article says that he hired at the lower rate for contract work and has since hired two of the programmers permanently and given them more typical salaries for a programming job in Boston.
I can see how it worked for one guy who needed a few programmers. I'd be surprised if the market would let everyone do it. |
| Thu 04 Dec | T. Norman | $40-$45K will attract programmers, but only unemployed programmers. If you can find some worthy ones out of the mass of unemployed applicants, it can work out great as long as you boost their salaries to market levels once you realize they are worth keeping. |
| Thu 04 Dec | Full name: | http://www.yourescrewed.com/ |
| Thu 04 Dec | Dennis Atkins | The competant programmers will not accept substandard wages. They are, even as we speak, changing careers. The only american programmers who want to work for indian wages are the ones who are absolutely no good. This is just common sense. Let's say that you told doctors that they would still have to have extensive training at great personal cost, but their wages are going to be cut in half. Most of them would find another line of work, assuming that wages in other industries remained level. Doctoring is difficult, stressful, work that demands high skills. High salaries are generally needed to attract people to be willing to put up with it all. Programming is the same way. If you have high salaries, you attract the most competant and skilled people. If you have low salaries, you will attract dumb people who are helpless and need to be told how to do every little thing.
Burger King, for example. They pay $6/hr. Do they attract highly skilled college graduates with advanced skills and inventing and bringing to market useful products by working 12-16 hrs a day? Of course not, they pay $6/hr. Get real.
The future of the US IT industry is inevitable -- historically unprecedented speed of collapse coupled with a rapid overtaking by foreign IT firms that will decimate and subjugate the firms foolish enough to relegate R&D and competitive advatage issues to the lowest outsourced bidder. This is all predictable issues of common sense and known properties of a free market, which INCLUDES labor. Labor (working folks) are also free to work under conditions they prefer. Competant folks will find jobs that satisfy them. Jobs in IT will not be those jobs. Thus, only incompetant people will be employed in US IT. This is already happening, hence the current 80% level. Used to be that only 50% were incompetant. Within 5 yrs, 99% will be incompetant and shareholders with worthless stock in bankrupt companies will rue the short-sighted decisions made by CEOs who cashed in their bonuses and moved to Bermuda. |
| Fri 05 Dec | jm | I'll second Dennis's observations. Even just reading JOS lately, I shudder that some of these people might be at a place I would work.
Programming is getting dumbed down with little recipe followers. |
| Fri 05 Dec | Michael Kale | Yes, there are many "little receipe followers" as you put it, but is that because the overall quality of programmers is going down? Or because there are simply *more* programmers, which naturally increases the number of both good and bad ones? Are you looking for the good ones or are you looking for the bad ones? |
| Fri 05 Dec | Michael Kale | Err, make that "recipe"... curse the JoelForum which doesn't let me cut and paste from above! ;-) |
| Fri 05 Dec | Matt Latourette | Well, 'recipe' is really just another word for 'algorithm.' If you're a good 'little recipe follower' that's a good start on the road to becoming a good programmer.
When I think back about my own comp. sci. education, I realize that it all started by being a recipe follower. As a kid, I'd sit at the C64 for hours and hours typing in source code from Compute's Gazette magazine so I could play whatever cool game they'd published that month. In the process, I learned how programs work in order to debug the inevitable typos and publishing errors. Eventually, this led to writing my own programs, reading the manuals so I could do more advanced things like program music with the SID chip, learning 6502/6510 assembly, reverse-engineering file formats with a hex editor for my favorite role-playing games so I could have uber-characters with lots of hit points and badass weaponry, etc. I learned an awful lot by being a recipe follower. |
| Fri 05 Dec | Fernanda Stickpot | USD 40K a year is more than I earn. According to the arguments above, I'm exposing my incompetence by admitting that, but what the heck.
Of course, it costs way more than USD 40K a year for the company to keep me on board, because they'll only take me on as an agency employee; headcount is Nemesis, Beelzebub, Armageddon to them. Headcount costs money.
Seems to me I'm therefore more competent than the finance department, but what would I know. |
| Fri 05 Dec | Noname | Hey, don't forget that before the dotcom boom (circa 1994) the median programmer made about $48K. And at that time there was a much higher percentage of competent programmers. The high salaries of the late 90s brought in loads of idiots who were chasing dollars but lacked the will or talent to become good programmers. Management was (and still is) largely incapable of separating the wheat from the chaff, and there was high demand, so most of the idiots were able to get jobs.
Sure, an individual company paying $45-$50K now is unlikely to attract good programmers because there are so many jobs within the industry that pay much more. But having the market average return to the low $50K levels might be a good thing. It would result in less offshoring, and the field would attract a higher percentage of those who are in it because they love doing it. Unfortunately, during the shakeout period the incompetents will tightly hold on to their jobs like a pit bull on an intruder's arm. |
| Fri 05 Dec | Noname | Fernanda,
Are you saying you earn less than $40K within the US for full-time work? That is less than the starting average for programmers straight out of college. If you are within the US, it's time to start polishing your resume. Continuing to make far below the market average will hurt your career in more ways than one. |
| Fri 05 Dec | Fernanda Stickpot | No, this is within the UK. I've been aware that my low wages have been hurting my career for a long time and have made considerable efforts to improve matters.
I did send résumés to Toronto in 2002, but I only had time to get 120 of them sent out before my trip, the timing of which was not wholly my decision. Of course you can't do a whole lot with only three years of Java, C, C++, VB, SQL and InstallShield, at least not in the market as it was then.
I live in a low-paying, 'oppressed masses' town where there are no other opportunities for programmers. Very few people in this town earn as much as I do. The alternative is to commute to London, as I did on my previous job, which would cost an additional USD 600.00 per month. I calculate that I would have to increase my salary by 50% just to break even, because I'd then be in the higher tax bracket.
I'm now hoping that I will pass my driving test (11 December) and increase my choice of location. I'm also taking an MSc (at my own expense), which may or may not glamourize my résumé, but at least I'm learning some cool stuff.
I say all this not so much to whinge (although that, too, of course), but to point out that I am well aware that my low wages will damage my career and that I am going to great lengths to improve matters. I wish I could believe that all my strenuous efforts will meet with certain reward, but I very much doubt that life is like that. I think that working hard is entirely within my control, but success isn't entirely within my control. |
| Fri 05 Dec | Mr Jack | Salaries in the UK are just plain lower than in the US. I'm really quite satisfied with my ~$45k; it's good money over here... of course I'd rather be on ~$120k like my co-worker sitting some six feet from me, but hey.
I could, of course, add about 50% to my salary by going contract but I rather like my current lifestyle. |
| Fri 05 Dec | Fernanda Stickpot | To each his own, Mr Jack. I think people really do need varying amounts of money. Speaking from a personal point of view, my salary would be enough to pay for the day-to-day expenses of a modest lifestyle provided I had no unusual expenses (such as repairs, etc) and provided I could accept the idea of having no savings of any kind, and didn't have an MSc to pay for, and so on. In fact, if I lived like that, I might even have a bit left over for entertainments.
I do want a bit more security than that, however, so I really want better money.
(Not suggesting that your lifestyle is as I describe above, Mr Jack; I make no presumptions of that kind. Like I said, I believe that people genuinely need varying amounts of money to live on.) |
| Fri 05 Dec | Steve Jones (UK) | I heard on the BBC news that a lot of UK call centre jobs are being exported to India.
There it is really cool to work in a call centre. They only take university graduates and pay them about £1,200 per year (about $2,000 US). This is more than a Doctor or an engineer gets paid over there, so there is a lot of competition for these jobs. |
| Fri 05 Dec | Chi Lambda | I'm an American that's been working in Israel for the past 6 years -- the last 3 as a web-developer. My salary is about 20% higher than the average Israeli wage, but in dollars I'm making about $22,000/year.
What's more, 30% of my salary is going to taxes AND the price of goods in Israel is higher than in the USA. I'm making less and paying more.
I'm moving back the USA next year. If I can get a similar job there at about $40,000/year I will be sooooooooo happy.
It's all a matter of perspective. |
| Fri 05 Dec | Martin Beckett | I'm enjoying being poor.
I left a $60K consultancy job for a $25K job at a startup,
my take home pay halved.
I work from home - so save 1hour each way commuting and I don't need a car.
I can work when I want, not work if I'm not being productive that day.
The new company values what I do instead of being only interested in how much of my work is billable.
I get to produce the cheapest / best solution instead of the one which allow us to bill for the most follow up work.
Life style is about the same as being a grad student again.
And in a couple of years I can jump back on the gravy train having been in a senior position in a small company. ( or retire if the share options work out ;- )
For reference in the: UK $30K is graduate starting salary, $45K is higher ( 40% ) tax bracket. |
| Fri 05 Dec | Martin Beckett | Sorry forgot to say - this is in the UK |
| Fri 05 Dec | Ian sanders | When Indian companies start writing whole software suites all on their own, when the first Indian Bill Gates arrives, that is when we will be in trouble. For the record, I have worked with these guys and they aren't 'little recipe followers', India has a huge population and a highly effective education system. There is lots of competition for this kind of work. The people who get it are often highly skilled, capable and extremely good communicators. That last bit should make most western developers very scared indeed. They also have the incentive of putting small minded racist jobsworths out of their $120,000 a year jobs.
|
| Fri 05 Dec | Ian sanders | There is another aspect to the UK argument. Sure it takes a long time for a programmer here to reach the $40K mark. Is the US flooded with UK programmers ? No. Is US programming work outsourced to the UK ? No. Is the standard of software development in the UK worse than the US ? Don't make me laugh - we invented it. Remember Turing, Enigma, Leo ?
Outsourcing is of limited benefit, useful for filling in gaps in load. It is more threatening to the use of contractors than employed programmers. |
| Fri 05 Dec | Pakter | Well, last year I probably earned less than $40K, but now that Euro is $1.20 I suppose that I earn more.
Anyway, this is much more than I spend. |
| Fri 05 Dec | $$$ | Programmers (me include) have an exagerated view of their self importance. I have a B.S. in Computer Science and have been doing this for 17 years now. I know what I am doing, I'm good at it and I make good money.
But with a wife and 4 kids, if I was to loose my job I would take a job at $45k. I have responsibilities. It would be tough and I would still look for more but I have to work.
Now if the salaries reverted back to their pre dotcom levels I would be in a tight situation. We've grown to love the large house on a lake with a pool. Don't want to give that up so I need high salaries.
The cost of living that the life style we require is what drives the need for the high salaries. Not the fact that we are just so damn good.
I had been in this business for 10 years before the dot com boom and I was working at $48k. Did that make me a bad programmer? I think not.
We made this situation now we have to live with it or come up with an alternativer that doesn't affect our life styles. |
| Fri 05 Dec | Fernanda Stickpot | 'The cost of living that the life style we require is what drives the need for the high salaries. Not the fact that we are just so damn good.'
That's right, employers will pay the smallest amount that workers will consent to live on.
If a majority of us end up consenting to lower wages - which will happen if the choice is between low wages and no wages - then lower wages will be imposed on us all.
I live very frugally but I don't kid myself that what I am earning is going to support me into the future. I don't think that that's because of my greed and extravagance, either. |
| Fri 05 Dec | GenX'er | You can't live on 40K in New York - Period..... |
| Fri 05 Dec | | I make less than US 40K. In the US north east. I'm also just out of college. |
| Fri 05 Dec | IJ | In Latvia i earn 12,000$ per year and i am happy with that |
| Fri 05 Dec | fw | I don't know, I'm in a lucky position right now, no debts, not big overheads.
I'd probably take a job for 40k, depending on the conditions. If I could for example work for home pretty much when I liked, if I was interested in the area and pretty much got a free hand at design as well as coding, as well as support, if they used real version tracking, nightly builds, bug tracking systems etc...
It's about perks, the freedom, when everything is setup right, you have good version control, a good bug tracking system, working with reasonable people, as little talking as possible, email as the preferred communication, and most meetings standing up so they wouldn't be dragged on by mindless idiots who can't do their jobs.
Then I'd think about it. |
| Fri 05 Dec | Joe Grossberg | 'You can't live on 40K in New York - Period.....'
Yeah, you can. Millions do it. You just can't live *well* on 40k.
You're going to have an apartment that is one of more of the following:
* small
* old
* outside the most desirable areas in Manhattan
* shared with roommates
It's a matter of priorities. |
| Fri 05 Dec | GenX'er | Joe Grossberg is a moron!!!!!!
Flame away!!!!!!!!!
What if you are buying at house at current prices and want to have a family??????? |
| Fri 05 Dec | Troy McClure |
Joe,
Not all of us are single losers like yourself. Some of us have responsibilities like families, mortgages, and the like. It's not so easy to pick up and leave, but of course, you don't have that problem. BTW, it's not just Mahattan that's expensive, try everywhere within 100 miles of NYC. |
| Fri 05 Dec | Han Solo | 'Flooded with 90 resumes'
Flooded?? 90??
Any ad we place gets at least 150 resumes in response -- most more like 300. 90 hardly seems high considering he advertised in the boston paper. |
| Fri 05 Dec | Joe Grossberg | A 'moron'? 'Single loser'?
I think you've already done enough flaming.
If you 'are buying at house at current prices and want to have a family', but are making just $40k, then don't live in NYC. Duh.
You can't have your cake and eat it too. So, boo hoo.
And yes, I know how expensive the NY area is. I was born in Manhattan and grew up five miles away.
Joe
http://www.joegrossberg.com |
| Fri 05 Dec | GenX'er | If you 'are buying at house at current prices and want to have a family', but are making just $40k, then don't live in NYC. Duh.
You are a moron - we're not even talking about NYC. I live on Long Island, grew up here, have a lot of family here and most of my friends are here. I have as much or more education than most of my friends. But now I have to not live here anymore, DUH?
If a carpenter (plumber, electrician) can make $100,000+ (which someone can learn in BOCES in high school) then a programmer should be able to make a lot more than $40,000 (in NY).
Too many 'wanna be' so called 'programmers' have flooded this market!!!!!!!!!! People who don't program at home, people who aren't really very interested in the field. People who got into the field just because it was good money.
They will be elimated by attrition and be forced to move to another career. |
| Fri 05 Dec | Joe Grossberg | Yes, a good programmer in a major metro area should be able to pull down more than $40k in salary.
But if a programmer is willing to settle for just that $40k and wants to live in New York, then he's got to make some sacrifices. It's not impossible; just difficult.
So you grew up in an area and are now being priced out of it? That's life.
And save the personal attacks and mega-punctuation for Slashdot!!!!!!!!!
Joe
http://www.joegrossberg.com |
| Fri 05 Dec | AreWeDeadYet | 'The competent programmers will not accept substandard wages'
Yes they will. As has been pointed out:
1 - Poorly paid beats unemployed.
2 - Someone is always worse off than you.
3 - Developers are too elitist to form a guild so they will never have protection
Next we will see companies telling their workers to take a 40-60% reduction in wages. If you quit, oh well, they find the person in dire need. Enough churn and the wages are driven down.
I live in a rural area and in the 80s and early 90s all the IT jobs paid within 2k of each other. Meeting with some of the companies in the area they never said collusion, but they indicated a price war would hurt everyone. Look for a VP to see a President's position in their future by cutting salaries by 40%. |
| Fri 05 Dec | Troy McClure | Has anyone heard of supply and demand ? As it is, here in the US, fewer college folks are majoring in CS, and fewer people going into the field because of the so-called shortages of IT jobs. That's great news. Combine the smaller number of folks coming into the market with the baby-boomer programmers dying or retiring. Sounds like a great future. There is always going to be a need for developers here in the States. Some work can be shipped offshore, but many companies are just now starting to realize that the so-called savings achieved by going off-shore results in higher costs though re-work and poor specifications. The future looks bright. Companies like pretending that the job market is bad, so they can cut salaries. Eventually, it's going to catch up with them. |
| Fri 05 Dec | Vince | Forgive me, this post may sound slightly "bella"ish. All you losers need to stop telling yourself there are plenty of good programmers for 40k a year. There may be a few, but they're few and far between (and probably consist of bright but inexperienced people, or spineless people who don't realize they could be making more). My company is having trouble finding a competant programmer at 60-80k, much less 40k. We see tons of "qualified resumes", and 90% can't even answer basic interview questions. Just like the best programmers don't make 10x as much as the worst, 40k programmers are probably more then 3 times as unpdroductive compared to an 80k a year programmer. This guy is just looking for a get rich quick scheme, and it ain't gonna work. |
| Fri 05 Dec | Joe Grossberg | Thank you, Vince.
'You get what you pay for', as the saying goes.
If an experienced programmer in New York City was willing to work for $40k, I'd have some serious questions as to why that was the best he could do.
Joe
http://www.joegrossberg.com |
| Fri 05 Dec | GenX'er | Hey Joe - didn't you just contradict yourself????
Re-read your previous posts in this thread you tool!!!! |
| Fri 05 Dec | sam | I don't know or care what all of this yelling is about, but anyway...
I'm not the best, but I'm certainly not the worst. I have two years of Java (some servlets and client side) experience, PHP, Perl, general web development, and Unix (Linux, IRIX, *BSD) system administration. I'm at a very small company in the midwest and make just under $40k.
I own a nice house, a new car, and am pretty darn happy.
I guess I'm also unskilled and should not be doing software development! |
| Fri 05 Dec | GenX'er | 'I own a nice house, a new car, and am pretty darn happy.'
Sam I am proud of you!
The point I was making is that you would NOT have a new house or a new car making 40K in New York.
You might be able to rent a cheesy apartment for that - renting is around $ 1,000.00 / month average for a 1 Bedroom on LI. |
| Fri 05 Dec | sam | Oh, I don't disagree with you there! I have friends in Westchester. They spent five times as much on a house the size of mine with no yard right next to a freeway.
I'm just wondering if it's true that I am somehow incompetent. Java developers like me are a dime a dozen. If someone was looking for people like me and paying $65k, I would be interested. However, here in the midwest, they are not. |
| Fri 05 Dec | Joe Grossberg | No I didn't contradict myself.
$40k gets you a crappy programmer. Crappy programmers can afford to live in NYC.
Joe
http://www.joegrossberg.com
P.S. Thanks for calling me a 'tool' and giving the extra exclamation points!!!!!!!!! |
| Fri 05 Dec | Me | At the end of the article:
'HERE AND NOW. In the interim, Jon has promoted two of the programmers to full-time employees, at standard American programming salaries, rather than risk losing them to the marketplace. And he is convinced that having people working onsite gives him control over quality and timing that he wouldn't have enjoyed if he had subcontracted overseas. '
What a stupid article imho. What is the guy saying? And does he really think he got really good programmers at that salary? And then he blows the whole reason for doing what he did by paying them what the market demanded.
Me, I'd have hired a really good project manager. A really good programmer and then outsourced the rest in the U.S. or Russia or Brazil or the Bahamas. |
| Fri 05 Dec | Jethro | The article states that the average Indian programmer gets $40K USD a year. I don't believe that as my company just hired a bunch of Indians for under $20K a year. I suppose it depends on their level of experience. $40K a year is actually a decent salary in much of the U.S. for a programmer with less than 5 years of experience. Does anyone have some more accurate data on actual Indian programmer salaries at different levels of experience? |
| Fri 05 Dec | www.marktaw.com | Around $20k if you work at a local comany to about $40k if you work for one of the multinationals that are outsourcing there.
$20k is roughly equivelant to $80k here, so $40k would be equivelant to $160k.
These are numbers I got from my friend, so they could differ from other people's concensus. These numbers seem to jibe with dotcom era salaries in the US. |
| Fri 05 Dec | Vince | We have two indian girls at our company and I think one is making around 55k, another around 70k. If there as good as the equivelant 'american' programmer that makes 55 - 70k, why wouldn't we pay them that, and why wouldn't they demand that.
Sam- I don't know what cost of living is out in the midwest. My guess is your working for a company that doesn't do development. If you really do produce good results that the company can sell to customers or clients, i'd imagine you could ask for a raise. Now, I think a lot of people making 40k a year are perfectly content with their slow-paced, internal programming position where they arn't pushed. If your a smart, experienced Java or C# orC++ programmer working for a consulting or service company, you can bet that they're billing you out at 100-200, even more an hour. You can be making more then 40k. |
| Fri 05 Dec | T. Norman | The Indian programmer would have beem billed at $40K to the American firm after going thru the intermediary; the Indian programmer doesn't get a US$40K salary in India. |
| Fri 05 Dec | echidna | > Next we will see companies telling their workers to take a 40-60% reduction in wages.
We actually had this in Australia. When Infosys arrived, Deloittes, who had been doing Telstra work, gave their developers an ultimatum that they must substantial pay cuts. I think it was around 50 percent.
Get this though: the pay cuts were only for the developers. The Deloitte managers kept their pay levels. |
| Fri 05 Dec | T. Norman | >'I'm at a very small company in the midwest and make just under $40k.'
Is that typical in the city or county where you work? If it is significantly below average, your low salary will hinder your chances whenever you look for another job. Either they'll underpay you, or they'll believe you earn a below-average salary because you aren't good, and thus won't hire you. If you apply for a $75K job, they probably won't believe a $40K person is up to the level of ability they are looking for.
(Note that $40K is not an absolute number; it is all relative to the job market where you work. Make $40K in Brazil and you'd probably be considered a demigod.)
Even if you like the job and are happy with the salary, unless you are guaranteed lifelong employment where you are, lingering at a below-market salary for years can seriously damage your employment opportunities.
If you are indeed below average, you can at least start to make a case with your management why you should be paid much more.
However, if what you make is typical for your area, one day we may observe a counter-trend to offshoring -- companies relocating their IT departments to the midwest and other low-cost areas within the US. And it would probably actually be cheaper than India in many ways, given that they would save not only on labor costs but also on office real estate and infrastructure (which are generally more expensive in India than the US) and time zone issues would be minor. |
| Fri 05 Dec | Bella | > great developers will *always* be in demand.
Yes, software development is here to stay. But your salary will be HALVED soon enough. Fast food is here to stay as well. You want fries with that, future boy ?
Bella
Friday, March 22, 2002 |
| Fri 05 Dec | Bella | > If a carpenter (plumber, electrician) can make $100,000+ (which someone can learn in BOCES in high school) then a programmer should be able to make a lot more than $40,000 (in NY).
I disagree? Everyone wants a desk job. No one wants to bust their butt physically. Supply/Demand. Sitting at a desk all day sure beats sweating and breaking your back. I'd take $40k as a programmer before I took $100k as a carpenter. |
| Fri 05 Dec | Bella | I think paying $40k for a programmer is VERY feasable. There is always a 25-28 year old who has low overhead, lives with roommates, and just cares about beer money and rent. And will work for $40k. Both parties needs are met.,
You can be very clear and honest at the outset. This is a $40k job. It will stay that way. When it no longer meets your needs, we will part ways.
Once they get older and need more money, b/c of their house/wives/kids, they can go find work elsewhere. No hard feelings on either side, just like agreed upon at the outset. |
| Fri 05 Dec | Dennis Forbes | 'Sitting at a desk all day sure beats sweating and breaking your back. '
It does? I, like probably a lot of my peers, _dream_ of the idea of doing one of the trades because after a few years in the software development trade it looks like a pretty easy job. I suspect that the average plumber/carpeter/electrician will have a much longer lifespan as well. |
| Fri 05 Dec | analyst | > Sitting at a desk all day sure beats sweating and breaking your back.
What? Carpentry is a great job. Every day you see the results of your work, and so do your your colleagues, bosses and customers. If you're good at your job, you're respected for it.
Sitting at a desk - which implies staff job in big company - is one of the worst jobs in modern society. (This is different from analysis or development conducted with reasonably independence, which I wouldn't describe as a 'desk job.') |
| Sat 06 Dec | Full name: | Bella, I have to ask.... Do you regret having a family? This is a recurring theme in your posts. Did you bust your butt for your family and wish you didn't have to? |
| Sat 06 Dec | Bella | > I suspect that the average plumber/carpeter/electrician will have a much longer lifespan as well.
Do a little research on disability numbers of these fields. These people develop all sorts of physical ailments.
> Bella, I have to ask.... Do you regret having a family?
I am not married or have a family. But over the past year or 2, I have started to believe that it is a thankless 'slavery to your paycheck' figurative death-sentence. I hope I am wrong. But it just goes to show, You MUST love what you do for a living, or your personal life will be filled with resentment, b/c you view 10 hours a day as a sacrifice for others. I see it all around me. |
| Sat 06 Dec | Stephen Jones | The $40K was what they would be billed. The programmer would be lucky to receive $15K.
Now, they didn't think of the third idea which was to relocate the company to India and actually be able to offer say $30K to compensate for the additional infrastructure, to the Indian programmers. |
| Sat 06 Dec | Vince | bella: Are you saying a 40k a year developer is only half as productive as an 80k programmer? If you were a manager, do you think its better to have 8 80k a year developers, or 16 40k a year developers. Maybe you really sucked as a developer, I don't know. Maybe you never really had a lot of competition. But your not giving up any facts to back up any of this. I've always had respect for your "down to earth views", but your last few posts just seem like a tired, last ditch effort to inject dispair into people who succeeded where you failed. |
| Sat 06 Dec | www.marktaw.com | > over the past year or 2, I have started to believe that it is a thankless 'slavery to your paycheck' figurative death-sentence. I hope I am wrong. <
I agree. I call it 'The Working Class Curse.' The desire to escape a sort of slavery through Get Rich Quick schemes. To take control of your own destiny, so to speak. The hardest thing to realize is that taking control of your own destiny first means controlling yourself, and not discovering some magical 'no money down' formula. |
| Sat 06 Dec | it_ranter | 'As the head of a startup that had been going for less than a year, he wasn't at all certain he should take the risk of having essential work done at a far-off location by people he didn't know, and with whom he could communicate only via e-mail and phone.'
So let me get this straight. This entrepreneur didn't feel comfortable with shipping everything he was actually doing overseas, well out of his reach?
Well, what the Hell was he going to do in the meantime? Eat steak?
There's nothing worse than so-called small businessmen who start companies and believe they can make a profit just by farming out labor. No actual involvement necessary; just hand-waving and :poof:, product. Time to sell!
It seems fairly logical to me that if you're a small business owner, where your goal is to provide a technological solution to a business problem, then you really can't just expect your company to run itself overseas without much intervention. If that's what American businessowners are trending towards, then expect to see software entrepreneurship head out to Bangalore in a few years, too.
In short: what does this guy want? A cookie? You're _supposed_ to run your own business! |
| Sat 06 Dec | Dennis Atkins | Good point. People forget that it's hard enough to run a successful business with the employees in the room. Running a business where your core products are designed in some far away place by people you've never met and who speak a different language has simply *got* to be more difficult than running a business with the designers where you can talk to them and interact with you. Also, any local operation will check the references of their employees and execute nondisclosure agreements. This is not possible when you don't even know the names of the people and pointless anyway if enforcing breeches would involve foreign courts. |
| Sun 07 Dec | Bella | Vince,
No idea what you're talking about. I never made any correlation b/w programmer skill and value vs. salary.
My only point was that I feel one can easily have a staff of $40k programmers. Condition: They would need to be young (mid/late 20's), and you should not expect to retain them for the long haul. But, certainly, there are business cases where this type of cheaper stff is a worthwhile trade-off. In other business cases, it won't make sense, and would be shortsighted. |
| Sun 07 Dec | Vince | well, all I'm saying is, its possible for a competing business to pay half as many programmers twice as much and get 3 times the productivity. If this becomes a well known fact, I don't see why IT will take this massive hit. |
| Sun 07 Dec | Bella | Not if you're the other half ! |
|
| Old FAT Microsoft | Thu 04 Dec | hoser |
| Ripped from the headlines of slashdot: http://www.microsoft.com/mscorp/ip/tech/fat.asp
So Microsoft is going to charge people who use the FAT file system in products. Someone is thinking that Sony, Canon, etc. owe them for using FAT in cameras, etc. And since the camera doesnt run WinCE, lets start charging them.
The problem is, all those patents make claims against common long/short file name space conventions. You know, Program Files vs PROGRAM~ or some such thing. I briefly looked at the claims, and it seems that all claims are related to file/directory naming, etc. Nothing about the file system linked list structure apart from file name spaces (that I noticed anyhow).
Is is possible that FAT as used in these devices also infringes on the conventions and methods used in these claims? Seems unlikely, when I mount my Canon ELFs flash, I see pic001.jpg, pic002.jpg, ... Nothing special there.
Any chance Microsoft will generate revenue off this one?
FAT File System–Related Patents
The FAT file system licensing program includes rights to a number of U.S. Patents, including:
* U.S. Patent #5,579,517
* U.S. Patent #5,745,902
* U.S. Patent #5,758,352
* U.S. Patent #6,286,013
(I wouldnt pick a fight with Sony on patents, which generates >1K patents per year, only second to IBM with something over 2K.) |
| Fri 05 Dec | FireMode | I wonder if they will also charge other commercial OS vendors for their FAT support (MacOS, commercial UNIXes, etc...).
By the way, how will they get royalties from the Linux FAT implementation (and other opensource variants)? |
| Fri 05 Dec | Martin Beckett | This is the fundamental difference between patents and copyright.
I can reverse engineer any file format so long as I am not using any confidential inside info - this how compaq produced the PC BIOS.
You cannot ( currently in europe ) copyright the external interface , in fact you are explicitly permitted to reverse engineer to produce an interoperable part.
But in doing this I cannot use any invention that is patented - this is the danger of software patents you can patent a necessary step of a standard format and lock people out of it.
I can produce a FAT driver if I either do not use long file names or choose a different alogrithm to generate them.
The problem would be if the patent for the algorithm was the only way of producing a valid format. You would have to get the patent overturned. There are exception in EU patents to prohibit this.
For example, you could have patented the idea of having a special character to separate the name and domain in an email address but you couldn't patent an algorithm which said 'insert a @' if this was the only valid character allowed by the standard. |
| Fri 05 Dec | James Ussher-Smith | How do we know that the likes of Sony aren't paying license fees to Microsoft already? |
| Fri 05 Dec | FireMode | quote from the http://www.microsoft.com/mscorp/ip/tech/fat.asp :
(There is) 'A license for removable solid state media manufacturers to preformat the media, such as compact flash memory cards, to the Microsoft FAT file system format, and to preload data onto such preformatted media using the Microsoft FAT file system format.'
Why not extending this to floppies? They can make big money from DOS preformatted-floppies manufacturers also.
I will patent this idea so Redmond guys will have to pay me a $200,000 license fee for every agreement they sign with floppies makers :-) |
| Sun 07 Dec | www.marktaw.com | People still make floppies? I though, like Twinkies, they stopped making them years ago and we're living off of the manufacturing stockpile. |
|
| The knife and the axe | Thu 04 Dec | Eric Debois |
| The knife and the axe are considered to be the most important inventions in human history with reagards to how it developed into what we are today. (By historians anyway)
This is an interesting thing to debate in it self, but id like to know what you think are the most important inventions in software?
My gut response is the compiler and the texteditor. Do you agree? |
| Thu 04 Dec | Chuck | The pointer |
| Thu 04 Dec | MSHack | It depends on what you mean by important and to whom. For example, it is unlikely we would have spreadsheets without a compiller, so are compilers more important? One step back then, without machine language you cannot have compilers. So is machine language the greatest?
Few people, relative the number using computers use compilers or text editors. But like the axe and the knife, without them other things are not possible.
I think we are still too early in the process to know yet. Ask me again in 240,000 years. Hopefully, I will be around to answer. |
| Thu 04 Dec | Dennis Forbes | I'd say that the metal extraction and smelting process was the most important invention, and the creation of the knife and the axe was a natural, and obvious, invention from it. |
| Thu 04 Dec | John C. | Hmmm... knives and axes certainly predate the use of metal... |
| Thu 04 Dec | Ian sanders | Lara, of course. |
| Thu 04 Dec | Kevin | I still think digital watches are a pretty neat idea. |
| Thu 04 Dec | Lou | CVS |
| Thu 04 Dec | tapiwa | Any nation that invented the equivalent today would be attacked for developing weapons of mass destruction. |
| Thu 04 Dec | Andy in Austin | A knife and an axe are basically the same thing.
I would much rather have a knife and some fire.
For some reason, this is very instinctive to young boys, but their mothers never seem to understand.
As far as computer are concerned, a lot of people marvel at all the things they can do. This demonstrates a complete lack of understanding. They only do one thing which is move bits around.
The true marvel is our ability to transpose so many physical problems into patterns of bits with some relation to the problem at hand, move them around, and then come up with an answer that is actually relevant.
But hey, if the only tool you have is a hammer, every problem looks like a nail. |
| Thu 04 Dec | sgf | The stack. |
| Thu 04 Dec | ice | The GUI. |
| Thu 04 Dec | T.S. | The paperclip. |
| Thu 04 Dec | tapiwa | SimCity classic.
they should have stopped inventing after that. |
| Thu 04 Dec | Mongo | Formal logic, a la Frege, Russell, et. al.
Seriously. |
| Thu 04 Dec | no name | ROM |
| Thu 04 Dec | Charles Babbage | The 1 and the O. |
| Thu 04 Dec | Name withheld out of cowardice |
The monitor or terminal. There is no way I would use one if I had to punch everything into paper cards. |
| Thu 04 Dec | Ian sanders | Stack. GUI. Pancakes. |
| Thu 04 Dec | Ian sanders | * The quad expresso & midnight oil. |
| Thu 04 Dec | tapiwa | CharlesB. I think the 0 is more important.
We take it for granted now, but life as we know it would not exist if we had not grasped 'zero'.
http://www-gap.dcs.st-and.ac.uk/~history/HistTopics/Zero.html |
| Thu 04 Dec | Bruce Perry | The backspace key. |
| Thu 04 Dec | tapiwa | undelete |
| Thu 04 Dec | Ricardo Antunes da Costa | Solitaire |
| Thu 04 Dec | Politically Correct | Mini skirt |
| Thu 04 Dec | Sgt. Sausage | My vote goes for the OS. Imagine if you had to build all that functionality you get "for free" with the OS -- imagine if you had to build it yourself. I don't know how the old-timers did it before the OS. |
| Thu 04 Dec | diddley-doodley | It is by caffeine alone I set my mind in motion,
It is by the beans of Java that thoughts acquire speed,
The hands acquire shaking, the shaking becomes a warning,
It is by caffeine alone I set my mind in motion.
Coffee has got to be the best invention in the history of software! |
| Thu 04 Dec | pdq | After 0 and 1, it has to be the bootstrap. The OS is a logical extension.
(not quite old enough to have toggled in bootstrap machine code) |
| Thu 04 Dec | Stuck in 1998 | Stock options! |
| Thu 04 Dec | Andrew Cherry | The virtual machine/framework. |
| Thu 04 Dec | Jack of All | Wasteland (old late 80s x86 game and the reason I'm a programmer) |
| Thu 04 Dec | Code Monkey | The calculator -- because it showed what was possible |
| Thu 04 Dec | Charles Babbage | I take it back - the miniskirt's definitely more important than 1 and O. |
| Fri 05 Dec | www.marktaw.com | I'm going to have to take a 'importance to society' view on this and say:
1. The Internet
Computers are great and can do amazing things, but until the internet, most of those things were 'what I could do myself, only faster' like spreadsheets, games, and word processing. Now the computer has become an important information gathering & communication tool, the implication of which we're still grapplin with. This is 'Guttenberg printing press' big, and without the printing press, the Protestant Revolution (Luther's ideas were very popular & widely published) and the American Revolution probably wouldn't have happened, or at least not on the scale they did.
2. PGP
Without computers, I don't think 'in the clear secure communications' would really be possible. With PGP you can share not only the encrypted message publicly, but the key you use to encrypt it as well. And that this level of encryption & authentication is available to just about every human on the planet is pretty amazing. I'm sure there's a supercomputer out there somewhere that can decrypt 'on the fly' (why is it everyone talks about your home PC and dictionary attacks when they say how secure these things are?) PGP, but I'm also sure that there's encryption based on supercomputer capabilities to counter that. What's important is that I can send love letters to my mistress without my wife sniffing the network stream and decoding them.
As far a important inventions in history, I'd put Money and The Pushup Bra fairly high on my list. |
| Fri 05 Dec | www.marktaw.com | I must be tired... lot of type-o's in there. |
| Fri 05 Dec | Mike Swieton | Of course, Mark, your wife can do a search on your name and find you posting about your mistress on Joel's :)
As for the most important single invention relating to computing, that is indeed the tough one.
Coffee 8-}
On the serious side, I think I'll have to nominate Pong. I think little has done more to drive the development of consumer computing technology than video games, and Pong is the father of all those games.
I think that the development of the machine is important, but I also think that video games were a newer idea than computing machines, which have been around for hundreds of years.
Almost anythning could be argued here. I'm not sure if I like that or not. |
| Fri 05 Dec | Jack | The pixel |
| Fri 05 Dec | give me a break will ya? | City Desk. |
| Fri 05 Dec | Utopia is a place where no moron exists | I concure with politically correct. That's the biggest invention of all. Something to die and fight for. |
| Sat 06 Dec | MRC | 1. unix & C language
2. Macintosh Computer : starting and setting the race for bringing computers to the reach of common people.
3. Internet |
| Sat 06 Dec | vi guy | The Great VI Editor |
| Sat 06 Dec | Dashiell Dunn | Assembly language. MOV over, miniskirts. |
| Sat 06 Dec | Social Engineering trumps all Encryption | 'I can send love letters to my mistress without my wife sniffing the network stream and decoding them.'
All the encryption in the world won't stop someone from then posting about this along with his domain name that leads to his address on King's Highway and his wife's phone number... |
| Sun 07 Dec | www.marktaw.com | Congradulations, you were able to look up publicly available information. I would be threatened if I actually had a wife, or a mistress, but I don't. I bet you didn't sneak a peek at the code on my website where I also list the latitude and longitude of this address.
Here's another use for Public Key Encryption that none of you geniuses seems to have been able to figure out. e-Commerce.
You wouldn't be able to buy Joel's Book of the Month from Amazon if SSL didn't exist. The fact that you can establish a trusted relationship between two computers and communicate that way, while exchanging all of your information in the clear is the foundation of all secure transactions on the web.
This allows you to type in your password without someone sniffing the traffic, or to check your bank account from your home computer.
And it allows you to send an e-mail to your co-worker that your boss can't read. |
|
| VBScript Export Add-in for VB6? | Sat 06 Dec | Wayne |
| Does anyone know where I can find something like this?
I dont imagine that it would be too much of a feat to accomplish, you would just have to find and replace any non-vbscript compatible language features like variable typing and other such things.
Right now I use VB6 as my vbscript editor, but to get proper intelli-sense, I have to use typing. Then, I have to manually remove the types from the variables I was working on after copying the code to the .vbs file.
I know I could do this in a few hours, but Im busy, so Id like to try to find something first. If I can t find something, I will create the add-in myself and post it here if anyone expresses interest.
Thanks. |
| Sat 06 Dec | no name | Why not use Visual Interdev? |
| Sat 06 Dec | Wayne | No offense, but I think Visual Interdev is one annoying program to use and it's intellisense features are lacking.
I really like the VB6 IDE and I've also got a bunch of really useful add-ins for it that I don't have for other IDE's like Primalscript, etc. |
| Sat 06 Dec | Sathyaish Chakravarthy | >No offense, but I think Visual Interdev is one annoying program to use and it's intellisense features are lacking.
Same here, dude! |
| Sat 06 Dec | Sathyaish Chakravarthy | Hey, Wayne. Did I also see you on CodeGuru forums just now? Are you Wayne B on the CodeGuru forums? |
| Sat 06 Dec | Sathyaish Chakravarthy | http://www.codeguru.com/forum/showthread.php?s=&threadid=275024
That confirms it. I was doubting if you were Wayne Freeze, the author of A Visual Basic Programmer's Guide to COM and COM+. |
| Sat 06 Dec | Eric Lippert | The VBScript intellisense is certainly much simpler than the equivalent VB intellisense. Believe me, writing a type-inferencing error-recovering parser for VBScript was not trivial! But I think I did a reasonably good job considering what I had to work with.
I don't know of any tools that do what you want. Writing a VB-to-VBScript converter for a 'scripty' subset of VB would be pretty straightforward, but you'll run into some real problems getting things like on-error-goto working properly. |
| Sat 06 Dec | Wayne | Yes, that's me on the other forums. I figured I'd get the word out :)
I don't need a full fledged VB to VBScript converter. I can remember that when I'm using VB6 to write VBScript, not to use the 'On Error Goto' method of error handling.
Perhaps though, if I were to do it I would make it part of the process to check for things like that and warn the user. |
|
| C++.Net Book Recomendations | Fri 05 Dec | Elephant |
| Im having a blast trying to wrap some old C code as a web service. Ive got a base C++ wrapper around it that takes care of all the business logic for the app. Around that, I was hoping to create a managed C++.Net wrapper library that I could use in a web service.
Initially when compiling my library, I got all sorts of linking errors, which largely boiled down to problems with mixing managed/unmanaged code in a library. Or rather, I guess it really boils down to, I dont know what in the hell Im doing.
On that note, can anyone recommend a good C++.Net book that discusses the topics of buliding class libraries, calling unmanaged code directly (its not a dll so I dont want anything regarding P/Invoke), and marshaling between old STL and new .Net libraries. Ive found a good number of books on these topics, but not when talking about integrating legacy code into new managed apps.
I figure that a ton of people must do this, and I see all sorts of articles indicating that tons of people do this, but I cant find anyone that really has much to say on the topic.
Any help in selecting a book, or in redesigning my solution would be greatly appreciated. Thanks! |
| Fri 05 Dec | Michael Popov | Richard Grimes
1. Programming with Managed Extensions for Microsoft Visual C++ .NET by Richard Grimes
2. Developing Applications with Visual Studio .NET by Richard Grimes
3. Applied Microsoft .NET Framework Programming by Jeffrey Richter |
| Sat 06 Dec | Chris Nahr | Challa and Laksberg, 'Essential Guide to Managed Extensions for C++'.
These two were on the MC++ development team at Microsoft. You need to pick up a general .NET reference as well, though, such as Richter's. |
|
| Automated backup through FTP? | Fri 05 Dec | Frederic Faure |
| Hi,
Before I set up WinAT and wget to automate the backing up of our web site every day from our hoster to a PC here... do you know of a good and free utility that would do this?
Should run on W2K, preferably run as a service, be recursive, and only download files that have changed (using a smarter way than just checking date/time on the FTP server since the two hosts are not synced)?
Thx |
| Fri 05 Dec | Nathan | This might be what you're looking for. I've been using it for a couple months, and it seems to work ok.
http://www.angrycoder.com/article.aspx?cid=5&y=2003&m=10&d=1 |
| Fri 05 Dec | Frederic Faure | Thanks, but it looks like a .Net program, but we don't have those here yet (and I'd rather avoid installing the framework to avoid breaking anything.) |
| Fri 05 Dec | El Macho | Whats wrong with rync? |
| Fri 05 Dec | El Macho | ugh, it's rsync |
| Fri 05 Dec | Martin Beckett | What OS is the hosting machine, what services are you able to run on it and what protocols will the hoster allow ?
Rsync is the classic best solution - you can set the server as a service under win2k but it's a bit fiddly getting the correct cygwin.dll versions and it didn't support ssh last time I tried.
If you only need daily backups not a live mirror a simple solution is a script on the server which makes a zip file of all chnaged files every day. The once a day you can email/ftp that to your backup machine. |
| Fri 05 Dec | Frederic Faure | Nothing wrong with rsync, except the FTP/WWW server is hosted, ie. I can install rsync :-)
>> What OS is the hosting machine, what services are you able to run on it and what protocols will the hoster allow ?
The server is running Linux, and I can only use FTP to upload/download stuff.
>> If you only need daily backups not a live mirror a simple solution is a script on the server which makes a zip file of all chnaged files every day. The once a day you can email/ftp that to your backup machine.
I was looking for a utility so I wouldn't have to bother doing this myself (write a utility that parses a whole directory tree on an FTP server and download only those files that changed, install WinAT, set it up to launch the utility every other hour). I guess it's going to be WinAT + wget :-)
Thx anyway |
| Fri 05 Dec | Jonathan A. | Check out Handy Backup.
http://www.handybackup.com |
| Fri 05 Dec | Jonathan A. | Opps. Looks like you were looking for something to download the files from your the FTP server and not backup your machine to FTP.
Sorry about that. |
| Fri 05 Dec | Frederic Faure | No prob. Thx anyway :-)
WinAT + wget -mr ftp://joe:pass@acme.com to go |
| Sat 06 Dec | Tom Vu | There's a script that comes with the python language called mirror that can do it. |
|
| Wise Installer - Newbie Nightmare | Fri 05 Dec | Last Straw |
| My latest project has turned out to be somewhat of a nightmare.
I have ported a system for one of my clients from NT4 to XP. The app was written reasonably well written and thoroughly documented. Life is good and kudos to the previous programmer.
I am now in the process of converting the installer as well. As far as I can surmise, there were no previous install issues. Jumping from FAT32 to NTFS has caused some headaches. The application works fine under the Admin account, but any User account gets access violations abound. Yikes.
So far, I have googled, looked at the newsgroups and read as much documentation as possible. And I spent a good 2 days hacking around with Wise to no avail.
I have done the following so far:
1. Moved all data files into All User\Application Data
2. Set permissions on any HKLM keys that require writing.
So, hopefully someone out there can:
* direct me to some resources on this issue
* dos/dont with Wise for COM and the registry
* any additional useful suggestions
Clearly, there is a permissions issue, but I am at my wits end trying to figure out where it might be. |
| Fri 05 Dec | Frederic Faure | Funny because I'm also looking for infos on how to investigate install/running issues, and come up with good solutions to solve those issues.
One application that looks interesting and might help you out in trying to figure out why the app doesn't install is Squealer (http://www.addisonsw.com/). I'll look for more infos just to be sure, but I guess we'll order it. |
| Fri 05 Dec | Clay Dowling | I don't have any experience with Wise, but I've had very good luck with Nullsoft's NSIS. The solution to a lot of the permissions issues is that programs must be installed as the administrative user.
Place user-specific data in user-specific directories. Each user will have permission to write in their own folders under Documents and Settings. Joe User doesn't have write permission into the All Users folder, only the administrative user.
Hope this helps. Contact me offlist if you need more help. |
| Sat 06 Dec | Ori Berger | Registry keys are also a problem.
Make sure you only try to modify the HKCU (Current User) and not HKLM (Local Machine) keys - the latter require administrator privileges. |
|
| Help in writing Word Macro! | Fri 05 Dec | JD |
| Hi All,
I am planning to accomplish following:
I have several documents named like
section1.doc
section2.doc
section3.doc
.
...
....
section10.doc
What I want to do is take input from user about which sections he wants to have in the final document. Say user enters section1, section5 and section7.
Then I want to create a document which will be a merged copy of section1.doc, section5.doc and section7.doc.
I am not able to get this done using Word Macro. I tried looking in Merge methods but they are not offering what I am looking for.
Any help will be really appreciated!
JD
http://jdk.phpkid.org |
| Fri 05 Dec | Nick | Check out:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_wrcore/html/wrconwordobjectmodeloverview.asp
(tiny url equivalent: http://tinyurl.com/xty5 )
Start with the object model overview link. Also, I find that often I can just record a macro while stepping through a process manually, and that gets me 90% there. |
| Fri 05 Dec | Ged Byrne | JD,
The easiest way to do this is to create a master document with each of your documents as sub-documents.
Then iterate through the sub-documents merging them into the master.
Look for the following in Word's help:
'Convert a subdocument into part of the master document'
I can't remember the exact object model off the top of my head, but you should have everything you need after recording a few steps and viewing the VBA generated. |
| Fri 05 Dec | JD | Hi Ged,
The master/sub documents idea is nifty! I have started coding the macro and it looks like it fits the bill!
Thanks for pointers!
JD |
| Fri 05 Dec | Professional Person | You should see a programmer and get proper Programming Advice.
IANAP |
| Sat 06 Dec | Ged Byrne | Professional Person,
YANAP?
Almost everybody else around here is. |
|
| Avalon's rearchitecture - Performance | Fri 05 Dec | runtime |
| From the longhornblogs.com, here is an article talking about how and why Microsofts Avalon (Longhorns new graphics subsystem) team needed to rearchitect the product... even before it was released. They used .NET managed code and the performance and memory usage was very poor.
Avalons rearchitecture - Performance:
http://www.simplegeek.com/permalink.aspx/359c73aa-4711-4061-b9d9-16300d8d278e |
| Fri 05 Dec | Steve Barbour | I'm not sure what the point of this post is, although I did enjoy the article.
Are you trying to bash Avalon because they had to re-architect, or are you patting the team on the back because they saw the problems and decided to fix them?
I don't know about you, but I've had to redesign several systems because they didn't work the way I expected them to. I can't really fault the folks working on Avalon for doing the same thing. |
| Fri 05 Dec | MR | It could be a knock on .NET performance. |
| Fri 05 Dec | Brad Wilson | I read the article, and my gut feeling was there was an 'impedence mismatch' between the intended architecture and the intended implementation environment.
Not uncommon really. Not sure why it warranted a post here, other than 'Avalon is new'. |
| Fri 05 Dec | son of parnas | I think the point of the post is that it is interesting.
These are people like us going through the same
type of development cycles we go through.
Microsoft has always been the big bad, this
kind of normalcy humanizes them a bit. |
| Fri 05 Dec | John Topley (www.johntopley.com) | I don't think Microsoft has always been the "big bad". For a lot of the 1980s, IBM and Apple were the bad guys, particularly when Apple were issuing lawsuits left, right and centre. |
| Fri 05 Dec | Slashbot | C/C++ is a bad language, the concept of pipes doesn't work, and using a Unix shell is just plain stupid, because Linus had to rewrite the whole Unix thang. |
| Fri 05 Dec | Dennis Forbes | If the post has merit, it is a case study that jumping into a tank full of unknowns can often lead to disaster (or, slightly less dramatically, wasted effort) -- it is humorous to see a Microsoft group that dove headfirst into .NET and smacked their foreheads on the rocky shallows at a time when countless corporate development groups are diving headfirst into the next great silver bullet that is the purported best of all worlds. |
| Sat 06 Dec | Brad Wilson | Maybe what it proves is that, when you have 10,000 developers, they can't all be Grade A developers any more. |
|
| Maximized Internet Explorer? | Thu 04 Dec | Alex |
| How to make sure Internet Explorer opens maximized with open link in new window?
Lame, I know. |
| Thu 04 Dec | .NET Developer | 1.- Close all Internet Explorer windows
2.- Open just one Internet Explorer window
3.- Maximize it
4.- Close it.
5.- Enjoy
6.- Blame if it doesn't work :) |
| Thu 04 Dec | .NET Developer (test first, post later) | It doesn't :( |
| Thu 04 Dec | Jax | I use MyIE2 which is freeware, uses IE and always starts maximised and starts new URLs on new tabs.
http://www.myie2.com/
The commercial alternative is NetCaptor, http://www.NetCaptor.com.
In fact, Adam Stiles of NetCaptor was the one that came up with the idea of tabbed browsing long before Mozilla, Opera and other browsers implemented it.
I feel sorry for Adam - had a gre8 idea, had it stolen by others. :-( |
| Thu 04 Dec | www.marktaw.com | > I feel sorry for Adam - had a gre8 idea, had it stolen by others. :-(
Oddly... Microsoft passed up the opportunity to steal his idea... |
| Fri 05 Dec | name not available | close the maximized window with Alt+F4,
win apps only remember their positions (at least IE) if you close it with double-click on left side icon, and not clickink on the right side X. |
| Fri 05 Dec | Don Vince | Right click your shortcut, Properties. In the shortcut tab there is a setting named Run, set that to Maximized. |
| Fri 05 Dec | Gordon Hartley | This is the thing that _really_ bugs me about IE.
Yes, as most people have pointed at - you can get IE to open maximised using the shortcut properties.
However, I've searched fairly extensively and there's no way to make 'Open in New Window' windows maximised as far as I can tell... the best you can do is resize the opened window to almost full size (but not maximised) so that following new windows open in a similar state. Its still not the same as maximised.
I just got used to hitting the following keyboard shortcuts every time I switch to an unmaximised window:
Alt + Spacebar, X |
| Fri 05 Dec | Alex | >> best you can do is resize the opened window to almost full size (but not maximised) so that following new windows open in a similar state
... this used to work fine in Win98, in XP it doesn't... |
| Sat 06 Dec | Gordon Hartley | >>> best you can do is resize the opened window to almost full size (but not maximised) so that following new windows open in a similar state
>... this used to work fine in Win98, in XP it doesn't...
Works fine for me (XP Professional). I think you had to do the ctrl+shift+double click the icon in the top left corner to get it to 'remember' the window size setting. I can't remember whether you had to close the other maximised window first, but it definitely still works. |
| Sat 06 Dec | Robert Jacobson | Gordon's instructions don't work on my XP Pro machine either, but I found a solution that works:
1. Open Internet Explorer normally. (Make sure no other instances are running.)
2. Right-click on a link and select 'open in new window.'
3. Resize the new window by dragging the borders so that it takes up the full screen. (Do not click the 'maximize' button.)
4. Close the first window.
5. Close the second (stretched) window by shift-clicking on the red 'close' button.
As Gordan said, this isn't quite the same as a maximized window -- you'll still see the blue borders around the window. I also couldn't find any way to get that, unfortunately. This is a major annoyance. |
|
| Why are 80% of programmers no good? | Thu 04 Dec | Donald Duck |
| Why are 80% of programmers considered to be no good? Someone said this in a recent thread, but why? Why are these people no good at programming and why are they still in the programming field if they are no good at it? |
| Thu 04 Dec | son of parnas | People don't quite because it's a job. I wasn't a
great janitor but i didn't quit because of that.
80% aren't good because it's a job. To be good
requires more passion, more interest, more drive. |
| Thu 04 Dec | Walt | I don't know if I agree with 80%, but there are many sub-species of programmers, some clearly better than others.
I think a lot of junk programmers are characterized by youth I meet who say 'I want to be a programmer. I love to play my computer games.' They don't really have a passion for development, they just want to make the games they spend 23/7 playing (one hour a day sleeping). Or perhaps they just think computers are cool and want to be in the action. Or maybe they hope that they can become good enough to work at MS, which they think is the road to riches.
At college I was amazed by how many programmers learned some languages, how to build some apps, and just left without having a hold of the underlying theories of programming, design and management.
Some have degrees, others are self taught; some like teams, other work rogue.
I question what empirical evidence supports the 80%. |
| Thu 04 Dec | Dustin Alexander | What about, why are 1% of programmers 10x more effective than the remaining 80 (empirical evidence notwithstanding). |
| Thu 04 Dec | Dustin Alexander | Sorry, switched math. That should read 99. |
| Thu 04 Dec | Grumpy Old-Timer | 'I question what empirical evidence supports the 80%.'
Hear, hear! A figure like 80% is quite simply preposterous, and no one with any experience in this industry would believe it for a minute.
The actual figure is much closer to ninety per cent. |
| Thu 04 Dec | Dustin Alexander | This DOES seem true from experience, though. Without study, everyone raise their hand: Does this seem true to you?
It definitely does for me. |
| Thu 04 Dec | _ | you can be a no good programmer and make $80,000 a year. that's why I do it. |
| Thu 04 Dec | _ | in fact there is a point of diminishing returns. it isn't as if on average, a programmer who is 10 times better than the next makes 10 times as much money as a bad programmer. most people would rather take the minimal amount of time to become a bad programmer and make $80K than take the endless hours necessary to becoming a top programmer and make $85K. |
| Thu 04 Dec | Dustin Alexander | Most of those 'endless hours' necessary were, for me, spent tinkering in my basement. It wasn't a painful process, it was an entertaining one. |
| Thu 04 Dec | _ | sure. but the point is, now that you are 10 times better than the $85K bad programmer, are you making $850K? |
| Thu 04 Dec | Sum Dum Gai | Of course you don't make that much. If management actually knew who the 10 times better programmers were, and that they were so much better, the wage scale would probably be 100k for the good ones and 20k for the rest. ;) |
| Thu 04 Dec | braid_ged |
Read some Ayn Rand people. 80% of everyone is no good.
A few capable people carry the world on their shoulders.
Whenever I start a job for an insane government department there is always some old guy who I am refered to for some technical detail.
'You will need to talk to Klaus about that', and I am often warned 'he can be a little abrupt/bitter'. And it always turns out that the old white haired frustrated control freak Klaus is the one person in the swamp of commitees and beurohacks who actually understands what is actually happening with information in the organisation.
Lets be honest, isn't it amazing how many truely stupid people you meet during the course of the day ?? Carry around a pad and pencil, you'll have twenty or thirty names by the end of the day |
| Thu 04 Dec | Dustin Alexander | At that point you're supposed to start your own company and start bilking your former corporate overlords.
This worked better in the 90's:
Get Good => Start Company => Get VC => Buy ludicrously gauche yacht => ETC.
Now you actually have to (*gasp*) work for it. Too bad. I liked my scepter and crown until the bank took them away. |
| Thu 04 Dec | Dustin Alexander | brain_ged:
Uh, Oh. You mentioned that Rand girl. Your screwed now.
;)
That's strange. I had an experience similar to this. I went to a client's and ran into a guy working on the far side of the project I was running. We talked for three hours about the dawn of microprocessing, Apple, IBM, chip design. Then I meet with HIS boss (my client), and she asks me to evaluate his performance because she is thinking of moving him off the project. Meanwhile the other programmers are all asking him for advice and management is painting a target on his back.
I wonder how common this experience is... |
| Thu 04 Dec | Fredrik Svensson | This reminds me of Joels article Strategy Letter IV: Bloatware and the 80/20 Myth
'A lot of software developers are seduced by the old '80/20' rule. It seems to make a lot of sense: 80% of the people use 20% of the features.'
'Unfortunately, it's never the same 20%.'
It is almost the same here. Everybody is seduced by this rule. If you were at university, you of course belong to the 20 % good people because you were at university, paid alot of monney. You must have learnd something. If you are selftaught you are of course also in the 20 % because what do you really learn at university. There are millions of combinations, belive me. Ph D in Physics is better than BS Computer Science. or vice versa..
The widht of Computer Science is also a problem. You can be a master of Windows API but when it comes to writing a scientific program you ara a beginner. People in that field will laugh at you the same way you laugh at them when they try to build a GUI. And then by default you place them in the 80% part of the spectrum. |
| Thu 04 Dec | Alyosha` | Sturgeon's Law applies to people. Also, the fact is that the tightening economy has already weeded out a lot of bozos that jumped on board when VCs were waving fistfuls of cash in front of anyone who could act like a programmer.
I actually don't think the problem is all that bad; it just seems worse when you've working with an enclave of incompetent people.
I also find that the people who complain about the 80% the loudest are usually part of the 80%. It's those elitist bastards that you have to look out for. =-) |
| Thu 04 Dec | analyst | Eighty percent are no good because programming is a discipline controlled by non-programmers, unlike other equivalent disciplines.
Managers are most comfortable with those who DON'T tell them how to do their job. That's why you see Team Work feature everywhere. That's why most programmers are mediocre.
The best ones have left to work at Google, Microsoft or EA. |
| Thu 04 Dec | Mr. Fancypants | Programming, and our view of our peers, is like driving a car.
We all take unsafe shortcuts from time to time because of a myriad of factors, but when we see someone else doing the same thing we think 'gee, what an asshole; most drivers suck!'.
So it is with programming. Due to bad planning, bad requirements, or whatever else, we sometimes do things the Wrong Way no matter how much we wish we could do everything the Right Way. But when we inherit someone else's code to maintain, we don't really stop to consider this and the fact that we're often no less guilty -- we just think 'man, the guy (or girl) who wrote this sure is an asshole'.
Of course, not everyone who is a programmer should be one, but a LOT of the gripes we have aren't really because of pure incompetence. |
| Thu 04 Dec | Mr. Fancypants | 'The best ones have left to work at Google, Microsoft or EA. '
Well, Google and Microsoft anyway. |
| Thu 04 Dec | www.marktaw.com | 1. Sturgeon's Law - 90% of everything is crud.
2. Statistics. 64% of programmers are average. An additional 18% are below average. That's 82%. |
| Thu 04 Dec | Cletus | If only John Galt were a programmer... He could shoulder the weight for us all... |
| Thu 04 Dec | Cletus | 'Why are 80% of programmers considered to be no good?'
Depends on the meaning of good? I'm sure there are some bad programmers, but 80% of them? And I would also guess that the majority of folks who come here consider themselves to be in the 'Good' category. So someone is not telling the truth, fess up now...
Do you think that the maybe what is contributing to the 80% bad programming stems from bad requirements?
http://www.cio.com/archive/101503/work.html |
| Thu 04 Dec | obvious | 'most people would rather take the minimal amount of time to become a bad programmer and make $80K than take the endless hours necessary to becoming a top programmer and make $85K'
Assuming that is true, which programmer is wiser. Which happier? |
| Thu 04 Dec | the artist formerly known as prince | Here is a better question, if 80% of programmers are useless, why doesn't the industry get rid of them! Weed em out and toss them, cut their costs by lets say 75 percent while only losing 5% of the productivity? And then they wouldn't need to outsource everything but the receptionist overseas, and the reason is because they can't tell which ones are good which one's arent (the only profession where we learned to do that is sales), in fact there are some companies where politics, bueracracy and inertia make 100% of the developers useless. and so we replace an army of useless programmers in the US with one in India (Take schwab for example) the thing corporate management teams need to own up to is that a cost without a benefit is still an unneccessary cost, even if its lower, and that managers MUST start to figure out how to measure productivity.
Because the truth |
| Thu 04 Dec | Mr. Fancypants | Oh crap! The corporate overlords got him before he could tell us The Truth. |
| Thu 04 Dec | Dennis Atkins | 'he can be a little abrupt/bitter'
This is an interesting principle in general. I have a saying I made up: 'Look for the guy who everyone warns you to stay away from -- that man is the one who knows what is really going on.' I made this up not from IT work, but political activism in a foreign country. Everyone tried to keep by away from a man I will call Topaz who was said to be a dangerous criminal and a lunatic. Ones I spoke to Topaz, he told me the history of what was really going on, what the hidden agendas of the various players was and how to get around them.
Back to the topic on hand, the problem with pay is that there is no metric for identifying programmers who are 10x as productive. In baseball, I can give you statistics that will tell you who the best players are. In music, I can look at the charts to tell you, if not who is the best, who most people think is the best. In programming there is no metric. There is not even a consensus as to who is good.
If there was a metric like there is for music and baseball, the best programmers would be making ten million dollars a year. The worst would not be working on commercial projects but would simply have to work for free on various pony league projects. |
| Thu 04 Dec | Dennis Atkins | ALso, the key thing about the baseball and music metrics is that they can not be easily gamed -- you either hit the ball or you didn't. your album is either on the charts or it is not. Current ideas of productivity metrics for developers all can be trivially gamed if these metrics were to be correlated with pay. |
| Thu 04 Dec | T. Norman | And when a truly stellar programmer is recognized in an organization, guess what ... he/she gets promoted to management. |
| Thu 04 Dec | Dennis Atkins | AFNAP,
I like the points you make. The US is noncompetitive in IT because most developers are bad. Whereas in india, most developers are good (comparatively). How did this come about? Are Indians smarter? Do they have better schools? No and no. The difference is that in India, companies hire the smartest and most competant people in India to be programmers. How can they do this? Well, the average per capita income in india is $800/year. The average income of a developer in India has now skyrocketed up to $20,000, which is 25 times the average income.
Here in the US, the average per capita income is $32,000. The average developer makes $64,000, which is twice the average income. (these numbers are from memory, so what if they are 30% off, the point still stands) To have the same incentive to be a programmer in the US, a programmer would need to make $800,000. Yes, the Indian programmers are basically making the equivalent of $800,000/yr on average, in relation to how much the people around them are making.
So here in the US, a programmer making $64,000 can rent a room near Manhattan where he works. He works too many hours and so can not cook at home so most of the rest of his income is spent on take out food.
In India, a programmer can hire a servant for $800/yr. For $3000/yr, he can hire a master chef. For $15,000/yr he can hire a houseful of servants, including a chaffeur to drive him to work, a tailor to make his custom fit clothes from scratch, a full time masseuse to prepare a sauna and a rubdown when he gets home from work, and three gardeners to run his personal organic vegetable and herbal garden. He will live in an enormous estate and be able to afford a heated swimming pool with a waterfall with the extra money that's left over.
So look at the incentives. No matter who you are in India, being a programmer is the way to go. You can make a lot more doing that than being a lawyer, a doctor, a politician, a sports star, or a musician. Thus the very very talented people in india are fighting it out to get programming jobs and mediocre and incompetant programmers have absolutely no chance.
Here in the US, if you are a smart talented person, you might be a programmer if you have a natural love for it and are willing to put up with the long hours and poor working conditions and enjoy being yelled at all the time. Or you could become a doctor or lawyer or sports star or musician and have a chance of really striking it big, and also being respected for what you do.
That's why we are in the situation we are in. |
Thu 04 Dec | Matthew J Sullivan |
In India, a programmer can .... live in an enormous estate and be able to afford a heated swimming pool with a waterfall with the extra money that's left over.
Hell, I'm moving to India! |
| Thu 04 Dec | Dennis Atkins | Matthew, are you of indian race, have relatives in india or have an indian spouse? Failing that, are you starting a company division in india that will hire indian employees at high wages? If you can not answer yes to either of these, india wants you to stay the hell out.
Extremely few countries have immigration policies as liberal as the US. India is not one of them. Your chance of finding employment in india is low and your chance of getting a permit is zero.
The good jobs in india are for people of the indian race. Not of the white race. It's as simple as that. |
Thu 04 Dec | uncronopio |
In India, a programmer can .... live in an enormous estate and be able to afford a heated swimming pool with a waterfall with the extra money that's left over.
Talking about stereotypes... You missed that programmers in India are not nerds and that they have more sex appeal than a Bollywood star.
Many (X%) of programmers are no good because, as in most disciplines, you have many people that are not really interested nor are smart enough to be competent on what they are doing. In the same way, we have crappy lawyers, doctors, plumbers, sales people, managers, etc. Is the proportion as high as 80%? I have no idea, but there seems to be a lot of not very competent people in most (if not all) disciplines. |
| Fri 05 Dec | Indian Programmer in India | I really wish that were true. Honestly! |
| Fri 05 Dec | Indian Programmer in India | I meant the stuff abt swimming pools and chauffers and what not. |
| Fri 05 Dec | analyst | artist ...
> Here is a better question, if 80% of programmers are useless, why doesn't the industry get rid of them!
Because they're Team Players. |
| Fri 05 Dec | analyst | Dennis,
> The good jobs in india are for people of the indian race. Not of the white race. It's as simple as that.
They're also reserved for Hindus, not Dalit or other members of the scheduled groups. |
| Fri 05 Dec | analyst | Also, Dennis, that's a good point about the high comparative, but it's offset by two things.
First, the class consciousness that sees management as the desirable role, and engenders a readiness to kow tow to management that's very dangerous in software development.
Second, there's a dearth of the infrastructure that leads to talented people spending lots of time learning on their own. This is a very important mechanism for selecting talented people, especially in software development. Just going to lectures never created a good programmer. Where there is good infrastructure, it's oriented to the upper castes. |
| Fri 05 Dec | sgf | I don't by the 80% premise. I've been in this industry for almost 25 years and my personal experience is more like 20% are no good. So either I've been very lucky or somethings wrong with the 80% number. Is there ANY objective evidence for it?
I've never bought the 10x productivity differential either because I've never run into anyone like that. 2x-3x maybe
Just my $0.02 |
| Fri 05 Dec | Bad Programmer | 'And when a truly stellar programmer is recognized in an organization, guess what ... he/she gets promoted to management.'
So that's where all the 'good' programmers went... |
| Fri 05 Dec | Dennis Atkins | analyst,
Interesting. Please elaborate.
Re management: Are you saying that in India, the best programmers will try to get management positions because managers have greater social status than programmers?
Your point on self-learning is interesting. I do not know much about the state of learning in India. You can learn programming on a free 10 yr old computer, but you need electricity. I suppose you're saying that india will not make use of the full potential of its population as long as its infrastructure is poor in most of the country.
Perhaps... but don't forget that the television was invented by a guy who rode his horse 20 miles to school and had access to no electricity or books when he invented it -- he was plowing a field with a mule! |
| Fri 05 Dec | anonymous | I would definitely say the number is closer to 90%. The problem is most people just accept that software will always be crap. Their standards have been lowered and they believe that constant bugs are to be expected.
It's also not difficult to be 10x more productive when there are so many incompetent people in the field. For instance, one of my coworkers has a CS degree from a decent university. She decided to get a CS degree because of the money she thought she would make (this seems to be common among the incompetent people). I have watched her spend all day trying to figure something out. I then offer to help and write some sample code that does 95% of what she needs in about 10 minutes. She spends several hours working out the other 5%. Unfortunately this is not an exaggeration and is not uncommon. |
| Fri 05 Dec | realist | Why are 80% of programmers no good?
Because words are cheap, and the more you criticise others the better you feel about yourself. |
| Fri 05 Dec | Indian Programmer in India | So much FUD about India and Indian Programmers..
Indian Programmers are like Programmers everywhere. Motivations for Indian Programmers are the same as any other Programmer of any other nationality. Hell, motivations for *any* technical proffessional is the same everywhere. India has a very LARGE population. Therefore %-ages do not work when making comparisons. Use actual numbers. 150,000 Programmers are 150,000 Programmers, even if they may form only 0.015 % of the population in India. India's electricity is up and running. Even if it does not, shops *always* use power generators for misson critical work.....
...and so on and so forth.
Write that BIG article .
|
| Fri 05 Dec | Tony Edgecombe | I have to agree with sgf here, while I have been consulting I have seen some terrible work but in nearly every instance the fault can be traced back to poor processes within the organisation rather than an individuals lack of competence.
Of course there are the few at the bottom who just can't do it but I'd say 10% is more realistic, probably the same at the opposite end as well. |
| Fri 05 Dec | Wondering | Indian,
I believe that the comment about resources refered not to shops (we accept the shops have electricity), but we are wondering if the majority of indian familes have computers for their kids to practice programming on, electricity and internet access, or if it is more common to not have those things until one arrives at college or high school. The idea is that the really good programmers entering college at age 18 or 20 are the ones that have 6-10 years of programming experience creating programs and learning languages behind them already. |
| Fri 05 Dec | Indian Programmer in India | Wondering,
True, but exposure is increasing. Schools have PC access from 1st Std. (Grade I or 5 to 6 year olds). Of course, I am speaking of private schools and not the public ones. Even they are improving a lot. Even so, that is a *large* number boys and girls
The point I am making is the point that has been made since Indpendence (1947). India is poor. Indians are filthy rich. That statement goes right from economic wealth to opportunities available to academic prowess.
While I admit that insofar as technological involvement is concerned there needs to be a helluva lot of improvement, the penetration made into businesses and households is still large, number wise, thoug abysmally poor, percentage wise.
When it comes to meeting demand, especially external (foreign) , Indians can match or better the local (to the foreign nation) suppliers, since the resoures are aplenty since the volume required is easily serviced by the exisiting competence base though that base may be totally insufficent to internal (Indian) demand. |
| Fri 05 Dec | Ian sanders | A huge number of people tinker with programming, just like I can change a plug. I don't call myself an electrician, but anyone can say that they are a programmer. Programming is the using-a-screwdriver part of being an electrician. I would say that 99.99% of programmers do not meet a minimium professional standard, but 50% of those are schoolkids who have just ripped off their first javascript from the web.
The question should be something like 'what proportion of software engineers are no good'. If you want a professional job, you want people with some academic underpinning of the subject, an understanding of issues around the subject - customer needs for example - and skills in other aspects of software engineering like (duhhh) testing, design, writing documentation, etc. That requires good recruiting and continual training to follow it up. Which leads to another good question, 'why do 80% of managers de-skill their staff'.
If you think that 80% of your peers are no good, perhaps you should move on up the food chain. |
| Fri 05 Dec | Zaphod Bebblebrox | As Jesus said in Luke 18:19, "...No one is good–except God alone. " |
| Fri 05 Dec | Dignified | '...No one is good–except God alone.'
And, according to this, Michael Kolesnik:
http://www.xent.com/FoRK-archive/spring96/0158.html |
| Fri 05 Dec | Len Holgate (www.lenholgate.com) | > If you want a professional job, you want people with some academic underpinning of the subject
Heh, this could start a thread that would take us back to the 'how much formal eduction do you need' conversation ...
Is anyone keeping track of how quickly JOS cycles? I must admit that many of the recent threads make me feel like we must have just had a 'JOS Reloaded' moment ... |
| Fri 05 Dec | Clay Dowling | I've definitely been in shops where 75% of the programmers were excellent. At least in comparison to the lower 25% (me). Programming has a lot of youth in in, with proportionally less experience. A lot of the necessary skills are only acquired through experience, and a new programmer can't have that experience. That was definitely my case: 5-10 years less experience than anybody else in the department. |
| Fri 05 Dec | analyst | Dennis, yes, your interpretation of my point is correct. Indian companies are more hierarchical and so staff respect position more than in comparable Western companies. This can lead to programmers being more oriented to 'being promoted' than to excelling at their work.
Regarding infrastructure, my point is that a teenager, student or even young adult in India is less likely to have a modern computer at home or in his dorm, and thus less likely to engage in the hours of practice that make a talented developer. |
| Fri 05 Dec | MD | 80% of programmers are no good because we live in the opposite of Lake Woebegone. |
| Fri 05 Dec | fw | >Where there is good infrastructure, it's oriented to the upper castes.
You weren't talking about India here right?
People need a resonable amount of time and a 486, they don't need much more than that. Sure you can rant about java or whatever, but if you are taking concepts, not allot is needed. Time is needed, doing something interesting and sometimes doing things you aren't so interested in, just so you get the concept right in your head. People always assume they need $x to learn $y, when they get $x they get bored, or think they need more. Work with what you have, get going today, when you hit a limit, you'll really know if you need $x. |
| Fri 05 Dec | Cletus | ' I would say that 99.99% of programmers do not meet a minimium professional standard'
That's the whole point. What professional standards? SEI, ACM, IEEE etc...
Since the barrier to entry in programming is so low, anyone who could turn on a pc and type with any amount of proficiency is considered a 'programmer'. The profession of software development is seen as little more than a glorified data entry. |
| Fri 05 Dec | Kentasy | Statistics can be quoted to prove any point.
43% of all people know this. :) |
| Fri 05 Dec | Ian sanders | You don't need hours of practice at home to become an excellent programmer. Doctors don't practice surgery at home, lawyers don't sue their wives . . . ok . . . lawyers don't sue their kids. Usually. Architects don't perpetually build themselves new houses.
Years ago, one of the best programmers I ever met was apalled when I asked what kind of PC she had at home. The very idea of it was abhorent. Work is work. Home is where you have your life. If you think you get the Big Picture from a screen at 2.00am, you need a shrink. |
| Fri 05 Dec | Me | 7 years experience in the "web world" as web application developer. I don't buy the 10x productivity thing (as someone else said, maybe, maybe 2x3x or even slower but their CODE is so much better). I don't buy the 80% thing ... honestly. The only pattern I've seen is that MS oriented people seem to be much duller than unix people. |
| Fri 05 Dec | analyst | fw, it's not just a matter of having a 486. Modern computers make development more convenient by allowing work with modern compilers and other tools.
Also, they will be associated with the other paraphernalia associated with learning and exploration, such as printers, books, private space and free time.
Ian Sanders, in the mainframe days it was certainly true that a programmer would just learn on the job. These days, if there are any such people, their expertise is shallow( i.e. if they don't do any exploring on their own.)
Re your comparisons with other occupations, you will actually find that many lawyers spend or spent a lot of time pulling arguments apart, often in debating. This is roughly equivalent to developers exploring at home.
Medicine is different. It's more of a knowledge capture than learning a talent.
Architects often do a lot of drawing at home, or did while at school. That contributes to their creative talent. |
| Fri 05 Dec | the artist formerly known as prince | 'Thus the very very talented people in india are fighting it out to get programming jobs and mediocre and incompetant programmers have absolutely no chance.'
Thehow come there are so many bad indian programmers? |
| Fri 05 Dec | Cletus | What's the big deal on this thread about indian programmers? The way some of the people on this thread are going on about how smart indian programmers are above the rest of the population, kind of makes you think their is something special in the water in calcutta.
I mean no offense to people of indian heritage, but just like any other group of people there are smart-talented people and not so smart talented people, irrespective of race/culture. This collectivist banter about how a group of people are somehow 'smarter' then another group because of their nationality is just plain ludicrous. A good programmer is a good programmer, regardless of the people who belong to the same race. Likewise a bad programmer is bad programmer, regardless of the geniuses who belong to the same ethnic group. Secondly, the reason there is such a hard-on in the industry over indian programmers is because they cost cheaper then their american counterparts. If indian programmers charged american wages for their labor, the corporate america would drop them like a bad habit. |
| Fri 05 Dec | analyst | Cletus, it just shows what a few million dollars spent with top American PR firms can achieve. |
| Sat 06 Dec | T. Norman | 'I've never bought the 10x productivity differential either because I've never run into anyone like that. 2x-3x maybe'
You have to think of the functionality accomplished and not just the lines of code churned out. In fact, the 10X programmers don't write much more lines of code as the rest; they just find more creative ways of doing things and ways of reducing redundancy.
The 10X programmer has a greater ability and/or willingness to find commonality across a design and wrap them into classes and libraries, and those libraries enable them to write subsequent code 10X faster. The 10X programmer also does other things like write code that generates code, or write code that does things dynamically based on a few bits of metadata instead of writing a class for every variation of functionality. The 10X programmer neatly uses techniques like recursion to solve a problem in a few lines where the average programmer would not have noticed the recursive possibility and would have gone on to write hundreds of lines of convoluted logic to perform the same task.
After they have written such a library or dynamic tool or elegant algorithm, it is easy to take what they have done for granted. Unless you think about what the average programmer would have done, or have seen what prior programmers actually did before the code was refactored, you don't realize how much time was saved.
I don't consider myself a 10X programmer (yet), but this is an example of a 10X-like thing I was involved in. There was an application with over 100 screens, which would need several more added. A large percentage of the screens needed a variation of the same set of widgets displayed in the same position across the board, something kind of like a toolbar. The previous programmer(s) who worked on it write up a 10-page procedure that required you to do a bunch of cut-and-paste and tweaking of code to include the thing in your screen. I and one other person studied it for a little and came up with a way to put the functionality into a library so that the objects could be included in your screen simply by making one of about six library calls (depending on which variation you needed). So now it takes two minutes to include it instead of a day. |
| Sat 06 Dec | T. Norman | By '10-page procedure' above, I didn't mean a procedure in a program, I meant a 10-page document explaining the steps.
If your organization already hires mostly above-average programmers, then the average programmer where you work is probably already at 2x-3x of the average for the industry. So it would be harder to notice 10x with them.
Remember the studies that found the 10:1 variation were based on giving a large set of programmers the same thing to write. |
| Sat 06 Dec | HadEnough | The 80% question (a number I too would put at 95% or higher) is mired by a number of problems. The interesting population, elsewhere called Grand Master Programmer with a nod to the chess world, is very hard to find, and therefore hard to study. For the same reason, most in the field (and in this forum) have only poseur examples to rely upon, so we have a boatload of mythology in the way. Incidentally, I have observed (several times, different Grand Masters) that the multiplier can be upwards of 50x, but whether we consider the 10x Masters or 50x Masters, the problems are still the same.
Dennis Atkins is right that management has no reliable objective tool to identify Grand Masters.
T. Norman is wrong that Grand Masters always get promoted to management. While Grand Masters tend to be people that would excel at any activity (contrasting them with the ordinary social-misfit hacker-savant who is usually not particularly talented anyway) GMs, being creatives, tend to like to be make things. Shuffling papers, holding meetings, and manipulating social relationships would tend to be more irritating than challenging for a GM. Some might be lured by the currently lucrative (and absurd in a creative field) manager pay, but the best are compelled by nature to live a creative life, no matter the sacrifice. But I suspect T. Norman was just funnin'.
Uncronopio correctly hints that software is not alone in enduring mass incompetence.
Clay Dowling might find as he develops the experience he feels he lacks, that experience and skill are sine qua nons for all complex activities, but they both differ from talent, which alas is innate. FW hints at two things that make great programmers great, practice and insatiable curiosity. Ian Sanders' observation about doctors, lawyers, and architects is silly in that the great practitioners in those fields do not stop what they do at 5pm, even when they can't exactly perform surgery at home. I'd lay odds that the 'best programmer' he ever met is assuredly not a Grand Master. If Ian has goals loftier (to him) than being great at what he does, than huzzah for him, but please Clay, don't let his attitude restrain you. Talent must be developed, and mastery requires feverish determination.
Prince asks 'why doesn't the industry get rid of them!' Hear, hear. But don't get your hopes up for this happening soon, for three reasons that I can see.
One. Evolution works on a glacial time scale, in biology and in realistic economics. Companies don't fail completely when they are inept. Among other things, perception, weak competition, and legal injustices all contribute to their survival.
Two. The software creation field is stuck in a quagmire of trying to manage to success, wrongly thinking process is a workable substitute for talent. Until everyone involved knows that time-in-service is not talent, that programmers aren't pluggable resources, that software is written not manufactured, this silliness will endure. One interesting development on this front can be seen at http://www.agilemanifesto.org/
Three. Most Grand Masters are busy helping organizations that deserve to fail hold on by their fingernails. Most latent Masters are stuck in environments that cannot help them develop their talent, or even just do well. Few GMs are actively thawing the ice of that glacier in point one. |
| Sat 06 Dec | Dennis Atkins | Thansk for making the point that it was the same specification and programmers were measured how long it took.
Compared to the average programmer, the best did it:
10 times faster
with 10 times fewer errors
with 10 times greater preformance
Now there are also BAD performers, who are way less than average. Not sufficient to say they are 100 times worse, they are infinitely worse since they generate negative productivity by wasting other people's time while making no useful contributions. There's a few of these folks out there and they can be very troublesome.
As far as folks who don't believe in this goes, the study als showed that companies tended to have everyone at the same level. Companies with average programmers had all average programmers and companies with top programmers had all top programmers. This is because top programmers don't want to work with people who are poor. Also because certain companies know what top programmers are and can hire them and provide them with a nice work environment, like Fog Creek, or Microsoft, or SAS. So if you are in one group or the other, you may not believe both groups exist. Those of us who do consulting at lots of different ploces have definitely seen both sides and the differences are real. |
|
| Code in Mind | Thu 04 Dec | surfer |
| This is mainly for programmers and developers. Before you start writing the code, how much code you can put in the mind ?. ie.. Oneline One page or entire project.?
Do you think that writing code in mind can help to actually finish your task faster? |
| Thu 04 Dec | Alyosha` | The mind is a very small working space -- especially my mind. Sketching things out in a whiteboard usually helps.
Coding starts when I've broken out the problem into discrete (hopefully testable) steps, I'm confident that the plan is complete, and I'm confident in my ability to code each step: there are no more 'and then a miracle happens' sections to the plan. |
| Thu 04 Dec | old timer | unless your developing with objects. I hope. |
| Thu 04 Dec | Mark Hoffman | Like Alyosha, I don't get very far with my designs in my head. I'm sure super-programmers can design 4 trillion lines of code all in their heads, but a mere mortal such as myself has to start writing ideas down pretty fast...
I normally just open up Word and start jotting down notes and ideas until I begin to see the framework of an architecture come together. Then I move over to Visio to add more meat to the design. |
| Thu 04 Dec | son of parnas | Different people are different. I can keep a lot of
code in my head and have little patience with tiny
incremental development steps. Others are the
reverse. Figure out how you work best
and work that way. Neither way is better. |
| Thu 04 Dec | Dustin Alexander | I like to get the contractual stuff loaded into my head. Once I've got a good overview of concepts, contraints, and relationships between interfaces I tend to use UML to sketch it out and discuss it. Usually the final model bears only a passing resemblance to the original. |
| Thu 04 Dec | surfer | Mind is very important tool for the developer. We spend time learning UML, Visio,Word or Emacs and allow ourself to get by with the basic funtionality of mind that we have perceived.
Just like computer softwares, if we develop proper skills to use the mind would that enhance our ability to do the things?
Once you learn for example Emacs, you keep learning and discover new things daily which can be helpful to you.
Shoud mindsoft ask the question:
What new mind-skill that you have learned today?
It's completely possible that the techniques used by someone else can be hidden in you and upon recognition you would start using it just like add-on modules of your software. What do you think?
While I agree that the coding space in the mind is limited and non-transferable to someone else, I think that in the minds of great developers many things are going.. ie.. they have learned to use the mind-space and to extend it. By practice they develop larger space to work in. |
| Thu 04 Dec | Dustin Alexander | This is actually a very good point. And very true. Throughout life we all learn tips and tricks for thinking about things that enables us to accomplish more with the same cerebral pinout. |
| Thu 04 Dec | .NET Developer | What worries me about having all the project in my mind is that I feel it is not 'saved', so I could easily end up loosing many lines of code if something interrupts my thoughts and makes some of the unsaved pages off memory to disk (because I still don't have a HD included). |
| Fri 05 Dec | Phil | Whiteboards, pen & paper to start
But after a while, the code is in my mind.
For example, I system I worked on for 2 years around 1997 had a problem one year ago and I was called to fix something.
To my amazement, I was able to find my way trough it. The architecture and all was still clear in my mind... |
| Fri 05 Dec | Gordon Hartley | After starting to use a test-first approach to development, I've found that I don't need to keep nearly as much 'code in mind' - just what is pertinent to the code I'm writing to pass the test at hand.
I'm still not nearly proficient at it, but already I can see it evolving better design than the 'big design up front' approach, and yet at the same time reducing the amount of 'code / design' stuff I need to keep in my head.
Because you're iterating through the 'write test', 'write code to pass the test', 'clean up code which passes the test' so often, you're constantly (re-)teaching yourself how everything fits together.
Because you're never thinking ahead much further than passing the next test, you don't clutter up your mind with
any unclear or loose concepts about the bigger picture and worrying about the maybe's or mights or should's...
I just need to remember to mercilessly refactor after first getting the test to pass. I'm kicking myself for recently not refactoring as early as I should. Each time I had to touch the code, it was easier to make a simple change to address the immediate problem at hand. However, once I finally bit the bullet and did it, and as a result I managed to reduce the lines of code by about 60% - thus making it simpler, and easier to 'keep in mind'.
And re: the emacs comment - finding the 'apply-macro-region-to-lines' did wonders to my editor efficiency. All these little things add up over time to make a huge difference productivity. |
| Sat 06 Dec | MRC | before starting to code , visualizing in mind how the completed functionality should be always works great for me, helping to produce high quality code. |
| Sat 06 Dec | neojugglist | When doing serious programming, I get in a zone where I'm keeping far more ideas aloft than I do in my other day-to-day activities. It's rather like I imagine juggling 10 balls might be, in that any interruption, no matter how short, can bring the whole thing crashing down. It can takes a lot of time and effort to get back to that point.
Early in my career, and sometimes even today when I must, I would shift my workdays from 1pm through 1am. I'd still get important social interaction in the afternoon, but when I did my real work, there was usually nobody else around to harm my concentration.
Here's one reason Joel's one of the few people in a decision-making position in this industry who seems to have a clue, and also one of the explainations why Microsoft has been so dominant: programming can't be done well in a cube farm. |
| Sat 06 Dec | Dennis Atkins | I love the juggling 10 balls analogy. Going to use that myself when speaking to people now since they can't relate to 'the zone', or don't believe that zones apply to programming. But everyone knows that you shouldn't distract a juggler. |
|
| Scrabble and Dummy Data Objects | Thu 04 Dec | Joe Grossberg |
| The title refers to an post on Christian Bepulvedas blog: http://christiansepulveda.com/blog/archives/000038.html (it refers to a recent Martin Fowler essay)
To quote concisely:
Lately, Ive been trying to explain the reasons why dummy-data classes are a smell in software. Dummy Data classes are classes that do not have behavior, only data.
...
Consider Scrabble. When someone presents a word that is challenged, one of the first comments made is Use fazooloo in a sentence.
...
A dummy data class is like a term that can only be used as an object in a sentence. If no sentence exists in which the dummy data class performs the action, it has no purpose but to be manipulated by others. This has various implications, such as encapsulation violations, but I think the sentence analogy simplifies the reaons to avoid dummy data classes.
In a nutshell, my problem is this: yeah, OK, thats a smell. But what good is a smell without a refactoring solution?
In case youre wondering, on my current project, we have a Stuff object per-implementation that is the rough equivalent of a conf. file. Its not intended to have any behavior. And some of its attributes arent easily transfered to objects in the domain model.
So my questions to the JoS forum are thus:
* Is it a legitimate concern, or just taking OOP design purity too far? Perhaps its something you can use infrequently, and not always a bad idea?
* More importantly, what pattern(s) address this issue? What can I do instead of using dummy data objects?
Joe
http://www.joegrossberg.com
P.S. In case youre wondering, I asked on his site and havent gotten a response yet. |
| Thu 04 Dec | son of parnas |
Some things are just meant to be used by other
things. Not everything has interesting behaviours,
especially at the lower layers where we are making
tactical plumbing decisions a lot of the time.
Is a link in a link list class anything more than
just data?
If data object to interface with a database
any more than just data?
Is a message anything more than just a pile of attributes?
Is your address anything more than just data?
Is a tile in scrabble anything more than just data to
be used by a higher intelligence in playing the game?
It has become fashionable lately, especially in XP,
to remove the role of judgment for simple rules
that are absolutes. |
| Thu 04 Dec | Emily Litella | Some objects are masters, others are... uh....
Oh, never mind. |
| Thu 04 Dec | Beth | Some objects are inanimate.
I think methods-but-no-data is often worse than data-but-no-methods. An object that's all methods can sometimes be refactored by moving the methods into the classes from which they're getting their data (or the classes they're using to output the results of whatever they're doing). This is most effective if a method is getting all or most of its data from a single class. |
| Thu 04 Dec | NathanJ | I think Christian is missing the point of the Martin Fowler essay to which he links.
A dummy data object is not necessarily bad. The bad smell is when your entire (or almost entire) domain model consists of these dummy data objects. This indicates that you have misplaced the domain logic somewhere else (such as service objects).
--
It has become fashionable lately, especially in XP,
to remove the role of judgment for simple rules
that are absolutes.
--
It is more fashionable to read a few blurbs on XP and then make wildly inaccurate assumptions to prove that XP is bad. This has also been the fashion regarding most other methodologies too. |
| Thu 04 Dec | Scot Doyle | How does the config data get loaded? Would that logic would be some natural behavior for it??? |
| Thu 04 Dec | Joe Grossberg | 'How does the config data get loaded? Would that logic would be some natural behavior for it???'
Without getting too technical, our framework sometimes asks the (singleton) Stuff object questions like:
Does this client prefer their dates formatted like 'Dec. 4, 2003' or '12-04-2003'?
and then plugs that into a set of templates and code reused/shared by all our customers.
I don't think getting and setting data are what's meant by 'behavior'.
Joe
http://www.joegrossberg.com |
| Thu 04 Dec | son of parnas | >It is more fashionable to read a few blurbs on XP and
>then make wildly inaccurate assumptions to prove that
>XP is bad.
Even more fashionable is to dismiss anyone
with a contrary opinion as not educated, because
of course is they were they would agree with me. |
| Thu 04 Dec | Lou | Joe, I wouldn't worry about this too much. This is one of those memes that seems to circulate every so often. Sometimes you end up with data only objects who only know how to load themselves and only know about their own data and ignore the rest of your objects and only interact through getters. It happens. |
| Thu 04 Dec | Scot Doyle | Understood about the getters. I'm wondering about how the data is initially loaded into the object. Is it only through setters or is there a costructor? |
| Thu 04 Dec | NathanJ | Son of Parnas,
Sorry to imply you disagree with me and are thus uneducated. That is just a simple rule that I follow as an absolute ;)
I'm still unsure that XP has anything to say about dummy-data objects though. |
| Thu 04 Dec | Joe Grossberg | 'Understood about the getters. I'm wondering about how the data is initially loaded into the object. Is it only through setters or is there a costructor?'
The data is hard-coded into a class file. Each implementation has one such file for this purpose.
There's a constructor, I guess. When Apache starts, it initializes the framework. The framework initializes a single instance of the client-specific version of that class. It's like a conf file, really ... except that it's an object.
Joe
http://www.joegrossberg.com |
| Thu 04 Dec | Scot Doyle | ok, so do i understand correctly that this object has data that is different for each of your customers? and if so, is that data entered by developers (which is why its in a class file) instead of others (which is why it isn't in a conf file)? |
| Thu 04 Dec | son of parnas | NathanJ, i made a strong statement so expect to
be dinged :-)
UncleBob says debuggers are a waste of time
and we shouldn't think, just code little steps
at a time. An ugly procedural solution is the
best bowling game solution because it is the
'simplest.' That requirements can be implemented
in any order. All our bugs can be kept on index
cards. Blah blah. And if you have a different
opinion you are just wrong. |
| Thu 04 Dec | NathanJ | --
UncleBob says debuggers are a waste of time
and we shouldn't think, just code little steps
at a time.
--
I assume you are talking about Rob Martin?
http://www.artima.com/weblogs/viewpost.jsp?thread=23476
Although he does say debuggers are a waste of time he also adds this:
'Programmers can get into the horrible habbit of depending on the debugger instead of on their brain. IMHO a debugger is a tool of last resort. '
I think you have distorted what people are saying and are now arguing with them about things they did not say.
This is similar to the misunderstandings in Christian's dummy-data article. I don't think good developers would say NEVER use a dummy-data object. Instead they see an over-reliance on DDOs as indicating a possible design flaw. |
| Fri 05 Dec | Roose | Well I think the world 'smell' covers it here. Dummy Data Objects are a smell -- meaning they aren't ALWAYS bad, and can be used judiciously, but it's something to make you stop and think.
I don't think you can argue that it is often the case that people who aren't used to OOP use dummy data objects a lot, and this can wreak havoc in an object oriented codebase, and with programmers used to programming in an OOP style. That is what is meant by 'smell', it's not a hard and fast rule. |
| Fri 05 Dec | Joe Grossberg | 'and if so, is that data entered by developers (which is why its in a class file) instead of others (which is why it isn't in a conf file)?'
Scot, yes. We host the applications on our server for multiple clients.
If they want something changed, on that sort of level, we do it for them.
It's a matter of convenience (simply edit a file, instead of building an interface) and security (these getter methods are often more than just 'return 1'; they can have some logic and we don't want them being able to enter arbitrary code, as opposed to just data).
Joe
http://www.joegrossberg.com |
| Fri 05 Dec | Scot Doyle | Joe, if there is any logic in there, then it seems like it really isn't a simple value object. Given all of this, the only possible refactoring I can see would be to define an interface that exposes any methods common to all of the conf objects (they sound more like customer objects?) and then have the conf objects implement the interface. It is certainly an interesting question. |
| Fri 05 Dec | Joe Grossberg | 'they sound more like customer objects?'
Yes, in hindsight, CustomerPreferences is a better name than Stuff! ;)
What I meant by logic is that you can, for example call:
prettyDate = Stuff.formatDate(aDate)
where you'd have to pass in a parameter, in addition to simple stuff like:
loginURL = Stuff.getBaseURL() + '/login/'
Joe
http://www.joegrossberg.com |
| Sat 06 Dec | Dennis Atkins | Ok, well I use these Dummy Data Objects on occasion for configuration information read from a config file, and so do a lot of other people who do so and find it beneficial.
That said, we got ourselves a real live Design Pattern here folks. So let's just name it the 'Settings' pattern, and call it an well-regarded staple of Orthodox Object Oriented Design and pooh-pooh those who have not been enlightened as to the advantages of the Settings Pattern. |
|
| ...ism at FogCreek? | Thu 04 Dec | tapiwa |
| Fog Creek Software is an equal opportunity employer and supports workforce Diversity.
Can someone please tell me what that sentence means.
I am a member of an ethnic minority (as they call us).
I still cringe though, when I see a notice like this. Makes me think the company is almost apologetic for the sins of some idiots in the past.
Also sounds like very patronising. We are cool with you. Really!
Racism, sexism, whateverism! Should one really have to declare that you are not ......ist? What happened to innocent until proven guilty? |
| Thu 04 Dec | Chris | It's the required CYA spam that all companies in America have to print. That way if they get sued, they can say, "Hey, we're not racist. It says so right there on our website." |
| Thu 04 Dec | tapiwa | Does the law say you have to print it? |
| Thu 04 Dec | Milton | It's that or they have to sing a hiphop song that has "I'm lovin' it" in it. |
| Thu 04 Dec | Philo | Tapiwa, the law says you cannot discriminate based on race or national origin (among other things). The problem is proving discimination (or worse, proving you don't discriminate). What a lot of businesses find is, despite a lack of racism (or even affirmative action to overcompensate), they end up with an all-white workforce.
So things that may seem trite to minorities are generally (not always) a sincere attempt by people to indicate that yes, 'we're okay with that'
The truth irony is that that statement was signed off by a CEO who is one protected and one quasi-protected minority in and of himself.
Philo |
| Thu 04 Dec | Dustin Alexander | I always wondered how these laws came into existence. While I have no problem with minorities, I always felt that people should be able to create a working environment in their own company that they feel comfortable being a part of. Now, if the company is publicly held, I can see mandates being put in place to ensure that the interests of the general shareholders are represented, but I can see no moral basis for such laws affecting private companies.
This is likely to set of the flamewar to end all flamewars, but let me set forth a fictional proof of the above:
Suppose I am a partner of an accounting firm that deals with corporate tax law. My business is expanding and I need to hire an administrative assistant. Aside from that, in my personal life, I've had some run ins with women that make me less than comfortable around them. In fact, because of some sort of Freudian nightmare involving my mother, I am terrified of them, as in I cannot communicate with them at all. What then is wrong about advertising for a male only administrative assistant?
To move to another shade of gray, what if I am a member of a religious organization that feels that women have no place in the workplace. What if that organization goes so far as to say that it is a sin to work with or hire women? Should I condemn myself to a perceived eternity of hellfire to be politically correct?
I equate this kind of mandate with someone telling you how much cream you should put into your coffee. Literally, it is your coffee...you determine what to put into it. The same should apply to a company you own and a workforce you employ. Let the market decide how moral your decisions are.
Just some thoughts from the capitalist/Objectivist pig on the board. |
| Thu 04 Dec | tapiwa | 'sincere attempt by people to indicate that yes, 'we're okay with that'
Maybe I am missing something, but the fact that one needs to indicate that he is OK with that, suggests that there is a problem.
Kinda old fashioned, but there are two kinds of people. Good folk, and @$$holes. The fact that one might be black, female, jewish and lesbian is incidental. If you are good we talk. The latter, see you later.
Should I declare that I am not racist, sexist, anti-semetic and not homophobic any time I meet someone like this?No. It would really be patronising. Sounds like the stuff you say to a terrifying dog... 'good boy doggy. I like you. Honest. {pat on the head}'
Why then do companies feel the need to do this? One of the most offensive things people ask me, is if I am OK being called black. wtf?!?! |
| Thu 04 Dec | Name withheld out of cowardice | Philo-
Which protected and quasi protected minority group are you refering to? Is it Jew and gay? If so which is protected and which is quasi-protected?
Someone raised the issue of innocent until proven guilty. That standard applied to criminal law. Even in civil cases the burden of proff would lie with the person suing.
Job discrimination is different, as far as I know. Until the first Bush (i.e George Herbert Walker) if a member of a protected (not all are) minority group wanted to bring a discrimination suit, it was done through some kind of governement agency and the burden of proof was on the person bringing the suit. Bush changed it though, so that a mere discrepency between the proportion of minortity workers on the job and those in the surrounding community was evidence of discrimination and then the burden of proof shifted to the employer. He then had to prove there was another explanation.
Is this fair? I don't think so. THe problem is that we have a very real ongoing problem, racial discrimination in the workforce. This problem isn't necessarily the result of evil but rather the inability of most humans to use their intellects to overcome their base instincts. This leads to a problem that most people, if they acknowledge ist existence, agree we should fix. Unfortunately the solutions paint with a very broad brush, leading to defensiveness on the part of innocent employers.
Add to this the fact that you are not allowed to question assumptions, such as- 'in the absence of employer discrimination, all groups would be represented in all jobs in exact proportion to their numbers in society' and you find yourself in a situation in which honest open debate is impossible and therefore solutions that are fair are unlikely.
Thus the partronizing crap the original poster complains of. |
| Thu 04 Dec | tapiwa | Dustin, hear hear. |
| Thu 04 Dec | Jeff Kotula | The short answer to this question is history. The US (not uniquely) has a long history of institutionalized isms. The equal opportunity laws are an attempt to correct imbalances that still exist. You can't legislate morality, but you can legislate some level of equity in public institutions such as corporations. |
| Thu 04 Dec | tapiwa | 'public institutions such as corporations'
My company. My house. No difference. Not public. I should be allowed to determine whom I let in. To force me to do otherwise is to suggest that other folk have some prima facie right to my property.
Like Dustin wrote, let people do as they please, and let the market judge their morality |
| Thu 04 Dec | Alyosha` | If you want to know how those laws came into existence, look at our history. There was a time when many folks had an irrational hatred for black people, and they couldn't get a job. It's one thing if one person has this kind of neurosis. No one will defend it, but at least you're not doing much harm. It's another thing if ten million people share it. And what they decided to do back in the 60s was do something about this organized oppression via the democratic process, staging sit-ins and protest marches and voting for candidates who supported equal civil rights until it was made illegal to discriminate on the basis of the color of their skin.
Now, if your organization engages in interstate commerce, it can be regulated by the federal government, and the law says that if your organization is over a certain size, you can be prosecuted by the federal government for unfair hiring practices. That makes the 'well, what if I don't work well with them' argument fly out the window, 'cause at that point the organization is not all about you; you'd have to have hired 15 other people who share that neurosis.
'It's okay to punch people in the nose - after all, it is my fist' is morally equivalent to 'It's okay to discriminate against people if I feel like it - after all, it is my company'. You cause harm to another person, and there are only a few acceptable reasons to discriminate (based on job performance) just as there are a few acceptable reasons to punch someone in the nose (such as self-defense).
Also, 'religion' isn't a free license to engage in illegal practices. To take an extreme example, if my religion taught me to sacrifice virgin girls to Zorkon the Space God, I'd still be culpable of murder. |
| Thu 04 Dec | Dustin Alexander | OK, had some time to think of this stuff while I was in having coffee.
This is a great discussion that a lot of people are afraid of having. It stems from our perceptions of the role of government in the legislation and definition of both public and private morality.
As a side note, I feel that if society in general wished to change a social or emotional aspect of a general populace, the only legitimate and moral answer is to make available more education as to the foundation of their new moral argument. Simply putting a law into existence changes nothing. And I believe that the rights of the individual supercede to a great degree the moral rights of society. Those accepting of the core mandates of American philosophy must agree that this is a fundamental conception of democracy. In so believing, it is not hard to conclude that any wide scale moral mandate must not only be decided by the majority of the general populace, but also only applicable to the public sphere. Also, in the application of such a morality to the private sphere, choices should be presented first and the burden of proof placed on those wishing to implement change and not those whose change is called for. |
| Thu 04 Dec | Dustin Alexander | Alyosha',
Your argument is a great example of context dropping. First, you equate social bigotry with physical violence. This is an argument to which you give no solid foundation. My not hiring you is in no provable way morally equivalent to doing physical violence upon you. In fact, if I was a bigot, hiring you might be more equivalent.
Also, by speaking of the governments ability to mandate interstate commerce, you fail to address its right to do so. By shifting the context from a privately held to a interstate organization, you remove one layer of argumentative foundation. By determining number of employees you remove another. And yet another is lost when you speak of the impossibilty of hiring many bigoted people, something the early 1900's should have taught you is very easy to do.
In summary, I reject outright your definition of acceptable reasons to discriminate. My proposed definition is as follows, with the underlying principle that moral conflicts can only be ethically approached from a minimalist perspective:
It is acceptable to discriminate against another only when to not practice discriminatory action would bring harm to oneself (either physical or emotional). Moreover, discriminatory action can only be taken within a personal sphere in which you have control and ownership and only in such a manner as effectively removes the target from that sphere.
In addition, my definition of personal sphere is your body, that place in which you are apart from the public, and that you contribute to the public and which would be negated by your absence. |
| Thu 04 Dec | Philo | Name withheld -
Jewish is protected - the Equal Rights Act prohibits discrimination based on religion.
Homosexual is quasi-protected - there is no federal legislation prohibiting discrimination based on sexual preference, but there is a growing body of state law that does.
Philo |
| Thu 04 Dec | Alyosha` | You seem to say that 'you can't legislate morality'. Well, morality is legislated all the time. 'Thou shalt not kill' is an example of legislated morality.
You seem to be putting your emotional harm above my economic harm. You feel awkward, but I can't feed my family. Who has the worst of it?
If you have the right to equate emotional harm with physical harm, then I have the right to equate economic harm with the same.
The federal government has the right to regulate interstate commerce as per Article I Section 8 of the US constitution. And I mention that in order to add context, not remove it. If we're going to talk about the law, then I'm going to point out that the anti-discrimination laws only applies to interstate corporations above a certain size. Otherwise, you're talking about some imaginary law that prohibits discrimination everywhere, and I'm not interested in that conversation. |
| Thu 04 Dec | tapiwa | Alyosha` 'It's okay to punch people in the nose - after all, it is my fist' is morally equivalent to 'It's okay to discriminate against people if I feel like it - after all, it is my company'.
Wrong. Here's why.
You have no job.
I refuse to give you one because I don't like tall people.
You still have no job.
What have you lost? Nothing!
To suggest otherwise would be suggest that I owe you a job.
Which is wrong. |
| Thu 04 Dec | Alyosha` | And if you punch me in the nose, what have I lost?
Loss is not the only form of harm. |
| Thu 04 Dec | tapiwa | I still don't see how me not giving you a job because I don't like you harms you. |
| Thu 04 Dec | Dustin Alexander | Correct. I have no moral obligation to take care of you. Each individual takes care of himself.
Alyosha, I'll accede that the interstate context is acceptable, so long as it is seen as context for the discussion and not as a cart blanche granting of rights to the federal government to moral legislation.
I believe the government only exists to protect us from foreign aggessors and to mediate otherwise unrecognizable differences in the public sphere. Killing you involves the public sphere. Denying you access to my private life does not. |
| Thu 04 Dec | Dustin Alexander | Sorry,
Unrecognizable = unreconciliable |
| Thu 04 Dec | Alyosha` | If it were only you, Tapiwa, I wouldn't be harmed very much ... I could just get a job elsewhere. But what if there were ten million people like you? My ability to get a decent-paying job would be dramatically affected. Because so many people historically have discriminated against race and religion, and it HAS caused economic oppression, they are protected classes. But no one is going to pass an Anti-Tall-People-Discrimination Act, because there's no need for it.
No one says that you owe me a job. Maybe you don't have the money to hire me or I don't have the skills you need. But if you have the money and I've got the ability, then what you DO owe me is equal consideration. |
| Thu 04 Dec | Dustin Alexander | Untrue, Alyosha. We OWE you nothing. Man is not born in debt to anyone, nor is he placed in debt by his success. Do think otherwise is to burden the successful with the weight of the unsuccessful. This is a burden no man can bear, nor should he.
Although, I do agree that what we are discussing only exists in an ideal world where there is no present and large scale need that must be immediately satisfied (such as we saw in the mid 1900s). However, such laws should be put temporarily into place to resolve specific situations, with long term changes enacted through education as opposed to keeping those laws around. Equal Opportunity promotes Equal Discrimination over a period of time, with the majority being discriminated against until the populations reach equivalency. |
| Thu 04 Dec | tapiwa | My point is that I will offer you real consideration. I will then consider the fact that I don't like tall people, and not give you the job.
Sounds fair? Yes. Now replace Tall with whatever Minority group.
Still sound fair? Yes
I would rather not get a job because I am black than get one purely because I am. The former is a prejudice... your loss. The latter is an insult. You are almost suggesting that the bar be lowered because I have a certain pigmentation!
And that's my problem with these diversity in the workplace drive. It's insulting. It's some legislator stamping his morality on me.
Get race and discrimination out of the law *completely*. Let me associate with whomever I please, even if my reasons might offend someone. |
| Thu 04 Dec | Alex | To the original poster: I don't get it.
If I had my own company, I'd be damn *proud* to put up that
disclaimer on my website, and sincerely proud that I have Jews,
black, gay and handicapped people working for me.
It's like saying 'we're a 21st century company, we use Javabeans,
we know DCOM, and we're not apes who don't see the man past his
skin.'
Imagine the company restroom saying 'WHITE' on one door and
'COLORED' on another. Such things existed.
So: even if there was no law asking to put that notice up, I still
would, because it's one more sign of excellence. |
| Thu 04 Dec | tapiwa | Alex
'Jews, black, gay and handicapped people working for me.'
That is the offensive bit. You almost suggest that its something unexpected to find these folk working. Its the Oh my God, its a woman flying this plane attitude.
I have problems with that.
If you wanted to brag, brag about choices people have made.... Google style - We have xyz PhDs. |
| Thu 04 Dec | tapiwa | Imagine a company restroom saying Male and another one saying Female.
These things exist. |
| Thu 04 Dec | Dustin Alexander | Then again, imagine one for each: Male Preference, Female Preference, Confused, Pleading the 5th, General Admittance...
;)
There is a line between comfort and propriety. |
| Thu 04 Dec | Alyosha` | I *so* should be doing work right now. But I'm a sucker for a religious or political debate.
Tapiwa: you've mistaken equal opportunity with affirmative action. (I'm for affirmative action, but based on economic background, not race; and in the university, not the workplace. But that's a different debate).
Equal opportunity is not, 'I'm black, so give me a job'. It's 'don't refuse me a job just 'cause I'm black'.
Dustin: you've distorted the meaning of 'owe' that I used. You don't owe me in the pay-back-a-debt sense. You owe me in you-have-a-moral/legal-obligation sense - the same sense that you owe a person your respect for his private property. Everyone is born with THAT obligation, wouldn't you say?
The good news is that we've come a long ways from the 60s, thanks in large part to these sorts of laws. I, too, would like to see equal opportunity laws go away someday, in the same way an injured man would like to cast away a crutch: not that there's anything wrong with a crutch, but I hope we won't need one forever. |
| Thu 04 Dec | Chas | 'And I believe that the rights of the individual supercede to a great degree the moral rights of society. Those accepting of the core mandates of American philosophy must agree that this is a fundamental conception of democracy.'
Actually democracy is the opposite. Democracy says that the rights/wants/needs/whatever of the individual should be subordinate to the rights/wants/needs/whatever of the majority. No? |
| Thu 04 Dec | Ricardo Antunes da Costa |
Male and Female are differents, at least biologically, so separate restrooms make sense.
Blacks and whites differ only by skin color, so separation don't make any sense.
|
| Thu 04 Dec | Dustin Alexander | I like your crutch analogy. Its a good one. Lots of laws these days are stop-gap solutions to social problems that solve themselves over a period of time. Unfortunately, the idea of sunsetting laws seems to scare American politicians something fierce.
As far as the owe issue, I believe that to respect another's personal property is not an obligation, but a participatory agreement between two people communicating within a communal context. So, in a way, we are not born owing someone respect, but we give it in exchange for respect to our own privacy. That this is part of American law and democracy means that as long as we are willing participants in American culture, we are opt-ing in to that set of agreements.
This differs from owing you consideration, in that one is an opt-in agreement to share common social mores on a wide scale, whereas in the other I CAN refuse to consider you for any reason. It is not a social agreement, nor is it a fundamental component of democracy. In fact, quite the opposite. In private matters, democracy dictates that I have the right to arbitrate my own moral law, so long as it only affects my private sphere. I have no moral obligation to better you or assist you in the same manner as I have no moral obligation to provide kindness to the poor. Withholding kindness is not in itself an unkind act. Either direction is a choice that is morally permissable within our chosen culture. |
| Thu 04 Dec | Chas | far as I know, skin color is biological, ain't it? |
| Thu 04 Dec | Dustin Alexander | Chas, no. This is a misconception. Democracy is about creating the 'most ideal' situation. This is such that the morality of the majority can only be enacted in situations where it MUST, such as in social situations which require an external arbiter. The constitution and bill of rights strongly support individual morality on a private level and have many protections in place for preventing government from subjugating localized morality (be it your local community or your person, property, and business). |
| Thu 04 Dec | Chas | The constitution describes a Constitutional Republic, though, not a democracy. From what I know, democracy is basically a situation where everyone gets a vote, and then majority rules. What you're describing sounds like a sort of "Democracy-as-Necessary" kind of thing. Which does seem like a nice compromise to me. |
| Thu 04 Dec | Dustin Alexander | I think that's the way our government is set up. The other is impossible, since the government would have to then mandate every possible moral conflict via majority vote. That would be nasty.
Speaking of this, this is the diseased thinking that leads to the downfall of democratic states. Such thinking IS observable in American government. We've got federal legislation on circuses. What does that tell you? |
| Thu 04 Dec | Chas | '...since the government would have to then mandate every possible moral conflict via majority vote....'
Unfortunately, this seems to be the trend these days. Even in places where this is no conflict, only competing alternatives. |
| Thu 04 Dec | Chas | -this +there |
| Thu 04 Dec | Alyosha` | 'Unfortunately, the idea of sunsetting laws seems to scare American politicians something fierce'.
Unless it comes to cutting taxes, in which case they need to sunset provisions in order to make the true cost seem lower than it is. An example: the inheritance tax will be eliminated completely in 2010, but it comes back in 2011, thanks to the Throw Momma From The Train Act passed two years ago (okay, that wasn't its real name, but it might as well have been). A lot of tax cuts are due to come back in 2011, but of course the administration is hoping to make them permanent at a later date. The camel's nose is already in the tent. ANYWAYS ...
Regarding the 'owing' issue, I want to point out again that I never said you 'owe' me a job, you don't 'owe' any support in bettering myself. The only thing you 'owe' me is EQUAL CONSIDERATION. You don't 'owe' me kindness, but you do 'owe' me the lack of irrational malice, according to the implicit social contract which governs this society. That's all I'm saying.
To chas: the US is a constitutional republic in which representation is determined democratically. It combines elements of all three political philosophies. No regime has ever been a pure democracy, as George Orwell pointed out:
'In the case of a word like democracy, not only is there no agreed definition, but the attempt to make one is resisted from all sides. It is almost universally felt that when we call a country democratic we are praising it: consequently the defenders of every kind of regime claim that it is a democracy, and fear that they might have to stop using that word if it were tied down to any one meaning.' |
| Thu 04 Dec | Mr. Fancypants | The sad fact is that racism and sexism are still very much real issues in corporate America. Including an EOE declaration is useful in showing pontential applicants that a company has at least given some thought to the issues (since, in my experience, the most racist/sexist people tend to be living in a state of denial ('Ala: Oh, I'm not racist, I'm just a proponent of WHITE POWER.')). Well either that or they've been sued for discrimination in the past (doesn't apply to Fog Creek, AFAIK)
It is the sort of thing that wouldn't be needed in an ideal world, but we don't live in one. |
| Thu 04 Dec | Exception guy | Dustin wrote: 'We've got federal legislation on circuses. What does that tell you?'
I don't know - maybe that there's a reason for it? (If you want to make a convincing argument, you'll have to explain what the circus legislation is, why it was enacted, and what its effects have been; then I'll decide if it's a good idea)
(Alyosha: right on.) |
| Thu 04 Dec | analyst | Dustin, the argument that it's your company and so you shouldn't be compelled to not discriminate fails in that nothing exists in a vacuum.
Your company depends for its existence and profits on the regulation provided by our society, the schooling provided to children, the roads and, msot importantly, the police force that stops other freedom lovers from stealing your daily takings.
Accordingly, society will have some say in how you hire people. |
| Thu 04 Dec | apw | analyst:
-except it shouldn't be the gov'ts job to provide schools and build roads (both of which it does a poor job). |
| Thu 04 Dec | Ricardo Antunes da Costa |
analyst: right on!
You wrote just what I was thinking, but did a much better job than I'd ever do.
|
| Thu 04 Dec | Robert Jacobson | I'm just waiting for Dustin to get hit with his first discrimination suit. His "it's my party and I can do what I want to" bit won't fly very well with twelve jurors. |
| Thu 04 Dec | Chas | Alyosha,
Thanks for the highlights on how American government works. My original point, though, which seems to have been lost, is that democracy (whichever definition of it you choose) is antithetical and often destructive to the individual rights Dustin mentioned earlier. |
| Thu 04 Dec | pdq | Getting back to the original comment, I don't see how putting a statement to the effect that a company doesn't discriminate has any positive value other than possibly to avoid being sued.
Just because it says so, doesn't mean it's true
(By the way, there is no 'protection' in being Jewish. It's not like anyone is going to get sued if you get laid off or anything.) |
| Thu 04 Dec | Alyosha` | 'Except it shouldn't be the gov'ts job to provide schools and build roads (both of which it does a poor job).'
What's your basis of comparison? Can you show me a working example of a country or state which has privatized its road-building or education and has done better because of it?
It's not enough to point out that private schools tend to be better than public schools -- private schools get to choose who attends, and tend to enroll children from families wealthy enough to pay the price, and whose parents take their children's education seriously.
Public education is a compelling state interest. If you think public education is expensive, public ignorance is even more so. It makes sense that education is subsidized by all citizens, not just those who have children. |
| Thu 04 Dec | Dustin Alexander | OK, where to start:
Robert:
I'm not arguing against adhering to the laws in place, I'm arguing about the morality of those laws. When those laws are gone, I will have a grand old time hiring an army of African American Gay Nudists, and my army and I will then storm the proponents of the conservatist right wingers and demand that I be elevated to my rightful status as President. I mean, come on, its owed to me after all.
:)
Analyst:
I think you are confusing my rights as a citizen with my rights as a business owner. I am entitled to protection from violence as a part of my social agreement with my country. But I am not and never have been in debt to my country for those rights. It is an agreement that I have made with you, my fellow citizens, and the body that governs my social interactions. In fact, since these are rights granted to me by my participation in American government, it is the government that is in debt to me, owing me these protections.
As a business owner, I am engaged in a wholly private affair. The only social agreement I am bound to is the one I establish with my clients. My moral choices are made by my own compass and my clients enforce our social agreements by either purchasing or not purchasing my products and services. There need be no government regulation of that bond. And the government certainly is not assisting me in my endeavor. Far from it, judging from the taxes my company pays in return for the RIGHT to trade across communal boundaries.
Exception Guy:
Don't remember the exact law, but still. It seemed a little far fetched that anything involving a lion and an elephant should be mandated at that level. YMMV.
Alyosha:
If I owe you equal consideration, you then owe me the right to discriminate based on arbitrary factors. I will grant you your consideration, but I will not admit a debt that I do not have, which is that of trading my own beliefs in a private endeavor for those of the conflicting majority.
On Education, Roads, and the Commons:
Belief that the government's ongoing support of public projects (regardless of its right to provide such support) creates a debt from its citizens is just about as wrongheaded as I can imagine. The government provides that support in a majority directed effort to assist the taxpayers, in effect resolving a monetary debt to those citizens. That the majority directs it is a social direction, and creates no implicit debt to that body. |
| Thu 04 Dec | Alyosha` | Dustin: your last comments were hard to understand. Would you mind rephrasing them in plain English? I try to parse them, but it seems to be you are asserting certain rights and avoiding the responsibilites that come with those rights with language about "well, I'm not really in debt". |
| Thu 04 Dec | macareni | 'let people do as they please, and let the market judge their morality '
HELLO!?!? Have we forgotten about SLAVERY!?!?!? |
| Thu 04 Dec | Dustin Alexander | Alyosha, the fact that society does anything for me does not mean I have any additional debt to it beyond those I've already mentioned [taxes and social agreements]. I was speaking to the guy who mentioned that as a business owner I 'owed' it to the government not to discriminate. That, in my mind, was not in the initial social contract and would constitute additional debt that I have not agreed to. |
| Thu 04 Dec | Dustin Alexander | Macareni,
Slavery is a violation of individual rights. Discrimination and bigotry are not inherently so. |
| Thu 04 Dec | Mr. Fancypants | '-except it shouldn't be the gov'ts job to provide schools and build roads (both of which it does a poor job). '
That's insane. You can make a case for schools, but roads? If not the government, who? Feel free to point out any instance anywhere in the world where a comprehensive road network was built by the public sector. |
| Thu 04 Dec | Dustin Alexander | I think he meant federal government. Local or community goverment could conceivably build non-interstate or intercity roads. It would cost a lot to manage, though. |
| Thu 04 Dec | Name withheld out of cowardice | Philo-
What is the 'Equal Rights Act'? I googled it and it didn't turn up in the first two pages. There was an 'Equal Rights Ammendment'- a proposed ammendment to the Constitution which guaranteed equal something or other for women. It never passed.
Jews are protected to some extent by the points on freedom of religion in the Constitution and the equal protection clause.
I suppose if a Jew could show he was fired for being a Jew he could win a case but I think a Jew would have a very difficult time winning a case on the numerical objects permitted blacks and hispanics and so forth. I think a homosexual would have about the same luck. |
| Thu 04 Dec | Alyosha` | 'Slavery is a violation of individual rights. Discrimination and bigotry are not inherently so.'
You're way in the gray area now. What is a 'individual right'? Where do they come from, and how do you find out what they are?
According to the DoI, they're God-given; according to humanism, they're innate, according to utilitarianism / social contract philosophy, they're what people hash out between themselves. The latter describes my philosophy best.
And the way I see it, we hashed out the slavery issue about 150 years ago; the discrimination and bigotry issue about 40 years ago. Refusing to hire someone on account of their skin only is a violation of their civil rights. Get with the times. =-)
Among your responsibilites as part of the social contract of being a citizen is to uphold the constitution and the laws derived according to its process; that's why we let you live here. Now you can consider it an unjust law and refuse to uphold it - but you are still subject to any lawful penalty for violating what is accepted as someone else's individual right. (This is the doctrine of civil disobedience). |
| Thu 04 Dec | Mr. Fancypants | 'I think he meant federal government. Local or community goverment could conceivably build non-interstate or intercity roads. '
Not only could they conceivably do that, but they DO do that. |
| Thu 04 Dec | Name withheld out of cowardice |
Philo- wait, I found it. I will read it and get back to you. |
| Thu 04 Dec | Dustin Alexander | Alyosha,
You and I see to have similar views on a lot of general political issues. I too agree in the social contract view of society.
What I meant by my comment is that bigotry and discrimination are not immoral in the general social sense. It is not illegal to be a member of the KKK, nor is it illegal to inveigh upon women for being members of the work force. Holding discriminatory opinions is not considered immoral, only discriminatory action. I think few would argue against this point.
The next point is a grayer area. While I personally believe that discriminating based on arbitrary factors (those that don't effect performance) is immoral, I also believe that the individual's right to choose his own morality supercedes my discomfort with his choices, insofar as they don't affect society in general. And I am arguing that a private business is an extension of one's private life and that social morality (in the sense that it is ethically defined by the federal government) has little place in that arena. I think if you own a restaurant, you should be able to serve whom you please.
My belief that the individual right to decide his own morality in his own life supercedes governmental rights to define morality is, in fact, part of my contract with my government. In upholding my support for differences of opinion, I am confirming my participation in the granting of basic rights to all citizens of the US.
I think the only sticking point we have here is that we disagree as to whether or not a business is a private affair. I argue that it is, and as such I should have the right to arbitrarily discriminate. This opinion stands regardless of the current legal situation. It is also true that, due to my agreement with my government, I also agree to pay for any insubordination I choose to be a part of. This is, of course, a moot point, since I have no problems with bigotry of this nature. Mine are 'ivory tower' arguments spoken with a love of political philosophy. |
| Thu 04 Dec | Nearly Missed | Tapiwa-
The reason white guys ask you if it's ok to call you black is cuz we are very confused about how to talk to a black person about being black. I have lived throo a number of decades in which white people have been beat up for not checking on the current terminology in the area of race.
Now I understand that there is no need to call you anything at all unless it is pertinent to the topic. There is however, discomfort for people like me who lived in an area where black people did not exist. When I meet a black person I have to edit my conversation for fear of offending. If we are to become friends 'editing' is not going to be possible. If we are to become friends the topic of racism has got to come up. The topic of my discomfort has to come up.
That said I am very irritated by silly old white guys stating, out of the blue, that they are fair. Even to you black people. If they weren't racists they wouldn't have felt compelled to say anything.
I am a racist. I notice race and I have preferences in the movies I watch and the girls I date. I think we are all inherently racists.
NameWithheld made the point that our intellect must be called in to deal with our base instincts. This is the single most important concept in our future as a civilization.
We have to recognize our base instincts and make intellectual decisions about how to tether or unleash them. We also have to recognize our innate cerebral mechanisms in dealing with base or reptilian instincts. We are a social species. Our minds have evolved to deal with the ‘base’ in a way that promotes bonding in a society. This too, at a higher level, has to be recognized and dealt with by intellect.
Anyone who does not recognize his own innate racism is in danger of becoming a bigot. Just like any male who does not recognize his innate sexual aggression is in danger of becoming a rapist.
Now do we need laws to help us out with all of that? Should we make it illegal to refer to black people as Afro-American’s? Should we have laws against rape?
As long as stupid people lacking self-awareness and cognitive ability run large corporations I think the laws may be needed. But which laws? The last paragraph identifies two laws on either end of a very wide spectrum. The first lets you glimpse how making law can go awry. The second shows that laws are very much needed. Together they illustrate the complexity of the legislative task.
In 1990 I was given the task as a consultant to hire a good programmer. I was ordered to hire a minority or a woman by the owner of the company. I had 200 resumes and I only one of them was a minority. He sucked. I found a woman with a PHD who was absolutely brilliant and perfect for the task. But this was a company of handpicked people who were all white, young and pretty. The lady I found was older and very not pretty. We hired the minority who sucked and fired him 3 weeks later.
How could the laws have worked in that situation? |
| Thu 04 Dec | pdq | NWOC,
As an aside, where I live in the US hispanics are the majority or soon will be. Does this make them not a protected minority?
In terms of roads, for the most part I have to agree that there aren't a lot of examples of complete private road systems. However, there are private toll bridges, turnpikes, residential streets, etc. I live on a private road that I (and my neighbors) recently had to pay to resurface.
Getting back to the original point again, does anyone think a statement on the web site has any value? |
| Thu 04 Dec | A cynic writes | Let's do a thought experiment.
You attend an inteview at which the interviewer is black. Just before it starts he looks you in the eye and says 'Don't worry you're definately in with a chance - some of my best friends are white.'
Question - would you feel good that he told you that?
Personally I can see why an Equal Opp statement is felt necessary and I can also see why it might be embaressing to the 'beneficiary'.
BTW I don't mind if you call me white but I'd prefer you called me 'Bill' . |
| Thu 04 Dec | Nearly Missed | I think the law or legal realities require the statement on the website.
I also think it is ridiculous, demeaning and useless.
The laws may have helped a few minorities get a few jobs but in the long run they have produced nothing of value.
Let the market work this out. I'm not aware of any law requiring that we out-source to India yet the Indian's are kicking my financial ass rather well. |
| Thu 04 Dec | Dustin Alexander | Hell, I don't care if you call me Asshole, so long as you address me with respect. |
| Thu 04 Dec | A cynic writes | Dustin, that could come back to haunt you. |
| Thu 04 Dec | Alyosha` | Yes. That's SIR Fucking Asshole to you ... *grin* |
| Thu 04 Dec | Dustin Alexander | Bah. Welcome to my life :-)
My implication is that the manner in which we address people is of more importance than which words we use. |
| Thu 04 Dec | Phibian | I'm coming a bit late to this discussion, but...
'Male and Female are differents, at least biologically, so separate restrooms make sense. '
There is actually no biological difference between men and women that forces a *requirement* for separate washrooms. Last I checked anyway. Furthermore, all of the toilets in my house look exactly the same, yet both genders seem to manage just fine.
You could just as easily argue that the discomfort a man might have using a urinal in front of a woman is comparable to the discomfort bigots might have using a urinal in front of someone they disliked. So I think that was a bad example :) |
| Thu 04 Dec | WitFit | Why didn't the old south have separate roads for black people? How about separate 'air'? Seems that that would be as important as drinking fountains and restrooms. |
| Thu 04 Dec | Nearly Missed | The thing is that some things can't be fixed by making laws. They can only be screwed up. Having racial quotas is not going to fix the problem.
We make a law that 30% of the work force has to be black. So I hire all black janitors and no black executives. Now we need a law about the equal distribution of salary. So I pay my janitors 100K a year and piss all over the seat. So we need laws about equal distribution of titles and job definitions.
We need to legislate what questions can be asked during an interview. The census bureau tells us that a lot of minorities don't have the training that we require. So we have to prohibit employers from hiring according to ability to perform the job. How about sex, beauty and age? How about illegal aliens?
We must make laws to solve everyones problems. Lots of them.
We also need laws to solve Dustin's problem of not being able to do ANYTHING about his company without consulting an attorney. |
| Thu 04 Dec | Rabble rouser | OK, this is about the EO statement on this website. Getting back to that in particular, I don't think such statements really tell you much. Maybe it means the person is complying with some law, maybe it means they are extremely pro-rainbow, maybe it means nothing.
But here's a question for you ... should Joel give equal consideration to an employee, who following the teachings of his imam (agreed that only radical imams teach this, but there are some) believes as part of his religion that jews are dogs and gays should be stoned to death?
Personally, if I knew that someone was a bigot because of his religion, I would be reluctant to hire him. And that would be me discriminating against his religion. |
| Thu 04 Dec | Alyosha` | Rabble Rouser: when would that come up in the subject of an interview?
And yes, if you truly believe that your boss is a dog, I think that would affect your performance at work (a legitimate reason to discriminate). His beliefs may also lead to harassment in the workplace. |
| Thu 04 Dec | Ricardo Antunes da Costa |
Phibian,
It might have been a bad example. The problem is that my boss was close, and I couldn't waste much time posting on this forum :-). |
| Thu 04 Dec | Alex | Enough already!
Get along. |
| Thu 04 Dec | hate'em all | I think you should all go and f*&^% yourselves. |
| Thu 04 Dec | Kevin | There's some nice middle ground provided by the fact that EEOC rules, with the exception of equal pay for men and women performing the same job, only apply when the company has more than 15 or 20 employees.
To me, that seems like a nice compromise that lets a very small business discriminate against whomever they like while requiring that medium and large businesses treat people fairly. |
| Fri 05 Dec | analyst | Dustin
Your rights as a business owner are no different from your rights as a citizen.
The reason you can demand that customers pay your bills long after you've provided the services or provided equipment are that we have courts that will enforce contracts and police that will enforce judgements of the court.
Similarly, the reason you can live in a nice house that others might like to live in, or drive a nice car, is that our society has police who stop people taking them from you.
It is a perfectly valid question as to whether this is a good thing or not, but it's an inescapable part of living. We're all together and we make rules to work together. Part of those rules let you run a business. Another part dictate that you will be fair to all members of society in a way the majority thinks is fair. |
| Fri 05 Dec | David B. Wildgoose | If I have something to sell, I should be able to choose who I sell it to. If I want to buy something, then it should be up to me whom I buy it from.
The goods in question are irrelevant. It could be a 2nd-hand car, or it could be my labour. I'm not forced to go work for someone I don't want to, and neither should I be forced to hire someone I don't want to.
Call it the freedom to be irrational. It's your life, and your possessions after all. |
| Fri 05 Dec | Jisa | Dustin,
if you haven't already done so I recommend you read 'Atlas Shrugged'. I personally found it to be one of the most disturbing books I ever read, but based on your posts I think you may enjoy it. |
| Fri 05 Dec | no name | 'If I have something to sell, I should be able to choose who I sell it to.'
Not if you're in a public retail shop. |
| Fri 05 Dec | tapiwa | Nightclubs in London generally discriminate against men.
They are as public a place as it gets. |
| Fri 05 Dec | tapiwa | I really implore you all to take time to read this short article by Frédéric Bastiat.
http://bastiat.org/en/government.html
Kinda talks about the US constitution, govt, freedom, slavery.... Plus, this was all written in 1849. Truly genius. |
| Fri 05 Dec | no name | What's the difference between discriminating against men in London versus discriminating against Blacks in the old south USA? |
| Fri 05 Dec | apw | Boortz's take
http://boortz.com/more/commencement.html |
| Fri 05 Dec | tapiwa | From Mssr Bastiat.
'Life, liberty, and property do not exist because men have made laws. On the contrary, it was the fact that life, liberty, and property existed beforehand that caused men to make laws in the first place.'
-- The Law |
| Fri 05 Dec | tapiwa | apw... thanks for the article.
Fav bits...
'You have been taught that the real value of any group of people - be it a social group, an employee group, a management group, whatever - is based on diversity ...
... you are about to learn that diversity is absolutely no replacement for excellence, ability, and individual hard work.
From this day on every single time you hear the word 'diversity' you can rest assured that there is someone close by who is determined to rob you of every vestige of individuality you possess. ' |
| Fri 05 Dec | no name | The irony of hearing the Ayn Rand Cult ^H^H^H^H^H^H^H^H libertarians talk about individuality always cracks me up. |
| Fri 05 Dec | tapiwa | what cult?? |
| Fri 05 Dec | no name | You're a big enough boy to do some critical reading.
just google cult of ayn rand.
as for libertarian economics, you can google that too. |
| Fri 05 Dec | tapiwa | is this it?
http://www.amazon.com/exec/obidos/tg/detail/-/0812693906/102-7058036-6205730?v=glance
For some strange reason some folk on this board seem to associate any talk of individual freedom with some mysterious Randian cult. You might want to read up on proper rhetoric, especially the undistributed middle.
http://www.intrepidsoftware.com/fallacy/undist.php
We don't all like Ayn Rand. I personally find her quite verbose. If you follow some of the links on posted, you would realise that the proponents of liberty existed before Rand. Basitiat for example is one. The Thomas Jeffersons of this world wrote about liberty, and indeed founded a nation based on these principles. Ms Rand did write that the smallest minority group was the individual! You want to protect minority rights, protect individual rights.
On libertarian economics... By definition, this is a moot. The libertarian argument is for FREE trade. No govt policies. Any discussion of economics after that is moot. The individuals will decide. Why? When the act of buying and selling is legislated, the first things to be bought and sold are the legislators.
I will not follow any cult blindly. If I agree with an author on something, I am man enough to admit it. The fact that she/he might be despised by the rest of the population is neither here nor there. I will also disagree with said author on something else, and again I will admit it (Rand's gold standard for example).
The exchange of ideas is like a buffet. Pick and choose. You don't have to take all or none. |
| Fri 05 Dec | David B. Wildgoose | 'The exchange of ideas is like a buffet. Pick and choose. You don't have to take all or none.'
Only if you're a libertarian, namely someone who instinctively believes in individual choices for individual circumstances.
'Group-thinkers' expect to impose their prejudices and beliefs en masse, and seem incapable of understanding that individuals can have individual opinions. |
| Fri 05 Dec | Jeff Kotula | I knew someone would argue that corporations are not public entities. Legally and socially they are. A corporation is granted a license to operate in US society. In return for this right it agrees to abide by the laws of said society.
A corporation is a public-trust entity. However else you might want to view it in the marketplace or 'I started it and I shouldn't have to live with any rules', this is the legal and social fact. |
| Fri 05 Dec | no name | Tapiwa, what works critical of libertarianism/austrian econ have you read? |
| Fri 05 Dec | tapiwa | amazon link above.
Das Kapita - karl marx
several anti-libertarian websites
Quite a few economics textbooks (one of my majors), and public choice was an option.
All of Platos works - check out the Republic for his theories on politics. Very anti libertarian, but I still agree with him on a lot of issues. (one of my fav authors)
Most drivel from politicians is anti Libertarian because by definition if we won they would be out of a job.
I could go on.
'It is thus necessary that the individual should come to realize that his own ego is of no importance in comparison with the existence of his nation; that the position of the individual ego is conditioned solely by the interests of the nation as a whole ... that above all the unity of a nation's spirit and will are worth far more than the freedom of the spirit and will of an individual. .... This state of mind, which subordinates the interests of the ego to the conservation of the community, is really the first premise for every truly human culture .... we understand only the individual's capacity to make sacrifices for the community, for his fellow man.'
-- Adolph Hitler, 1933 |
| Fri 05 Dec | no name | Certainly the argument has been advanced since the original source works you site, no? |
| Fri 05 Dec | Chas | Jeff, that's like saying a business is a public entity because it is a public entity. |
| Fri 05 Dec | A cynic writes | Funny I've read Plato and as far as his politics is concerned I've found him a complete git.
The trouble is that he came from a section of Athenean society which was extremely rich and looked on the rest of the population as scum. In fact an uncle of his was one of the 'thirty tyrants' a charming group who during their short lived regime denied even the right of a trial to all but the richest citizens.
If I have to pick a Greek political philosopher I find Aristotle more congenial. Perhaps it came from being a metic (a foreign resident) in Athens and therefore removed from day to day politics which allowed him to think clearly. |
| Fri 05 Dec | Simon Lucy | Yep Alexander the Great thought Aristotle was a good guy too, but he was a bugger for the bottle.
These americo-centric debates on the rights and wrongs of laws against discrimination (and their conflation with the right of free speech and free assembly) are always distantly interesting to me.
The UK has had anti-discrimination laws on gender and ethnicity for a very long time (sexual preference is now being added). In all that time there have been a handful only of ethnic cases brought, there were more gender cases in the past. This does not make it a bad law. Indeed, as in the case of seatbelt laws, they have gone a long way to achieve a relatively less prejudiced society than there was.
That's not to say its perfect, there is still a great deal of discrimination but by and large it has disappeared from recruitment both overtly and covertly.
I can't imagine why employing someone because they are the best for the job is at all a bad thing. |
| Sat 06 Dec | hate'em all | As I've clearly stated earlier you should all go and F^&%K yourselves big time. |
| Sat 06 Dec | Isaac | This is really relavant:
http://www.washingtonpost.com/wp-dyn/articles/A36694-2003Dec4.html |
|
| IT at School | Thu 04 Dec | A cynic writes |
| Back when I was a lad and woolly mammoths roamed the Earth - computer studies involved writing programs from the outset. Granted it was in Basic on an 8-bit machine (a Commodore PET)- but as the IBM PC hadnt been invented at that stage it was the state of the art for desktop machines.
With my children, IT starts earlier but seems to revolve around using MS Office. Finally our eldest boy (17) has started programming at sixth-form college* So far he has been taught:
• That they are using the lastest version of Visual Basic - that is Visual Basic 6
• That Linux is interesting in theory but doesnt have many applications.
• That MS Office is the only office suite available.
Since before he even started the course Id put SharpDevelop on his machine, hes used Linux previously (he doesnt like it but he has used it) and does his homework on OpenOffice.org he hasnt made himself very popular.
Is this everyones experience of school IT? Or is it just Britain where its this bloody awful?
*I think the US equivalent is probably the last two years of High School. |
| Thu 04 Dec | John Topley (www.johntopley.com) | Hey, two out of three correct facts ain't bad! ;-)
All I remember from Computing at school (in England) is interminable hours spent learning about library database and POS systems. We had BBC Model 'B' computers and later on the Master series. They had some PCs in the technology department but we weren't allowed near those and no one seemed to understand them anyway.
I remember we got excited because the school had spent a lot of money on buying some Acorn Archimedes machines that actually had a GUI! This was in the late eighties/early nineties.
My most vivid memory is of our teacher using a big ruler to trip the power switch in his cupboard when he caught us playing Elite at the back! |
| Thu 04 Dec | Simon Lucy | My daughter is 9 and they're using Office at school I don't think she's being fed such distortions though. |
| Thu 04 Dec | A cynic writes | '...two out of three correct...'
very droll.
I think I'm a bit older - I did my O-levels in 1980-82. I'm not saying it was better then, because it wasn't - we wrote programs on paper and then would test them once a week. If we were very lucky we got to save them to tape (as in audio tape).
I think the thing that concerns me most is that the idea of understanding a machine has disappeared from the curriculum to be replaced by learning how to use a single vendor's products. I'm not bothered who the vendor is by the way - I'd be just as worried if it was StarOffice. The result seems to be people who don't even know the abstractions are there, let alone that they leak.
What I like to see kids receive a general overview with something along the lines of 'these are the various programs that do , we will be using because '. and I'm prepared to accept 'because it's the industry standard.' as a valid reason.
Let's face it I'm just becoming a grumpy old man. |
| Thu 04 Dec | fw | I could rant so much on this.
Most people teaching aren't good, in fact most don't have ANY clue what they're talking about.
Any idiot who believes what they're taught blindly can just stay that way. |
| Thu 04 Dec | tapiwa | 'Hey, two out of three correct facts ain't bad'
Which two??
Or did I miss the sarcasim in that post? |
| Thu 04 Dec | A cynic writes | I think he was pulling my leg...
(which I do hope is an international expression or there are going to be some very odd posts) |
| Thu 04 Dec | Lou | At college I learned that the one true database was Oracle and the one true Office Suite was Microsoft.
That had absolutely nothing to do with the gigantic donations of software that Oracle and Microsoft had made to the school... |
| Thu 04 Dec | MX | I liked the post about how 'understanding of the machine' was replaced by 'how to use a single vendor's product'.
The modern PC or the modern Macintosh, and the operating systems that run on them are A LOT more complex than the Sinclair ZX Spectrum (Z80 CPU, 48 K RAM, BASIC interpreter stored in ROM), the Commodore C64 or the Apple II.
So.. you can't do this in high school, in a limited amount of time. You can do it only if you invest a lot of time.
You also have to ask yourself - do you train the children to be computer programmers, or do you train them to be computer users?
I belive that in high school, a bit of both is required. |
| Thu 04 Dec | Kev | I'm 27 now and in the US. In high school we had an intro to computers course (no programming). We used apples and clarisworks. We learned to type on word processors, not computers.
I say we've come a long way. Now a lot of kids have their own computers at home. Let the school teach Office and Windows, afterall it is what the majority of the world uses, like it or not. Supplement his education with what you have learned and experienced. |
| Thu 04 Dec | as | I did my "O" levels in 1969 when we still used four figure log tables. Perhaps as a result, I don't really see the merit in much, if any, IT in schools. Teaching the concept of algorithms, and the types of problems computers can and can't be used to solve would be good - the sort of thing covered in David Harel's books such as "The Science of Computing". Programs like Excel can be useful as exploratory tools in maths, but they can often be used as a substitute for thought. At my son's school, at least, Word is used as part of an overemphasis on form over substance, and the internet is used as a handy source of factoids to pop into assignments, rather than teaching kids how to research a topic properly using ghastly old-fashiioned things like libraries and encyclopaedias. But then I'm already a grumpy old man. |
| Thu 04 Dec | .. | I took a typing course in high school (1996?) and we were still being taught out of a textbook that taught you correct spacing. Assuming, of course, that you're using an 80-character-wide page. We learned to set the margins appropriately, and how to 'manually center' text. I believe the computers were old 286's and 386's. The program might have been WordStar. I honestly don't remember/supressed memories.
In college, I have helped non-CS majors with their (Non-Major) Introduction to CS quizzes. One question covered VESA Local Bus. This was two years ago--I was, and still am, appalled. VESA technology is irrelevant for this course on many levels--it's old, and what computer user ever needed to know what it did? As far as I know, it was only used for video cards for a brief period during the 486-period. Then came PCI, which blew VLB away. The point is, this is just a taste of what the non-majors are learning about computers. They're furiously memorizing the definition of BIOS and CMOS, HDD, etc. What's the point?
As far as my CS coursework, so far we've been very balanced as far as Microsoft (or open source) loyalties go. One course allows us to submit our programs in a variety of languages. If we want vendor-specific courses, we can take a Java course or a VB course or any MIS (synonyms: IT IS business computing) course.
Just realize--your computer education could be much worse... |
| Thu 04 Dec | a cynic's son writes | I think that the fact that my IT teacher did not know about the kinds of programs that are Linux compatible was horrendous, she did not even know that you could get software packages like star office or open office that are readily downloadable, and FREE, she really did not beleive me about not having to pay until i directed her to openoffice.org, she was embarrased, but did not say much, and whenever she says Linux now she looks at me as if to tell me i had better not say more about it. It is really quite funny
XD |
| Thu 04 Dec | Dennis Atkins | > What's the point?
Actually I know the answer to this one. The answer is that if a teacher does not know anything about a subject and does not care anything about it to learn, then the class will be focused on memorizable sound-bites called 'facts' that can be placed on multiple-choice exams which may be automatically graded by a Scantron(tm) reader.
It's not just CS, but other classes too. History teachers who do not know about history or care about it will use multiple choice tests and have students memorize names and dates and never discuss why things happened or dare I suggest it look at what was happeneing world wide at different points in history and how different cultures influenced each other.
It would be better to let the students go to the beach and learn how to surf than to subject them to a class that is about memorizing facts and never touches on trends or the concepts or the big picture. |
| Thu 04 Dec | matt | In my CS courses my instructors were very knowledgeable people who had barely written a single working program in their lifetimes. |
| Fri 05 Dec | Stephen Jones | Even knowledgeablle teachers use multiple choice questions for most things. What time you lose writing you save marking, they can be mixed and matched later at random, and they do ensure fair marking across the board for different teachers.
I'm old enough to remember the days when Reading questions were not multi-choice. Ahh! |
| Fri 05 Dec | Dennis Atkins | > Even knowledgeablle teachers use multiple choice questions for most things.
I contest this assertion. |
| Fri 05 Dec | a cynic's son writes | i would also like to object to that statment, i have onley ever done multiple chioce questions in a coupl eof subjects, and especially in history i have had to papers that make sure that we understood it, we had essay questions!!!
And in my 'CS' classes as you call them, i do not have any multiple choice questions, but the teacher is just reading out of a book, getting a few things wrong along the way, so yeah she doesn't really care all that much, but at least my other teacher who is attempting to teach us VB is doing a good job and knows what he is speaking about.
Talking of which, does anyone know how to code the backspace button on a calculator? |
| Sat 06 Dec | Stephen Jones | Dear Dennis,
Having taught for near on thirty years and being an increasing believer in multi-choice questions I would be tempted to consider that question insulting.
Above all because it is much, much harder to make a good multi-choice examination than it is to make a good essay or short answer type question. You have to isolate the individual point or skill you are testing, then test out each individual item and throw out the questions that don't fit the pattern you have decided for the test. Then get the answers checked out by people who are your peers because wrong or confusing answers can get through and you don't want to throw the good candidate who can see the fault, and there is such a thing as craftmanship.
Now there are some things that lend themselves much more to multi-choice questions than others, and there is also the danger that students never learn to write coherently in many subjects because those have multi-choice questions and the bad teachers all teach multi-choice questions for the exam instead of teaching the subject, but if you want to get consistency over more examiners than can sit over a small coffee table you will nearly always do better with multi-choice questions for your exams.
Possibly what you mean is that incompetent teachers use other people's multi-choice questions in the wrong context (i.e for teaching and not for assessment). |
| Sat 06 Dec | Dennis Atkins | Jones, perhaps you are misreading me.
'if a teacher does not know anything about a subject and does not care anything about it to learn, then the class will be focused on memorizable sound-bites called 'facts' that can be placed on multiple-choice exams which may be automatically graded by a Scantron'
Here I say that really bad teachers teach memorizable facts and their tests are multiple choice, or in the past, fill in the blank.
You said that good teachers use multiple-choice for MOST things. A teacher in a regular classroom situation using multiple-choice for MOST things is one of the teachers in the above.
I've talked with kids from Japan and other areas where these tactics are used by poor teachers and the poor kids have no ability to reason or to think. Of course there are always some who manage to get by due to sheer force of the will. These kids often have poor academic records or have even been thrown out of the schools. (Me, I was expelled from at least two schools for writing the wrong sort of essays. I went on to graduate with top honors and now hold several important patents.) They only know and obey what the media or other authority figure tells them. Perhaps that's why these techniques are used. Actually, most teachers probably are like this nowadays. The key is did a kid get at least two or three teachers that didn't think this way so they didn't give up hope completely on life. Not every kid is like this, probably the system of 'memorize and obey' works for the average status quo sort of person since that's all they aspire to, never wanting to be accountable for more than watching TV and collecting a paycheck from the man or iman as the case may be.
Multiple-choice I never said was bad. It makes sense on the SAT for example where economics prohibit grading and it is only used to generate a metric. You are absolutely correct that these sorts of tests are extremely hard to get right. In particular, they need extensive scientific evaluation by people with extensive training in the test making discipline to be valid. Needless to say, no primary school teachers are so qualified. |
|
| Why Pragma? | Thu 04 Dec | John Topley (www.johntopley.com) |
| Ive seen the word "pragma" used in the context of HTTP cache control and also as a C++ macro, but what does this word actually mean? Google didnt help. |
| Thu 04 Dec | Jimmy Jo-Jo | Dictionary.com claims it's a contraction for "pragmatic information." No clue whether that's true or not, though. |
| Thu 04 Dec | Better than being unemployed... | One of dictionary.com's definitions of 'pragmatic' is 'Dealing or concerned with facts or actual occurrences; practical'.
This makes sense for C++ #pragmas, which I normally use to work around bugs or idiosyncracies with the compiler or languages. In an ideal theoretical world, we shouldn't and wouldn't need the #pragma, but at the bottom line it needs to be done to get something working. |
| Thu 04 Dec | Breandán Dalton | Pragma is a classical Greek noun meaning "deed" or "action" |
| Thu 04 Dec | Andy | Google helps if you look for Latin/Greek dictionaries
Greek pragmatikos with root pragma: deed, as in 'to do!'
pragma - item, matter, thing |
| Thu 04 Dec | Bored Bystander | The use of the "pragma" keyword dates back at least as far as Ada in the mid-1980s. It was used for compiler control. |
| Thu 04 Dec | Brian | >>This makes sense for C++ #pragmas, which I normally use to work around bugs or idiosyncracies with the compiler or languages.
To nitpick, I would describe C++ pragmas more as a way to access compiler features that are outside the scope of the standard (and thus don't have a standard way of accessing). E.g., the most common uses I've seen are for suppressing certain warnings (4786!), specifying structure layouts, and preventing multiple header includes.
Which does nothing to further the discussion of the origin of 'pragma'. |
| Sat 06 Dec | Computer Book Guy | Worst. Keyword name. Ever. |
|
| software purchase | Thu 04 Dec | vincent pantow |
| What is the latest software you purchase or plan to purchase? |
| Thu 04 Dec | Wayne | MASH v5 - Microsoft Agent Scripting Helper ($24).
No, I'm not going to have the MS Agent help in *every* aspect of my program like Office does. However, it's useful for tutorials, and it really impresses our corporate clients. |
| Fri 05 Dec | JT | I think my next software purchase will be Fitaly for my palm ($35)... Been trying the demo for a few days and I like it. (http://www.fitaly.com).
My most recent purchase was also a cheap (I think $25) palm application.
As for purchases of serious financial nature... The most recent I think was Help&Manual (http://www.helpandmanual.com). |
| Sat 06 Dec | dmooney | Probably Half-Life 2 if it ever comes out.
For a customer I will probably be buying IntelliSync Enterprise. |
|
| Printer-friendly with tabular data | Fri 05 Dec | Nathan |
| Ive built a website that lists jobs for my company. The HR dept. now wants to be able to print the result set of current jobs. I am using ASP.NET, and Ive been toying around with various web controls (datagrid, datalist, repeater) trying to find a suitable one.
I would like to build this to print on a standard piece of paper (8.5x11). I need to calculate the number of pages needed, and do some custom paging based on that. Anyone know how to create a nice, printer-friendly version of a web page that has lots of tabular data, each row containing a different number of lines? (job descriptions vary...)
Thanks! |
| Fri 05 Dec | steved | Don't try and calculate paging; wrap each job in a div:
job html here
and then in a stylesheet with media='print' do:
.job { page-break-before: always }
Most modern browsers (IE6, Opera 7, NS 7) will do the page breaks when the web page is printed.
For your tablular data just set width='100%' (no pixel, etc. settings). Please, save yourself the hassle. |
|
| Microsoft(R) Office HTML and XML Reference missing | Fri 05 Dec | Li-fan Chen |
| I cant find it.
I need to generate xml files compatible with Microsoft Office 2000 and this document from Microsoft is suppose to be the bible:
URL: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnoffxml/html/ofxml2k.asp
If anyone knows where I can get a copy please email me. |
| Fri 05 Dec | Li-fan Chen | Found,
With this hint:
http://www.dbforums.com/t916938.html
I went to the Internet archive:
http://www.archive.org
And popped in this obsolete url:
http://msdn.microsoft.com/library/officedev/ofxml2k/ofhtml9.exe
Et voila! |
|
| Avoiding unused variable warnings | Fri 05 Dec | Martin Beckett |
| I have a char[] string in each of my files produced by our source control system.
I want to avoid seeing all the unused variable warnings, but without turning off the warning for all other variables.
I could put a line like char *p=scsid; after the definition but this seems a bit ugly.
Is there a way to specify the variable in such a way that there is no warning? It needs to work on C/C++ and not be compiler specific.
Thank you |
| Fri 05 Dec | Almost Anonymous | 'I have a char[] string in each of my files produced by our source control system.'
Why? |
| Fri 05 Dec | Andrew Hurst | He probably has it to keep the version of each of the files.
char *foo = '$Id: $';
in CVS that will put the ID of the file (version, name, path, last modified date, iirc) in that string. Then if you need to print it out later, just print *foo.
To get rid of the warnings, comment out that line until you need it. |
| Fri 05 Dec | FireMode | Use pragmas. Insert this in your header files:
#ifdef _MSC_VER
#pragma warning(disable: 4706 4115 4100 4201 4214 4054)
#endif /* _MSC_VER */
I assume that you're using MS VisualC. Replace with or add to the 4??? numbers the code of the warning that you want to avoid. |
| Fri 05 Dec | mb | if you don't use the string, you could add
#if 0
char [] version = '$whatever$'
#endif |
| Fri 05 Dec | FireMode | It's me again, I've not seen that you asked for a compiler independant solution: I assumed also that you were using MS compiler.
Too many wrong assumptions :-) |
| Fri 05 Dec | Martin Beckett | Thanks for the replies.
The variable is used by a test routine but because of the way the app is linked the compiler doesn't seem to know this so I can't comment it out.
The pragma directive on MSVC removes ALL unused variable warnings, on GCC you used to be able to specify a list of variables to ignore.
I have tried putting 'UNUSED' in front of it, then under GCC I can define this as __attribute_unused_ to ignore it but MSVC doesn't have anything like this.
I remember seeing a pure C way round this once ehich only involved putting an empty statement in front of the declartion - I will hit google again. |
| Fri 05 Dec | hoser | gcc:
http://gcc.gnu.org/onlinedocs/gcc-3.3.2/gcc/Warning-Options.html#Warning%20Options
-Wno-unused-variable
suppresses the warning. |
| Fri 05 Dec | Rob Walker | > The variable is used by a test routine but because of the
> way the app is linked the compiler doesn't seem to know
> this so I can't comment it out.
If the variable has external linkage then the compiler is 'wrong' about saying it is unused - at least it seems overly aggressive of it. Which compiler is it?
Does putting an explicit 'extern' in front of the variable help?
Which MSVC you can bracket the code with
#pragma warning(disable: ...)
// code ...
#pragma warning(default: ...)
or
#pragma warning(push)
#pragma warning(disable: ...)
// code ...
#pragma warning(pop)
This limits the effect of the pragma to just the code in question ... but tends to look ugly! |
| Fri 05 Dec | G | (void) foo; |
| Fri 05 Dec | Foolish Jordan | You might also make the variable look like a Global variable. |
| Fri 05 Dec | Insert half smiley here. | Make it a (possibly inline) function, or a #define, something like:
inline const char *Filename() {
return 'WHATEVER';
}
and so on. Just anything except for a variable, really. I've not met the compiler that will warn about unused functions, unless you have an unusably paranoid warning level set. |
| Fri 05 Dec | danpop | It is stunning how many bad answer to a simple question...
G got it right. |
| Fri 05 Dec | Martin Beckett | >(void) foo;
Thank you. |
| Fri 05 Dec | Richard P | I probably woulda just done
if (foo == foo) {}; // kill warning |
| Fri 05 Dec | Tom Crimi | For years I've gone with
static const char* const cvsid[] = {cvsid[1], '@(#) $Id$'};
Which is a variation on how FreeBSD (and undoubtably many other projects) does it on many of their sources. If you allow the ID to make its way into your binaries, the 'ident' command searches for strings beginning with @(#) and lists them, giving you an exact fix on which version you're dealing with.
[excessive consts optional :] |
|
| Programmer question - NetServerGetInfo? | Fri 05 Dec | Jacob Filimonov |
| Can I use this function without NetBios in my network (winnt40sp3 win2000 winXP) to determinate which version of windows running on computers. Some of them in domain and some of them not. |
| Fri 05 Dec | Frederic Faure | Nope, it sure looks like an API that uses NetBios to work, so you'll need the 'Microsoft Client' item in your network configuation.
BTW, just in case, since a lot of people mistake are confused about this... NetBios != NetBeui. The former is a network API (eg. TCP); The latter is a network protocol (eg. IP). You do not need to have NetBeui installed in addition to TCP/IP. |
| Fri 05 Dec | Jacob Filimonov | Thanks for you help, but i can't understand how "Microsoft client" concerned whith NetBios over tcp/ip checkbox? |
| Fri 05 Dec | Frederic Faure | Thanks for you help, but i can't understand how 'Microsoft client' concerned whith NetBios over tcp/ip checkbox?
Somebody stop me if I'm wrong, but 'Microsoft Client' installs the NetBios stuff (API, opens TCP/UDP ports), while you need to leave 'Enable NetBios over TCP/IP' checked in your network configuration (TCP, Properties, Advanced, WINS) if you only want to use TCP/IP and not keep NetBeui.
So yes, Net*() are NetBios-based. |
| Fri 05 Dec | Jacob Filimonov | Thanks again.
But when i check out 'Microsoft Network' NetServerGetInfo stiil succeeds.
Now i see right question. What 'NetBios over tcp/ip' and 'Microsoft Network' do? And what supposition about my network i should make to use NetServerGetInfo. |
|
| installing apache+php+mysql with my app ?? | Thu 04 Dec | braid_ged |
|
Anyone have any experience / ideas / links related to building an install application that installs apache with php and mysql.
I am thinking this isnt going to be terribly easy but I want to build a smooth standard windows install process that in the background installs and sets this platform up. |
| Fri 05 Dec | Bored Bystander | Been done already for Win32:
http://www.foxserv.net
Not with 'your app', but Foxserv is open source so there you go... |
| Fri 05 Dec | braid_ged | Thanks. |
| Fri 05 Dec | Bored Bystander | You're welcome. I tried Foxserv a few years ago when it was fairly new and some things weren't working all that well. Its claim to fame is that it installs L.A.M.P. (well, minus the 'L') for you on Win32 transparently, but I had some problems with MySql. I'm sure some wrinkles have been ironed out. |
| Fri 05 Dec | JD | I would say better alternate(from my personal experience) would be
http://www.nusphere.com .
JD |
| Fri 05 Dec | Phil | http://www.easyphp.org/ |
| Fri 05 Dec | tapiwa | you might also want to check out
apache2triad |
|
| Joel's algorithm is flawed | Thu 04 Dec | EiEiO |
| >> This turned out to be a great example of one of those places where the last 1% of the code takes 90% of the time. The first draft of the code looked like this:
1. Open the file
2. Read it all into a big byte array
3. Store the byte array in a record
Worked great. For reasonable sized existing files it was practically instantaneous. It had a few little bugs, which I worked through one at a time.
Joels problem is that his algorithm is flawed. Step number 1 is ok, but steps 2 and 3 need to be improved.
Why would you read a file into 1 huge byte array? Why would you not do it in chunks equivalent to the speed of the machine? (If this is what he is doing then my question would be how would a child process improve the usability of the main application? Wouldnt the computer still be slow due to all the IO.)
Considering that he is using DAO and VB the algorithm would go something like this:
1. Open File, Establish Connection to DB, Initialize ProgressBar
2. Begin transaction on connection
3. DoEvents
4. Read in X Number of bytes from file into buffer where X is determined by the speed of the machine.
5. (optional) DoEvents
6. AppendChunk to OLE field in rs AND update rs.
7. Update Progress Bar
8. Repeat 3 through 7 until EOF = true
9. Rollback or Commit Transaction depending on error status
I dont see why you couldnt perform two of these at the same time. I think even with a child process the computer would still be slow because of all the IO.
Just my $0.02. |
| Thu 04 Dec | Mr. Fancypants | Your logic is flawed.
In particular you seem to think 'computer running slow' and 'application is totally locked, completely, showing the user no progress status or indication that it isn't running through a tight infinite loop' are equal. They aren't. One is unavoidable when dealing with large data sets, and one MUST be avoided if you expect customers to use your software. Which one is which is left as an exercise for the reader. |
| Thu 04 Dec | Joel Spolsky | The trouble is the DoEvents.
Without it, the app is frozen and even the progress indicator won't be painted.
With it, there is a chance that the user will do something to the application that I'm not prepared to handle (e.g. insert another, smaller file, which finishes before I'm done, and then foreign keys may get crossed.)
For very short files, I'd rather not have a DoEvents at all. And they're short; might as well slap the whole thing into a byte array.
For very long files, DoEvents is dangerous and causes synchronization problems. For these files I'd rather have the copy going on in another process. To be fair, that process will be using the algorithm your provided, but it does not have any synchronization issues with DoEvents. |
| Thu 04 Dec | EiEiO | With the above algorithm the progress bar is updated just fine, the data is put into the database just fine and the computer doesn't stop responding or for that matter "slow down" much do to IO. You need to explain yourself and your viewpoint more clearly. |
| Thu 04 Dec | EiEiO | I was referring to Mr. Fancypant's comment. |
| Thu 04 Dec | Mr. Fancypants | You spelled due wrong! |
| Thu 04 Dec | EiEiO | Ok that makes sense. DoEvents = Bad. Bad = DoEvents. DoEvents = False. NULL == DoEvents. Don't DoEvents. |
| Thu 04 Dec | Dave B. | I love this kind of stuff. Basically I had to try it out and see what Joel was talking about, so I created a sample program. (I make lots of those heh)
http://www.sswltd.com/downloads/big%20file.zip
(You need VB 6.0 and ADO 2.7? to run it.)
Run the Project1.exe and a form will come up with some rectangles being blitted. There'll be two buttons Create File 1 and Create File 2.
Try Clicking 1 at a time and see what happens. Notice that when you click both of them (on the same form) the first progress bar will stop and the other will keep going. Same process, so execution simply continues in a different procedure.
Now click the P2 button. This spawns a child process (1 allowed per form.) Now click two buttons (1 on each form). One progress bar on each form should be moving. Separate processes so the processor is controlling who gets to run.
Now click all 4 buttons. Things really start to slow down now.
Lot of synchronicity issues that need to be dealt with here, but otherwise pretty neat. Actually made me realize some issues that could arise in my code. (Using DoEvents, but I usually display a modal form with a progress bar.) |
Thu 04 Dec | Matthew | Joel,
The trouble is the DoEvents.
Without it, the app is frozen and even the progress indicator won't be painted.
Using Control.Refresh is better than using DoEvents.
With it, there is a chance that the user will do something to the application that I'm not prepared to handle (e.g. insert another, smaller file, which finishes before I'm done, and then foreign keys may get crossed.)
That is why Control.Refresh is better. Otherwise, use DoEvents but disable all the forms beforehand.
BTW, threads (or apartments in VB) are very safe. If you run two separate threads in the same EXE it is not significantly riskier than running an EXE that communicates with a separate ActiveX EXE due to the use of apartment threading. Admittedly, debugging is fun since the VB IDE does not support multiple apartments.
Seeya |
| Thu 04 Dec | I like Dave B. | Dave B. is the upper 20% programmer we are talking about in the other thread. |
Thu 04 Dec | Matthew | Dave B,
Lot of synchronicity issues that need to be dealt with here, but otherwise pretty neat.
The synchronicity issues are the hard bit - I think that is part of Joel's point. Your code is good in that it does show the importance when using DoEvents of only using local variables (not module or global variables) - which of course minimises problems that can occur. And it does show the dangers of using DoEvents too - for example, should the user be allowed be allowed to click Create File 1 twice on the same form (and what should happen if it IS allowed)?
Now click the P2 button. This spawns a child process (1 allowed per form.)
Using an ActiveX EXE with multiple threads and callbacks would be just as effective, plus allow easier communication between the multiple instances. Its been a while since I looked at them, but I believe the Coffee examples on the VB CD give a reasonable primer in that area... |
| Thu 04 Dec | somebody | What's wrong with just using DoEvents and a modal progress dialog? It's an incredibly simple solution that can be thrown together in a few minutes, complete with a cancel button, and easily made reusable for similar things in the future. |
Thu 04 Dec | Matthew | SomeBody,
Joel's article states:
From a UI perspective, what I really wanted was for long operations to bring up a progress bar of some sort, along with a Cancel button. In the ideal world you would be able to continue doing other operations with CityDesk while the file copy proceeded in the background.
Note the final sentence. That is the fun bit. Your suggestion:
What's wrong with just using DoEvents and a modal progress dialog? It's an incredibly simple solution that can be thrown together in a few minutes, complete with a cancel button, and easily made reusable for similar things in the future.
does not allow the functionality as described in the second sentence.
Seeya |
| Thu 04 Dec | Dave B. | Aye Matthew. Some things I would add (off the top of my head):
1. 'Create File 1' and 'Create File 2' should probably be made non-reentrant
2. Since the names of the temporary text files aren't different, one thread might have to wait while another finishes loading the file into the database. Or maybe each file could have different names.
3. DoEvents should be removed and replaced with .Refresh
4. Error Handling for the database needs to be added. Two process could be trying to write to the DB at the same time.
Lot of stuff could be added, but my original intent was just to see how how one process behaves verses many. Anyway, neat stuff and thanks for suggestions. |
| Fri 05 Dec | somebody | Matthew, I realize that Joel said that in his article but note that he included the disclaimer “In the ideal world”. I took that line to be expressing more of a bonus from the solution rather than the primary justification for it. If someone is importing a file, it’s probably because they want to do something with that file at that time so what use is the ability to do other operations during the import?
DoEvents combined with a modal dialog meets all of the non-ideal world goals – a progress bar, a cancel button, and the prevention of dangerous operations by the user – and can be completed in a fraction of the time required for the out of process solution and in a much less complicated manner. The saved time could then be devoted to features and fixes that would be useful to more than just 1% of CityDesk users (I suspect that this estimate is way high).
The multiple process solution brings up a ton of issues such as what do you do if the user quits the parent app? Joel also mentioned some mechanism for the child to notify the parent when processing is done but what happens when the child crashes (as CityDesk just did when I tried to import a 300 MB file)? Of course these things are solvable but it’ll take a heck of a long time to get it right.
I’m not saying that Joel is wrong. I’m sure he realizes the tradeoffs involved in spending so much time on such a minor thing. I was just curious why he’d reject the simple but adequate solution in favor of the complex but ideal solution. |
| Fri 05 Dec | mb | i'll need to re-read the article to be certain, but there are other potential advantages to the 'separate process' architecture: future automation.
imagine the process is like this: launch citydesk.exe (or whatever it's called) with the commandline /importfile:c:\temp\file\name. it will then pop up a progress dialog with cancel, etc. the user can switch back to the main app, or whatever.
in the future, you could write a simple 'stick in citydesk' batch script which called the command line. like a test app.
also note this is the model which IE uses when you download a file: that little 'file download' window is basically a browser window, it just looks and acts different. |
| Fri 05 Dec | Ian Olsen | > I was just curious why he’d reject the simple but adequate solution in favor of the complex but ideal solution.
That was the whole point of the article. Craftsmanship, to Joel, means that all the screws line up: the complex, ideal solution. He's taking pride (understandably, I wish I were so lucky) in the fact that his organization CAN do this. |
| Fri 05 Dec | The Pedant (Brent P. Newhall) | Which type of application would you prefer to use: an adequate one or the ideal one? |
| Fri 05 Dec | Bear | >> 'Which type of application would you prefer to use: an adequate one or the ideal one?'
Hrm... I would choose the ideal one. As I think most people would. Why? Because they have a choice. If a company came out with another spreadsheet product today, would you switch to it from Excel? I don't think you would. Especially a version one product.
All applications can be rated on the adequate to ideal scale. And this scale is really just a measure of the time an application has been under development.
Adequate applications almost always equal applications that have been just been released, i.e. Version 1.0, or applications that have never been maintained but are still in use because no one maintains them or writes a new one.
Ideal applications have been around a while and people have conformed to them and are comfortable with them. They are frequently maintained and new releases are often made every 12 - 18 months. |
| Fri 05 Dec | somebody | >>
Which type of application would you prefer to use: an adequate one or the ideal one?
<<
This is about an adequate versus ideal *feature*, not application. Focusing on making fringe features ideal wastes time that could be spent on making more often used parts of the application better. Head over to the CityDesk forum if you think there aren't other areas of the application that people would like improved. |
|
| Thin client vs client/server architecture | Thu 04 Dec | Mellowman |
| I work with developing an application that allows users to connect to a specific stock exchange and trade stocks. The application is a normal Windows which connects to the exchange through a proprietary C API. The user have to login to get a session going. The application receives a lot of information continuously with market data. The user can send and manipulate orders.
The application is old, like 10 years and ported from some other OS and originally written in C. The code is not very well layered and non object-oriented. It is ported to MFC and Visual C++ but very messy and nowadays impossible to maintain. We have lots of bugs which require constant bug fixes and frequent unpopular product updates.
We will therefore start over and develop a similar application from scratch. My customer, the stock exchange, has requested (among other) the following features:
1. Possible to upgrade application while still running the application or without having to logout and loose the session if its possible, depending on type of upgrade.
2. The application should have the look and feel of a normal Windows application so a web browser solution is not acceptable.
3. Have high performance and should be able to receive large amount of market data without freezing or starting to act sluggish.
4. Store user settings globally, that is whatever PC you use to login with, your application settings should be used automatically, even you never used that PC before.
So what kind of architecture is most suitable for us?
Requirement 1 suggests putting most of the functionality on a server, so upgrades can be done without bothering users? However, how do you upgrade a running server without kicking out users? Using several servers and upgrade them one by one and run different versions of the software? Or use fat clients and upgrade the clients by some mechanism like the automatic Windows update? Have anyone besides Microsoft implemented that?
Using a thin client, that is a dumb client, will lead to that more data needs to be sent than using a smart client. A smart client will be able to process data and compute information by it self, while a dumb client needs everything sent to it. For example, the smart client can gather statistics from individual trades and order, but the dumb client needs everything computed and sent for it. This will affect the performance, since usually API calls are costly and requires a lot of overhead so it is better to compute it locally.
Has anyone ever developed a thin client that works as a normal Windows application, but is generic and pretty much just displays stuff received from a server and sends back user actions for server processing?
User settings should be stored globally. The exchange’s API does not handle user settings for client applications so we can’t use that option? This means that we need some sort of server, at least a simple XML database server.
I’m afraid that the thin client will not be good enough, that users will not be able to configure it and use it as a normal Windows application and that will feel slow. My fear could also be from the fact I never done anything else than fat Windows clients before. What architecture would you guys suggest and has these problems been tackled before? |
| Thu 04 Dec | Lou | It sounds like the people defining the specifications are a bit jaded with respect to the old application and its need for constant patches. You should ask them if the requirement for hot upgrades is absolutely necessary or if it is a byproduct of the volume of upgrades associated with the old system. I suspect it is the latter, in which case they don't really need hot upgrades, they just want less downtime.
It does sound like you're going to have a relatively thin client, we actually just implemented one here. The windows are all defined but the data displayed is all driven from the database. The only reason we have to patch the front end is to enable new features, change the screen layouts, or tweak the queries.
All the drop down menus and definitions of required fields and user settings are stored on the database. So a large number of changes can be made without anyone experiencing downtime.
Now for the caveat, we're running VPNs over DSL from remote sites to our data center and we're still experiencing some lag. There's a lot of data being tossed around. Our lag runs no greater than 10 seconds, but your traders might not be willing to tolerate that. I would mention that to the people defining the specs. It is a tradeoff. We made it and we're happy with it, but your situation is different. Best of luck. |
| Thu 04 Dec | Code Monkey | I've written a number of finance applications using a web browser for the client. These include several trading programs. I got around the "it's not fast like a Windows" app by using a variety of tricks, including using frames to split out processing, and using some IE specific items like the ModalDialog ability. Believe me, we have picky users, and they're good with what they've got. Updates are seamless, and most of the performance battle was fought on the servers (in particular communication between the database and web servers). |
| Thu 04 Dec | njkayaker | '1. Possible to upgrade application while still running the application or without having to logout and loose the session if it's possible, depending on type of upgrade.'
If you refine this requirement so that it says (something like) 'be able to upgrade the program so that new sessions use the new version without having to have users log out', it's fairly easy.
Write a very thin program that runs another program (the real one). When upgrading, have the thin program point to the new version.
I don't think there is any *simple* way of updating the executable code dynamically for an already-running program. (You might be able to do something hairy with dynamically binding DLLs). |
| Thu 04 Dec | Steve Barbour | How about using the MS HTML control inside your application? That way you get to make it look more or less like a standard Windows app, but it's really a web app.
Maybe that's cheating, but it seems to me the simplest solution. |
| Thu 04 Dec | Exception guy | '1. Possible to upgrade application while still running the application or without having to logout and loose the session if it's possible, depending on type of upgrade.'
This reminds me of the story of the FAA's failed new air traffic control system (read about it in this book: http://www.amazon.com/exec/obidos/tg/detail/-/013673443X/qid=1070570594/sr=1-13/ref=sr_1_13/103-7540567-1687852?v=glance&s=books ).
If I understand what you're talking about and it's what they were trying to do, then it's essentially impossible. Also, it's basically pointless: if you really want to do this, then have 2 servers, and when you're ready to upgrade one of them, have it stop accepting new connections. Then, after a suitable amount of time has passed (a minute, an hour, a day, you decide), kick off any users still logged on, and proceed with the upgrade. They can just use the other server. Then, bring the upgraded system on-line, and repeat with the other server. |
| Thu 04 Dec | Kevin Moore | Hi,
It sounds like you might be replacing something that I worked on 7 or 8 years ago :)
With current technologies I would suggest and traditional c/s application. Using VS.Net and a nice feature, you can have updates to your app be automatically deployed when the user starts the application.
Conversely if you don't feel like going the VS.Net route and want to stick with VB or Delphi or even C++ for the UI, I would suggest reading up on the Windows Installer technology. With it you can have an update be automatically applied to a client box with little to no intervention.
HTH,
Kevin |
| Thu 04 Dec | Doh! | '1. Possible to upgrade application while still running the application or without having to logout and loose the session if it's possible, depending on type of upgrade.'
So I guess Windows is out. |
| Fri 05 Dec | Frederic Faure | Speaking of which, if someone knows of a good article on the strategies available to perform live updates, either on a fat client or on the servers, I'm interested. I think this has been discussed here before, but 'live update' returns waaaaay too many links :-)
As usual, you should take a look at ActiveX controls embedded in web pages. I'm not sure how reliable that would be in an intensive-use context like trading, but you can always build a simple prototype in VB and run intensive tests to see how steady this solution is. |
| Fri 05 Dec | Chris Tavares | There *are* systems that allow live upgrades while a program is running, but you have to use languages like LISP or Smalltalk to get that capability.
The href-exe option in .NET is a really good one. The idea is you click on a link, and the exe is downloaded from the web site to the client. The exe runs on the client, but is sandboxed so you don't have the security concerns you usually would in this scenario.
The nice thing is that to deploy an upgrade, you just push a new copy of the client app to the web server and the client will automatically put it down the next time they run. This isn't really hot upgrades, but it's pretty close. |
|
| Passport.net down? | Thu 04 Dec | justacoder |
| Im trying to sign up for the Empower program which requires a Passport account. If you go to http://www.passport.net/Consumer/default.asp to register the site is down and has been since yesterday. How can such a site experience such a long outage? |
| Thu 04 Dec | Steve Barbour | I just tried it, and it seems to be working fine. Maybe you have the domain blacked? |
| Thu 04 Dec | Brian | I can never access my hotmail account from work. I always get the error message: 'The .NET Passport service is currently unavailable at this Web site for one of these reasons'
Maybe it's related, in which case I assume it's a network config issue (accidental or intentional). |
| Fri 05 Dec | Kentasy | I think it is a problem with the passport cookie.
Try copying the URL on the error page, opening a new browser and pasting. You may get a new passport login page - enter your info and you should be in. (This worked for me)
If this doesn't work e-mail Microsoft, they are quite good at responding... |
|
| Joel's Strawman Arguments | Thu 04 Dec | Oren Miller |
| Does anyone notice that Joel often uses strawman arguments to emphasize his points while tearing down others? I noticed this one in hist latest article.
And of course, a certain type of programmer will argue that my new child-process architecture is inferior to the original. Its bloated (because of all the extra lines of code). It has more potential for bugs, because of all the extra lines of code. Its overkill. Its somehow emblematic of why Windows is an inferior operating system, they will say. Whats all this about progress indicators? they sneer. Just hit Ctrl+Z and then ls -l repeatedly and watch to see if the file size is growing!
This would seem to imply that unix developers would find this architecture inferior. Huh? Using child processes to do these tasks in unix systems goes back since its earliest days and is the most common way to do such things then and now. That is why the fork system command and unnamed pipes exist to allow this functionality with just a few lines of code. It is in fact far easier to do this than to use threads, which were very late coming to *nix for the reason that many didnt really see the need for them.
Ive done just as much if not more windows programming that *nix and could care less about promoting one over the other. Concerning what he is doing here I will say from personal experience it is much easier to do in *nix simply because it is more common and standard in that environment, while threads tend to be easier in windows for the same reason.
The snide comments just seem unnesessary and ignorant. Joel, why not just make your case and present why it is good instead of inventing imaginary characters to attack you? If you want to defend yourself, at least wait to hear what actual people have to say about it. |
| Thu 04 Dec | no name | He's been around a while and my guess is he's either heard it or something so similar that the difference is trivial.
BWTFDOK |
| Thu 04 Dec | Joe Grossberg | OK I did STFW, and I can't figure out what 'BWTFDOK' means.
Care to clue me in?
Joe
http://www.joegrossberg.com |
| Thu 04 Dec | no name | But what the fuck do I know |
| Thu 04 Dec | Dustin Alexander | I think this rises from his occassional (and probably just) experience with negativity associated with religious wars. By making these sort of comments, he tries to get a lead on and quell arguments of a religious nature. I agree that this type of argument does not often add to the stability of his arguments, but neither is it simple or petty. I think we should give him more credit than that.
Joel most definitely has a bias towards object oriented, windows based programming environments and this bias is reflected in his articles.
To be fair, he doesn't comment often and when he does his commentary lacks the venom and severity usually associated with a 'religious' debate. I get the feeling that most of his arguments stem from a reflective view of his own technology choices, with his statements presented as argumentative supporting evidence. |
| Thu 04 Dec | Breandán Dalton | 'By making these sort of comments, he tries to get a lead on and quell arguments of a religious nature.'
Quell? Start, you mean. |
| Thu 04 Dec | Dustin Alexander | Inadvertent. In his attempt to 'head them off at the bend', he inflames them. Its like arguing against an unspoken argument. Not the greatest of debate tactics. |
| Thu 04 Dec | burningman | Damned if he does, damned if he doesn't. |
| Thu 04 Dec | Seeker | BWTFDOK: Not sure what it means... but I read it as But What The F*** Do I Know?
Although that would be BWTFDIK |
| Thu 04 Dec | John Topley (www.johntopley.com) | The use of humour is one of the things that makes Joel so readable IMHO. Obviously it helps if you have a sense of humour... |
| Thu 04 Dec | Almost Anonymous | 'Just hit Ctrl+Z and then 'ls -l' repeatedly and watch to see if the file size is growing!'
I just created a script to automate database dumps and I did this exact thing in order to tell if it was working correctly! Hehe... |
| Thu 04 Dec | Dustin Alexander | I think every UNIX programmer has done this at one point or another. Sad. I've written command line Perl to watch FTP transfers between two external hosts from a third host (don't ask). Also useful for testing backups. I wouldn't suggest this as a production solution, though, unless you have lightbulbs and crack cocaine handy. |
| Thu 04 Dec | Mr. Fancypants | Oren,
Jeez, got a victim complex much? I program both UNIX/Linux and Windows systems too and I thought the Ctrl-Z ls -l thing was pretty funny (as in 'its funny because on some level its true!').
You're getting all bent out of shape over something that is not only not insulting but pretty funny if you happen to have a sense of humor. |
| Thu 04 Dec | I guess this will have to be anon | I think the OP is being overly sensitive in this particular case. I thought it was funny. I do Windows, Unix, Mac, whatever, it's all the same to me in the sense that none of it is designed right and Gates, Torvalds and Jobs are all idiots. I didn't see Joel's comment as a slur on Unix in particular at all, he was just making fun of a stereotypical anal nitpicker that picks all thi nits he can find, er, much like the OP, hm, well that's not I was headed with this.
Anyway, it is a time honored and well regarded debate method to do your opponents a favor by making their argument for them and gently pointing out its flaws before or while promoting your own side of the story.
'The honorable gentleman from Ohio will surely protest that not all nits are pickworthy. Although this is true, it is not relevant because I am speaking only of green nits with red spots, all of which are worthy of picking. The yellow nits that are not pickworthy do not even live in this part of the country.' |
| Thu 04 Dec | SG | It's his blog and he can poke fun at whatever he wants.
As a Unix developer, I found it pretty funny (and accurate). |
| Thu 04 Dec | Sum Dum Gai | 'Obviously it helps if you have a sense of humour...'
It'd also help if the joke was actually funny. |
| Thu 04 Dec | Slashbot | I think Oren was just bored. |
| Fri 05 Dec | Gareth McCaughan | I think 'BWTFDOK' may have been meant to be 'BWTFDIK', which would be equivalent to 'But WTF do I know?'. Google for WTF if you don't know WTF that stands for; I shan't expand it because I don't know WTF might be reading this and WTF they might think of the words it expands to.
I agree that caricaturing opposing arguments is a sign that something's wrong. I suspect that in this case it may be a (half-conscious?) realization that it would be much simpler and really just as good to work in a single process and simple thread but provide a friendly progress indicator and a way of cancelling the operation cleanly. But that might not provide such a convenient hook for talking about craftsmanship and how Fog Creek takes care above and beyond the call of duty :-). |
| Fri 05 Dec | Gareth McCaughan | (Er, that first paragraph is pretty redundant. I hadn't realized what an old version of the thread I was looking at when I clicked the reply link... Sorry.) |
|
| Shrinkwrap support ratios | Thu 04 Dec | Count Almasy |
| Whats your experience of the number of support calls/incidents generated for each application sold (or bought...) ? Im talking about shrinkwrapped Windows products that retail for a few hundred dollars.
I was surprised to read that the industry average was about 20-30%. Surprised because I must have bought a hundred or so applications in this category, but have made way less than 30 support calls. At a guess Id put the figure at 5 or less.
Maybe software is just getting better and better....
Thoughts ? |
| Thu 04 Dec | tapiwa | Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
-- Cook, Rich |
| Thu 04 Dec | John C. | You're an atypical user. Most people don't have the background knowledge, won't read manuals, don't google for answers, won't ask questions online. I'm not saying that as a slur, it's simply reality. So when something goes wrong, they naturally turn to tech support.
I can't say I blame them. When something weird happens with my car, I rarely put much effort into diagnosing and fixing it. I take it to the dealer and pick up a loaner car so I can get back to doing my real job while they take care of it. It's not that I /couldn't/ do it, I just don't have the tools or the time or particularly the inclination (even though I like cars). |
| Thu 04 Dec | Count Almasy | John C
OK, I'd agree with that. But...1 in 3 ?
To add a bit more context: I'm thinking of selling a shrinkwrap app via internet download only. Functionality (and interface complexity) will be roughly comparable to, say, Musicmatch or any typical jukebox.
Let's assume I do a good job with the installer, usability testing, manuals, FAQ, quick start guides, wizards, quality etc etc ... i.e. it's a good product. And by its nature (it's not actually a jukebox) users will be more technically aware than average.
Is it people's experience that 1 in 3 users will want or need customised help ? My best guess was 5% to 10%. |
| Thu 04 Dec | Tony Fontenot | It will always be higher than anticipated. My Tech Support staff always seems to grow much faster than my customer base, but everyone I hire is always needed. For the most part, with savvy users, it's not that they need help, but rather, it seems they think you need help. So you will be constantly bombarded with suggestions and feature request.
For proof of that, go to the FogBugz or CityDesk message boards. It seems most comments on those boards are asking for new features with the occasional request for help.
It seems, over time, when customers start to trust that you can deliver what the need and want, then you get even more calls/emails. I long for the days when I could manage all incoming calls/emails because they were from new customers who had easy questions. Now it seems all questions that do come in, take forever to research and fix. |
| Thu 04 Dec | The Customer is #1 | I agree with the 30% observations. For my main product, about 50% of customers generate customer service incidents. This includes people sending a nice note about how much they like the program, which in a good customer support system, requires sending them a personal thank you note for their support and adding them to a list where we unexpectedly send out token holiday gifts to select preferred customers. Needless to say, the product's reputation is fantastic.
The product is a niche one and supports interaction with many hardware devices. Most support requests are situations where they need help dealing with their hardware object, or want support for a new hardware device added, which we try to do within a week, another 'small touch' that creates a base of customers fanatical about the product. Dealing with personal help for hardware usually takes 1-4 hrs of time. Adding new hardware support takes 10-20 hrs of time, but is amortized across many customers with the hardware and always generates many new sales.
In five years of sales, only two customer support issues were due to a bug.
There are three freeware opensource products that work just as good as our product, but don't come with polite personalized support. Our product costs $999 and is the market leader.
The 33% support issue on most software is the one that makes you realize how commercial software can compete against free and open source software - you have to provide great service. |
| Thu 04 Dec | Jeff | So, as someone who's often dreamed about running his own software product company, I'm really curious about these statistics.
Over what time period is the 33-50 percent figure valid? One year? One release? Total customer lifetime?
I can't say I'm entirely surprised. This was one of the arguments I recently used to convince my employers that they didn't REALLY want to be a product company. Better to stick with the research and consulting -- and do the occasional custom software project -- than hire a testing team and a support team.
Does anyone have an article I can use to back up these numbers if I need to return to this argument again later? |
| Thu 04 Dec | Mr. Fancypants | Have them look into a company called "Microsoft". If ever there were proof that selling shrinkwrapped software is sure financial disaster, they are it. |
| Thu 04 Dec | The Customer is #1 | Jeff,
For me it's per customer and I am wrapping all support interaction into one # -- 50% of customers ask for one or more incidences of support, 50% I never hear from again.
In practice, almost all customers self-regulate their requests. We deal with them once or maybe twice the first 6 months, and then never again, except that we'll get thank you notes from some after we do an update with new features.
Only about 5% need extensive support that is frustrating or takes a lot of time. |
| Thu 04 Dec | John C. | I've never delivered a product like the one being described, so I have no real numbers or even seat-of-the-pants guesses to offer. But if I were writing the business plan, I'd want to err on the side of pessimism, I think. I have a suspicion that customer support is like time required to complete a feature -- it always seems to come out worse than you expected, not better.
Thought experiment: Imagine we make a bet. You pick a support incidents-per-sale ratio that sounds reasonable and then we look at the actual numbers in six months. I will personally write you a check for $50,000 if you get a lower proportion than you predicted. Conversely, you will give me $50,000 if you guessed too low.
Would you be comfortable making that bet if the threshold between winning and losing is somewhere between 5 and 10 percent?
In any case, I hope you'll let us know what your actual experiences are after you ship... |
| Fri 05 Dec | Count Almasy | Thanks to everyone for their comments. It seems that I was being optimistic.
John C - point well made. I'll pass on the bet, but certainly report back so everyone can say 'I told you so' :-)
The 30% number came from Soft*Letter (a subscription newsletter), but I've also seen similar elsewhere. The ratio increases dramatically with product cost - high end can be up to 5 per user.
Another perspective, which supports the general consensus, is that every history of a software company I've ever read always includes a tale of Customer Support being overwhelmed and needing urgent upgrading. |
|
| Test Driven Design in Functional Languages | Thu 04 Dec | Lou |
| I understand how to use TDD packages when coding in an OO language, but Im a bit confused on how one does this in a functional language. Im currently coding in TCL (project requirements) where the TCL is executed purely as a batch script.
Is anyone aware of any TDD packages or practices for this type of coding? Any experiences? |
| Thu 04 Dec | Matt H. | Mike Scwern wrote test::More for Perl as well as test::Tutorial.
http://magnonel.guild.net/~schwern/talks/Test_Tutorial/Test-Tutorial.pdf
Basically, I'd suggest making a simple library with functions like this:
sub tests(int);
sub eq(string, int, int);
sub eq(string, bool, bool);
sub eq(string, double, double);
sub eq(string, string, string);
sub ok(string, bool);
The psuedo code looks something like this:
GLOBAL iTestNum int;
sub tests(i int)
{
printf('1..%d\n', i);
iTestNum = 1;
}
sub ok(s string, b bool)
{
if (b)
{
print('ok %d - %s\n', iTestNum, s);
}
else
{
print('not ok %d - %s\n', iTestNum, s);
}
iTestNum++;
}
sub eq(s string, i int, i2 int)
{
if (i==i2)
{
print('ok %d - %s\n', iTestNum, s);
}
else
{
print('not ok %d - %s\nGot %d\nExpected %d\n',
iTestNum, s, i, i2);
}
iTestNum++;
}
//---End Psuedo Code
So your output to STDIO looks like this:
1..5
ok 1 - Foo with valid input
ok 2 - Foo with invalid group number
ok 3 - Error Message for invalid group number
not ok 4 - Foo with invalid date
not ok 5 - Error Message for invalid date
Expected - 'Date 10/35/2003 is not a valid date'
Got - ''
Obviously, your function is something like:
func foo(iGroupNum int, sDate string) returns BOOL;
--All this is pseduo code you can write up in any langauge.
If you write it correctly, you can pump it through Test::Harness or Prove automatically.
That's the 5 minute version, anyway. You can write test harnesses in any language. (If you die after test 3 because of an unhandled exception, you know you SHOULD have had 5 tests because of the 1..5, so that too is a test.)
regards, |
| Thu 04 Dec | David B. Wildgoose | Sorry to be picky, but TCL isn't a functional language. Far from it. Functional languages are those like Haskell, Clean and OCaml and the ML family. |
| Thu 04 Dec | John C. | As Matt says, the principles are really no different. You just end up testing things like subroutine outputs (and side effects, where appropriate) instead of methods. Of course you can also test the entire script -- give it known inputs and check the outputs against expected outputs. |
| Thu 04 Dec | Lou | Thanks for the ideas on how to strap the tests onto a language like TCL. I think I have a pretty good handle on how I can proceed from here. |
| Thu 04 Dec | rwh | When your code is written in a functional style, it's actually easier to set up tests. The outputs for a chunk of code depend solely on the inputs, and don't depend on any calls before or after. In an object-oriented style, you have to set up the internal states for the object(s), pass in any parameters, check the output of the call and then check the internal state for the object(s). It takes more steps, and you may have to provide an unsafe "maintenance" interface to the object internals in order to test various failure conditions. |
| Thu 04 Dec | Exception guy | Maybe the original poster meant "procedural" when he said "functional". |
| Thu 04 Dec | Lou | I did. |
| Thu 04 Dec | John C. | Good point, rwh, and that's something that's bugged me for a while about a lot of OO code I work with. For whatever reason I long ago got into a habit of writing my procedural code in a relatively functional, no-side-effects kind of way, which made it very natural to integrate lots of testing into the development process. But all the state that can get carried around in an OO world seems to get nasty sometimes, because it's much more difficult to be certain you've properly handled prerequisites and tested all possible states (though things like modeling processes around well-defined state machines does seem to help). |
| Fri 05 Dec | Colin Macleod | Everyone here seems to have missed the fact that Tcl already comes with an extensive test-management package. See documentation at http://www.tcl.tk/man/tcl8.4/TclCmd/tcltest.htm and background info at http://wiki.tcl.tk/1502 and http://wiki.tcl.tk/2604 . You don't need to reinvent this wheel! |
|
| conversion tools for excel97 & access98 ->XP | Wed 03 Dec | Martin Krisnomurti |
| Hi all,
Do you have experience in the company you work when migrating users from Win9x/NT to Win2K/XP esp regarding the incompatibilities between Excel macros & Access from the older version to the Office XP version? How was the process?
Do you use any tools to perform conversion or a tools that provide monitoring where the incompatibilities might occurs (on line per line basis).
Or did your company outsource it to 3rd party to perform conversion?
FYI I work for 2000+ person company, mostly engineers therefore it will be a lot of macros & programs to be changed.
Thanks beforehand |
| Wed 03 Dec | Robert Jacobson | In theory, there shouldn't be any incompatibilities with macros between Office 97 and later versions -- the Office VBA model has maintained backwards compatibility. Of course, no guarantees. |
| Thu 04 Dec | MSHack | Again, never say never, but I have not had any issue with excel or access and we have a few people who do some really 'outside the normal' type of stuff.
If you think you have a big concern, buy a copy for XP and just try the ones in question. You should be pleasantly surprised.
If you do have an issue, I would be interested in hearing it. |
| Thu 04 Dec | tapiwa | Never had problems with Excel, but every time I have upgraded Access databases break.
Every time. The open database and save as new version just seems to break stuff. |
| Thu 04 Dec | .. | Access databases can break because Access 97 uses DAO (the JET-only database objects) by default and Access 2000+ uses ADO (the generic database access technology) by default. Thus, when you have VBA code that looks like:
Dim rst as Recordset
Access 97 interprets that as DAO.Recordset whereas Access 2000+ sees ADODB.Recordset .
So the fix to this is to either:
-Qualify all your Recordsets to be either DAO or ADODB
-Go to the references (CTRL-G, Tools->References) and rearrange your DAO/ADO references.
This is a painfully common error. |
| Fri 05 Dec | Albert D. Kallal | Believe it or not, the newer office 2003 with ms-access now INCLUDES the dao JET reference by default.
In other words, despite the rumbles for the LAST 4 versions for office that JET is dead, the brand new spanking office XP 2003 includes a dao references by default.
Despite what people think, Microsoft is not stupid. Removing the reference caused a increase in support calls. In addition, developers complained. MS is not, and does NOT want to break previous compatibly. To do so would cause companies to resist upgrading to the next version of office.
So, as a result of the above two issues, the JET dao reface is now back by default in the new version of office.
They done the above despite the fact that JET is in maintenance mode only. A sign of a smart company indeed. (ie: just keep everyone happy).
Note that when you use ms-access to upgrade from a97 to a newer version , such as a2002, then the DAO reference is included and set for you. All versions since a2000 have done this automatically.
However, if you import the forms from a old version (not upgrade...but import), then the reference is NOT set for you automatically. So, when possible, let ms-access do the upgrade for you.
I taken some fairly extensive applications from a97, and they converted to a2002 without a hitch.
The only real change that got me was the fact that the MsgBox command is now a native VB msgbox command, and not a ms-access native one (as it was in a97). Thus, a few options like bold text in the box are now missing in a2002. However, all msgboxs did continue to function.
The other thing (again minor) was the application name appears in all msgbox commands in a97 (when the title pram is left blank), where as in a2000 and later, all msgbox commands when blank, are blank! Anyway, you can do a global search and replace when in the code editor, and this search will also traverse the forms/reports code too. I simply put in the title a global value that I set.
The above two issues could have well been left alone in the conversion process.
The real problems with conversion from older versions is often due to the fact that often the older ms-access application has compile errors and all kinds of junk stuff in the mdb file. To get around that, I always open the old version in the old version of ms-access, and then in the debug window do a compile and save all. If there are compile errors, then trying to upgrade the code to a newer version is not a very good idea. The errors in code should be fixed BEFORE trying to run the upgrade feature of ms-access
Of course, if compile errors exist in the old code, then this also means that the application has been running for years with compile errors, and that is a bad thing. The people who allow that should be sent to the salt mines for a few years.
So, if the older application was well designed and coded, then upgrading usually runs without a hitch. If the old application was a mess, then often the upgrade does choke.
Albert D. Kallal (Microsoft Access MVP)
Edmonton, Alberta Canada
kallal@msn.com
http://www.attcanada.net/~kallal.msn |
|
| Configuration Management book recommendation | Wed 03 Dec | Gavin Stark |
| I am looking for recommendations for a good book on Configuration Management. (specifically as it relates to managing source code and documents)
Im looking for some guidance as how to maintain, with a common code base, seperate releases for multiple customers (who all have customizations). Im looking for something that will explain pros/cons of various approaches (promotion groups/models, branching, etc.)
Anyone have any recommendations?
Or if you know of a course (online or not) Id like to hear. |
| Wed 03 Dec | anonQAguy | well, one thing you can do is to download a copy of starteam from borland's website.
they'll let you run it for an eval period, but unless you're really interested in that tool specifically, you can ignore installing the software itself; what you're looking for is the documentation that goes with it.
you may be able to get the docs as pdf's from borland's site separately from the starteam download itself. not sure, but you might check.
as you'd expect, the ST documentation is targeted at using that tool itself, but in the course of explaining how to do various things with starteam, they describe various CM problems and common usage scenarios people run into, decision factors, and solutions to use.
versioning, labeling, branching, merging, etc. are common CM problems regardless of the tools used. The sections of the starteam documentation arranged as 'scenarios' are particularly handy.
I don't doubt there are a number of books available, but this option would at least get you going for free. it might answer whatever questions you have right off, but even if not, it will likely improve the quality of your subsequent research.
good luck. |
| Wed 03 Dec | A Software Build Guy | This web site is the place for Configuration Management on the web http://cmcrossroads.com/ also checkout
http://www.snuffybear.com/ucmcentral.htm both sites have reviews on CM books and CM Crossroads has a fourm for CM questions as well as a Wiki on CM best practices. |
| Thu 04 Dec | Ken McKinney | Brad Appleton's ACME project - which seems to be hosted at cmcrossroads these days http://www.cmcrossroads.com/bradapp/acme/
He also has a book out which I haven't read. |
| Thu 04 Dec | Steve Berczuk | The book that I wrote with Brad Appleton is:
Software Configuration Management Patterns: Effective Teamwork, Practical Integration. (www.scmpatterns.com). The book has gotten some good reviews on amazon etc. It does not talk about branching much(by design) beyond things like a ReleaseLine. The scmpatterns web site has some links to other books that might provice more info on that, if you really feel a need to branch. |
| Fri 05 Dec | Gavin Stark | Well that is what I am wondering. We are supporting a core set of functionality (in libraries and in some stand alone application) but individual customers need modifications and we need to release those simultaneously.
We already have a good build system and will be implementing PVCS (we use that for source control) Promotion Groups. However this doesn't give us the ability to do the parallel development/deployment we want.
I'll check out these books/sites.
Thanks! |
| Fri 05 Dec | Gordon Hartley | If you're happy to use CVS then this covers pretty much most of what you've mentioned:
http://www.pragmaticprogrammer.com/starter_kit/vc/index.html
I've bought the PDF version and am finding it very useful. |
|
| Joel Article Request : product support | Thu 04 Dec | braid_ged |
| Joel,
Prompted by the Count Almasy Shrinkwrap support ratios thread :
do you have anything to say about managing user support of software apps ?
Obviously lots of us want to build a software product and sell it. I intend to. But issues like providing email support does seem quite intimidating.
I expect when my app is finished, polished and put on the web for credit card purchase/download I will still be working a 9-5 job, so what are your experiences with support ?
Is it a little bit of fake it till you make it ? offering support without knowing for sure what demand, and hence you ability to meet it will be ?
Braid_ged. |
| Thu 04 Dec | Dennis Atkins | You'll do support weekends and evenings for as many hours as is needed. If you don't do support and you charge for your product, you will soon develop a bad reputation and customers will go out of their way to avoid your product. So you have to provide it.
If support gets to be taking up to much of your time, then at that point you should be making enough dough to either hire a customer support person, or to quit your job and go it alone. Unless you foolishly priced your product too low to pay for the costs of providing support. If you did that, you will be doomed. If not, you have a chance to be OK.
If you priced it OK and you are getting too many requests that are for basic functionality or bugs, then your program is not good enough. Make it easier to use, improve live help, add a customer support forum, fix the bugs. Once the program is stable and has a good UI, most of your requests will be for new features and obscure problems. Again, be sure to have your program very stable before releasing it, or customer service issues will go from 30% of customers to 200%, which can kill your business model with support costs.
But do be prepared to handle requests from 30%. |
| Thu 04 Dec | Dennis Atkins | By the way, many people pooh-pooh usability issues and testing/QA. But usability issues and QA are the key difference to going bankrupt because you can't afford the level of customer support you need to provide and making a living at what you do. |
|
| Stitching together MS Word Documents | Thu 04 Dec | Fred0 |
| So I want to do something impossible: stitch several MS Word documents into one big document using Java on a Linux server.
I found some Windows DLLs that claim to do this, but thats not going to help under Linux.
I could call some command line tools, but I cant find any that will do this. If OpenOffice were scriptable in this way, that would be great, but I dont think it is.
Any suggestions? |
| Thu 04 Dec | Dustin Alexander | Let's see. OpenOffice IS scriptable, in fact the OpenAPIs seem quite decent (I say this with the least possible experience beyond reading the Doc).
OpenOffice has several external SDKs, including one in Java. Apparently, the premise is to run the binary version of the application as a server and interface with it using the SDK. This from one of my co-workers.
When I read through the documentation, a lot of it seems to be focused on creating plugins for OpenOffice, but it seems flexible in that regard. I'd be interested in hearing from someone with experience using it.
http://www.openoffice.org/dev_docs/source/sdk/
Also, Apache has HWPF, which is in early development but might be of some use. If you're using simple documents, it might be worth a go.
http://jakarta.apache.org/poi/hwpf/index.html
Alternately, you could probably save the files into a different format and then rework the front end with any formatting language. |
| Thu 04 Dec | Robert Jacobson | If there isn't an easier way, you could submit a request to Microsoft for the specification to the Microsoft Word binary file format, and then roll your own program to concat multiple files. I don't know how much supplication to Microsoft is required.
http://support.microsoft.com/?kbid=290958 |
| Thu 04 Dec | Just me (Sir to you) | Do you want to type the code with both hands tied behind your back as well?
Linux
^
VMware
^
Windows
^
Word <- automation <- Java |
| Thu 04 Dec | DJ | Dead simple if you were running IIS and Office.
Just use VBA and Word Automation
Pseudo-code:
Open new doc
For list of files
Insert From File
Next
Save doc |
| Thu 04 Dec | Fred0 | Are you saying my hands are tied behind my back because I'm not using Microsoft?
If I really wanted to I could have another Windows machine or VMWare system that my application servers talk to in order to get this done. But only if there is no better way.
I'm looking into the StarOffice API a little more. I also like the idea of converting to another format, doing the stitching, then converting back. My software normally deals with PDFs, which are dead simple to work with in Java. If I can find something that compiles under Linux or runs in Java to easily convert back and forth, that might work. |
| Thu 04 Dec | Robert Jacobson | Well, DJ is right that it would be stupid-simple if you could use Office automation. (Microsoft Word exposes a very rich API called the VBA Automation Model that you can access through COM.) Here are some articles that discuss how to access this through Java:
http://www.land-of-kain.de/jacob/
http://www.java400.de/default.html?Javactpe.htm
http://j-integra.intrinsyc.com/j-integra/doc/other_examples/Word_from_Java.htm |
| Thu 04 Dec | WildTiger | For "Word Document" you mean .DOC? .RTF? .HTML generated by word? .XML by Word 2003? Later 2 could be way easier then former... |
| Thu 04 Dec | Brad | Um, I would ask whoever created the MS Word documents to use Word to stitch them together into one big document. That process takes a click or two of the mouse. |
| Thu 04 Dec | Dustin Alexander | Without context this is hard, but I'm guessing the word documents are provided by a number of third parties and it is the OPs job to aggregate them into an online delivery system.
An explanation of where this question is coming from might be useful here. |
| Thu 04 Dec | mb | Also note you're not supposed to run Word on the server. Though many people do, it's not designed for it (imagine some random dialog box popping up) nor supported.
So finding another utility, on any OS, is good if you can get that to work. |
| Thu 04 Dec | MR | I don't know if you can use Word Merge but you could generate your data in some sort of text file then shuttle it off to a Win32 box to merge the file and the template. That is what we had to do in order to automate Word Mail Merge on our Unix boxen. |
| Thu 04 Dec | Robert Jacobson | Good point mb. Here's some information from Microsoft about running an Office application on a server. The official party line is 'you shouldn't do it, but here's how you can if you have to.'
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q257/7/57.asp&NoWebContent=1 |
| Thu 04 Dec | Burninator | If formatting isn't important, you'll probably find that there's a Word to text converter out there in the public domain.
In particular, take a look Lucene and see if there's a filter for indexing Word documents. If there is, then you can probably easily adopt that code to do what you want it to do.
Of course, if there's images, tables, OLE objects, etc embedded in the word documents and you care about them... well... good luck. |
|
| Trackball Recommendations? | Wed 03 Dec | www.marktaw.com |
| My old Microsoft Trackball (http://www.amazon.com/exec/obidos/tg/detail/-/B00005853X) isnt as smooth as it once was.
Does anyone have recommendations on how to clean it? Ive tried everything from alcohol to WD-40, but I suspect its micro scratches in the surface that are slowing it down. Maybe some sort of silicon based polish for cars like Rain-X or a car wax?
Or should I just get a new one. If so, what brand? Im used to my thumb trackball and would probably want to stick with that type. Logitech or Microsoft? is there a non-Logitech/Microsoft brand I should look at? How often do you have to replace the batteries in a cordless?
I think there should be a technology that reads your eyes and tracks what theyre looking at, hover over the button to bring the mouse there and tap to click. Maybe in the thumb position just under the space bar. |
| Thu 04 Dec | Roose | How about if you just think about moving the mouse? They have had success with implanting disabled people's brains with sensors, and they can think about certain things and move a computer mouse cursor. |
| Thu 04 Dec | www.marktaw.com | Hmmm. Do I want microsoft in my brain? What if they decide to DRM knowledge? |
| Thu 04 Dec | David B. Wildgoose | I know you said you liked thumb trackballs, but I strongly recommend you reconsider. The Microsoft Trackball Explorer is the best mouse on the market, bar none. (I may prefer Linux, but their mice are unbeatable).
I could never get to grips with a thumb trackball, the ball is too small and the level of fine control needed is too great. The large trackball in the Trackball Explorer controlled by the fingers gives extraordinarily smooth, precise pointing.
But the best aspect is its comfort. I switched to the T.E. because I was beginning to suffer RSI in my mousing hand. No longer. My hand is kept in a perfectly natural, relaxed position, and I recommend *everybody* give this mouse a try. |
| Thu 04 Dec | www.marktaw.com | I went for the thumb ball because I play bass and between my bass playing and mousing around, my middle and index fingers were getting kinda sore by the end of the day and I was afraid of some sort of repetitive stress injury.
Now, with this sluggish trackball, my thumb is getting a workout, though I suspect a new trackball should clear it up. I'll probably just get the equivelant Logitech so I can compare the two brands.
I'll take a look at what you recommended though. Too bad comfort & ergonomics are really something you have to get used to and not something you can try out in the store. |
| Thu 04 Dec | Robert Jacobson | There's this device...
http://www.naturalpoint.com/index2.html
http://www.pcworld.com/news/article/0,aid,47604,00.asp
You stick a little reflective dot on your forehead, which is tracked by a camera sitting on your monitor. Makes you look pretty silly, though. And since it's based on your head movement (not your eyes) I doubt that it's very precise. |
| Thu 04 Dec | David B. Wildgoose | 'I went for the thumb ball because I play bass and between my bass playing and mousing around, my middle and index fingers were getting kinda sore by the end of the day and I was afraid of some sort of repetitive stress injury.'
Snap. (Or more accurately, I've recently started playing bass).
I find I don't use the tips of my fingers to control the ball, but rather roll it along my finger lengths instead. |
| Thu 04 Dec | Geo | You might find this interesting. I've been trying it out for about a week. Takes a bit getting used to, especially if you're not used to trackballs. Cool thing is it can be used with either hand, plus if you've extra ports you can use it alongside your old mouse.
http://www.mansink.com/rgo/ |
| Thu 04 Dec | Mr Thumbs | The wireless Logitech trackball (thumb version) is to die for ... |
| Thu 04 Dec | Li-fan Chen | Kensington makes really nice ones for the macintosh community, but if you know they still make PC versions please look into them. |
| Thu 04 Dec | Robbert de Groot | I like the marble mice from Logitech. I have one of the funky FX, and a wired and wireless thumb one. I'm not too much a fan of wireless. One time the battery died and I was looking all over the place trying to figure out why my mouse didn't work. Then I realized the battery died. Blond moment. One of many.
I prefer trackballs over mice. Less desk realestate for them as they don't move from their position. The FX is great but if you have software that uses mouse coord (I.E. pressing a combination of buttons) then it's not the greatest tool. |
| Thu 04 Dec | www.marktaw.com | Dot on my forehead, I love it! Too bad it's 3x the price of a wheel mouse. And I have to wonder how sticky that dot remains (I'm sure it's on the website) and sharing my computer with that pimply faced teenager would be even less appealing. (joke)
> Not Found
The requested URL /rgo/ was not found on this server.
So no cleaning recommendations, and I'll probably get the Logitech. |
|
| itunes ACC restrictions | Wed 03 Dec | Christopher Hester www.chrishester.org |
| So, I rebuilt by laptop recently, and reinstalled I tunes, not big deal. So when I went to play music, it told me i was not authorized to l |