last updated:06 Aug 2003 14:53 UK time
Joel On Software Discussion Forum
JOS Statistics - Recent Comments
(Comments added for week ending Sun 23 Mar 2003) | View Other Weeks
WinCE beats VxWorks in revenue | Sun 23 Mar | Nat Ersoz
http://www.embedded.com/story/OEG20030321S0033 With the handheld market growing, MSFTs revenue numbers exceed VxWorks. Nothing revolutionary, but certainly a data point on the history timeline.
Sun 23 Mar | Mitch & Murray (from downtown) | XP Embedded is the new Big Guy in town if you aren't after a small footprint. Near as I can tell from our own customer feedback is the adoption rate on this thing is amazing. Why? Because the masses already have the development tools and already know the Win32 API in their sleep. Over time, VxWorks, Wind River, and QNX are probably going to get hosed.
Sun 23 Mar | Myron Semack | Being an embedded programmer, I HIGHLY disagree with that statement. XP Embedded targets an entirely different market than VxWorks, WinCE, or QNX. XP Embedded is for lightweight PC's, like set-top boxes, thin clients, kiosks, etc. The biggest selling point for XP Embedded is its compatibility with desktop Windows. XP embedded does NOT provide any sort of enhanced reliability or deterministic real-time capabilities. It doesn't support any non-x86 architectures. You won't find XP Embedded in an avionics system, satellite, or submarine. VxWorks, WinCE, and QNX are hardened real-time OSes. They're made for truly embedded systems. Most RTOSes have no GUI (or it's optional). They usually don't have any separation between user mode and kernel mode. Real-Time operating systems are expected to be quick-booting and respond to interrupts instantly. CPU overhead is minimized. Also, most RTOSes support a wide range of architectures (PowerPC, XScale, ColdFire, etc). I will agree that WinCE is an up-and-comming player in the embedded market. I have more and more customers asking about it (Linux too). The embedded world is a huge growth market for Microsoft. 98% of all processors sold last year went into embedded systems. I read about this study about a week ago. WinCE, Symbian, and Palm are used in handhelds, cell phones, and industrial PCs. They all have practically zero usage in the military market. VxWorks and Green Hills are totally unused in the consumer market, but is a huge player in the military market. QNX is used in the medical and scientific systems. This study mistakenly lumps all consumer and military systems into one category. All this really shows me is that the consumer market uses almost as many embedded systems as the military market. Although, I must admit, I was very surprised to see LynuxWorks in the top 10.
MFC Future? | Sun 23 Mar | Hoang Do
Just a slight digression from this topic: http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=35297&ixReplies=17 For someone who have invested 4 to 5 years working with MFC to get to the nuances of the infrastructure, it is disappointing (to say the least) to find out that Microsoft will be obsoleting this. I am sure there are many many companies who have invested their products on MFC and ActiveX. What do people working in these areas think and what are your plans for the future? Move your applications to .NET? That is a major investment with a ZERO return business case.
Sun 23 Mar | Tony E | I see this as one of the issues with using a proprietary platform such as MFC, .Net, WTL etc. I expect in 5 years time I’ll see similar posts bemoaning the demise of .Net due to its replacement by some new essential technology from MS.
Sun 23 Mar | Duncan Smart | Is the source code to MFC not provided as part of Visual Studio/SDK?
Sun 23 Mar | dmooney | The source IS provided.
Sun 23 Mar | Nat.Ersoz | Tony E., So true, so true. There are some MSFT 'technologies' (ie, programming API's / techniques) that will have a longer life than 5 years: 1. The Win32 (kernel) API. 2. DirectX (specifically: DDraw, DSound). Outside of those, well, its pretty amusing... Party on.
Sun 23 Mar | Nick | Where did the story that MFC was being obsoleted come from? Looking at the MS web site, MFC is alive and well in VS.Net 2003: 'Visual C++ .NET 2003 continues to deliver a range of libraries, including: A fully ISO-compliant STL implementation (providing generic container classes and algorithms). ATL and MFC (now updated for Windows XP and Windows Server 2003). ATL Server (enabling unmanaged dynamic Web content and XML Web services). ' (from http://msdn.microsoft.com/visualc/productinfo/visualc03/overview/default.asp ) Is there something I'm missing?
Sun 23 Mar | Anonymous developer | Well, I think what worries the original poster is that the center-of-gravity of Microsoft platform application programming seems to be moving from Win32/MFC to .Net/CLR. It's not that MFC's going to stop working, it's more that it's become mature, and probably won't get many new features from now on. The 'ha ha, serves you right for trusting MS rather than going open source' argument doesn't really apply here, since you do get the source for MFC. It's just how things go -- you could port MFC to C#, and make it work with the CLR, but then it wouldn't really be MFC any more. I'm not sure why the original poster is worried, though. They can pretty much reuse all their MFC experince with C#/CLR. It's not like they have to start over from the beginning.
Sun 23 Mar | Brad (dotnetguy.techieswithcats.com) | I disagree with Nat. .NET represents a significant platform shift. The goal is to get away from unmanaged code, which includes directly accessing Win32 and DirectX. Those technologies are both exposed from within .NET (as of DirectX 9, which includes a managed wrapper). You can argue that the abstraction isn't good enough yet, but it will be. This IS Microsoft's future. MFC isn't going to just stop working one day, but I think we're all agreed that MFC had its last major update many years ago with VC++ 4.2. Since then, MFC has been on coast, because it's a matured technology. Unless and until Microsoft one day says 'we aren't going to support Win32 any more', MFC is still a viable (if annoying) way to write Windows apps. Now as to the original poster, I think your personal growth as a software developer means you need to make a choice what to do. Some day soon (let's guess a year or two), all new development jobs on Windows are going to be in .NET, and that MFC knowledge isn't going to count for as much as it does today. So you probably need to start learning .NET if you're going to stay with the Windows platform for the long term future.
Sun 23 Mar | Brad (dotnetguy.techieswithcats.com) | Oh, and by my guess, Microsoft has only had a shift like this twice in its history before: moving from real mode DOS programming to 16-bit Windows programming, and again moving from 16-bit to 32-bit Windows programming. Nothing else has really been as significant as the shift to .NET is.
Sun 23 Mar | Philo | Tony E - you forgot to mention Java. (Still owned by Sun, IIRC) I guess if you want to truly be 'vendor independent' then you're stuck with C++, PHP, HTML, Perl (can Larry call Perl home? [g] )... Philo
Sun 23 Mar | Albert D. Kallal | From a career point of view, one should always invest time in learning things that will have a long term value. For example, when people ask me what to learn, I always say learn SQL. I learned it more than 10 years ago in the dos based FoxPro. I use it for every application I work on today. Be it ms-SQL, ms-access/JET, and now MySql. Lean SQL, and I will take bets that you also will be using it in 10 years from now. I have no doubt this skill will last me more than 20+ years. So, one should pick and choose good long term technologies that don’t change. That means generally the platform should be based on as many proven standards as possible. I remember writing software in Pascal, and have not done that for more then 10+ years now. However, if I had learned C back then, it would certainly have been a skill that I still use today. So, C was also a major standard (it is obvious that system software was being starting to be written in C, and not Pascal at the time). The choice of language should have been obvious to me, but it was not. Don’t we all love hind sight!). The other key is to pick technologies that add value to the business community (so, standards + key technologies = good!). Many tools and platforms and environments we learn generally only have a shelf live of 5 years, or even less. If you don’t like the idea of learning a new development tool every 2 or 3 years, then you will quickly find out it is time to leave this industry. Remember, good developers will concentrate on those skills that make them good developers, and that is NOT knowing how to print hello in 20 different computer languages. A good sprinkling of software development books is really recommend here. Oh, gee, what is the new software flavor of the week? It should not matter. Don’t start learning Java because it is cool. Lean Java because it is key technology that IBM is using to deliver corporate solutions. Further, the value of what you learned is ONLY of use if those tools let you create solutions to people who WILL PAY for those solutions. Smalltalk was revolution in software development, but did not deliver solutions to the BUSINESS community. This is critical, since you want to learn tools that let you DELIVER solutions. Hence, Microsoft is not stopping me from writing software in FoxPro 2.6. In fact, I have often mentioned how incredible the MS track record is in this regards. Recall how apple in the early 90’s had everyone THROW OUT all software for the next platform. This was done again recently at apple. With MS, you should be able to use the MFC library for years to come anyway. Hey, how about learning a new word processor every year? Remember ZyWrite, then SuperScript, and then Wordstar, and then WordPerfect and then ami-pro, and then ms-word? Way back then, people learned a new word processor every year. In addition, people also were learning new systems all the time. Turbo-Pascal, then VB, then Delphi. Heck, the same goes for database software. Lets see, Advanced Revelation, then dbaseII, then Reflex, then FoxPro, then ms-access. This is the short list! Software cycles for development tools are actually increasing in time, not decreasing. I cringe to think of just the word automation code that I would have to throw out today if clients throw out ms-word. The only real problem I can say here is that developers can only absorb so much, and the HUMAN COST of learning a new system is rising DRAMATICALLY to day. The result of this increased hum cost now means that picking the right tools and platforms is VERY IMPORTANT. Before, it was easy, you just picked whatever you wanted, or seem to need at the time. Now, we have to use our brains, and pick real solid tools. So, while you might have to do some new platform learning..that should be viewed a welcome new challenge. Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com
Sun 23 Mar | complex matter | MFC isn't going to be supported? At what point in time?
Tips, Advices for writting EASY to port code | Sun 23 Mar | Codex
What kind of tips, advices you would give me to write *easy* to port code. Im planning to write a small video game that I would like to port to a few system (PC, Pocket PC, Palm OS,Mac) Is there any good articles, books regarding how to write reliable and portable code across a wide range of platform?
Sun 23 Mar | Myron Semack | It's not a very extensive article, but it provides some key tips. http://www.embedded.com/story/OEG20020924S0072
Sun 23 Mar | Ori Berger | If you have games in mind, check out SDL, the Simple Direct-media Layer at [ http://libsdl.org ] - It's what you should target. If you want to target many platforms with a game, it better be a board game, or a relatively mild arcade game. Different systems differ to the extent that it's almost impossible to produce a fast paced arcade game that is addictive and compelling on more than one platform without optimizing for each platform individually.
Sun 23 Mar | Mike Swieton | Ori: I beg to differ. id Software has written games for multiple platform for quite a while. I don't know about early ones, but Quake ran on DOS and Windows initially, and also had OpenGL acceleration available. Every game out of them since has. And they've always been pushing the envelope. It's mostly done through the standard methods: wrap the important and system-dependant stuff. Rely on the OS's GL implementation. But then again, they have many many years of experiance writing code at all the levels, so competing with him is hard 8-} But it can be done, feasibly. Not to mention the after the fact Loki ports (not economically viable, but technically the succeeded.).
Sun 23 Mar | Arron Bates | Java?... Java can just about do anything. really. And it's on all the platforms that you require. I know someone's going to jump in and say it's not performant enough. Please dont, because it's simply not true. Take this truly hot flight-sim... http://www.il2sturmovik.com ...it's all Java. If pervasive computing across platform is what you're after, Java has no equal.
Sun 23 Mar | AEB | All java huh? IL-2 Sturmovik:MINIMUM SPECIFICATIONS Computer: Pentium III 800/AMD Athlon 700 or better Memory: 256 MB of RAM ( 512 MB is recommended) Operating System: Windows(r)98/ME/2000/XP DirectX: DirectX 8.1 or higher (included on disc) Video Card: 3D video card (DirectX 8.1 compatible) w/32MB RAM (64MB recommended) CD-ROM: 4X CD-ROM or better (Not recommended for use with CD-RWs) Audio: Direct 8.1 compatible sound card Internet/Network Play: Internet connection (56 kbps or better) or LAN for multiplayer Hard Drive Space: 1.1 GB So it's only Windows, uses DirectX, it uses dll's - so what part of it is java - the installer?
Sun 23 Mar | Fred the Elastic Pancake | In addition to the previous post, I can't help but note that there is nothing to download for this 'high-performance' java game. Screenshots, sure, but I can make pretty screenshots with Gimp; it won't make a fast game. Java CODE compiled to binaries for a single system has no reason to be slow. But then, it also has no reason to be Java. Multi-platform java DOES have performance issues, in spades. Check out jEdit, and tell me that you honestly believe a text editor should take so long just to start.
What One Recruiter Really Thinks of Techies... | Sat 22 Mar | Fly on the wall
This is a posting by a self described agency technical recruiter to a message board that is used by IT contractors. This post is in response to a thread that was begun about ways to disintermediate, that is, to find contract work or jobs directly with clients instead of using agencies. http://pub21.ezboard.com/fopenitforumfrm9.showMessage?topicID=392.topic&index=24 Im not advising joining in the flame war. But the next time you get a call from a headhunter, be advised that SOME of them really do feel this way.
Sat 22 Mar | anon | Sounds like a guy who's tired of the abuse. Wrote a little post to get it out of his system, no harm done. There's a few good recruiters and a whole lotta bad ones. Same with programmers -- a whole lot of bad ones, and allah forbid you work with them. Ever been on Slashdot and get tired of those bullshitters who repeat the same dogma? They don't represent opensource, and it's a catharsis to tell them off.
Sat 22 Mar |       | That rant was directed at the open IT forum. I think he's right on the money about those guys.
Sat 22 Mar | Stephen Jones | So Bella's got a brother! The guy might be a troll, but he's got a fair point. Programmers should code and recruiters recruit; nobody ever worked out why all writers, film stars and sportsmen have agents? And as for people being embittered, well, when I'm depressed I go over and have a look at Netslaves; there's nothing guaranteed to cheer me up more than others' misery, particularly when the types who are miserable seem so thoroughly to deserve it.
Sat 22 Mar | Troy King | The poster sounds smart and observant to me. I think he nailed it.
Sat 22 Mar | Philo | I really, really hate people who stereotype and are successful nonetheless. 'You guys have no business sense.' Uh-huh. I'm assuming 'you guys' means techies? So was he referring to Michael Dell or Bill Gates? Maybe he meant Jeff Bezos? Each person is a shopping bag of skills and talents. Often times having one strong talent indicates a lack in other areas because of the effort required to maintain that talent (I'm sure the average Olympic gymnast isn't a 'business person' either). But you cannot categorically say the presence of one talent indicates the complete absence of another. After all, the term 'renaissance man' exists for a reason. Also be careful of the lawnmower handle effect... A boy was riding in his father's car when he asked 'Dad, how come they don't make lawnmowers with folding handles?' 'What makes you think they don't, son?' 'I keep seeing cars drive by with lawnmower handles sticking out' 'Ah. And how many cars have you seen drive by with lawnmowers folded in the trunk?' The moral: When one type of attribute is visible while the other isn't, we tend to overestimate the prevelance of the visible attribute. In the current case our beloved recruiter is laughing about techies being business morons based on the ones that come to him for jobs. But how does he know how many techies *with* business acumen are ignoring him because they're working? My final observation - he sounds like a snot-nosed college boy (even if he's in his 30's) that simply wants to believe himself superior and does so by putting down those he envies. He has not lost sight of the fact that he is brokering the talent people *really* want. And he doesn't like it. Philo
Sat 22 Mar | | The guy is as ignorant of some business basics as those he condemns. I'm not in a position to elaborate at the moment. While complaints about recruiters are often poorly presented, they do have a solid basis. Recruiters are just middle men; they don't create jobs; they just insert themselves into the job availability / job application process so as to extract a commission. They do add some value, but nowhere near as much as what they charge. To sustain their artificially high commission, they need to and insist on rigorous control of the process, particularly relating to information. On the comparison with agents for actors and sportsmen, there is a big difference. Those agents generate very large end payments for the actors and sportsmen - much larger than the actor or sportsman would obtain otherwise - so the actor or agent is happy to pay a significant commission. However for programmers, the pay is no greater than would be obtained by working directly for the employer, and in fact is less. For programmers, the game is a win-lose. Note also that sportsmen and actors know exactly how much they're paying the agent, and make that decision.
Sat 22 Mar | never needed to use a recruiter | Im an IT chappie, but frankly I think I preferred what mike had to say over the response of the childish bums who responded to him.
Sat 22 Mar | Fly on the wall | I think Philo explained this person better than anyone here, except that this guy is not really the picture of entrepreneurial success. On the response this guy garnered with his posting, I wish someone here would give give the Open IT participants some credit for having a constructive discussion on ways to market directly to companies ... that was diverted by a loudmouthed and egotistical a-hole 'setting everyone straight'. Really pretty damned dense of some of you to not support your own kind and to not take into account just who was intruding and who was having a 'meeting'... I think if someone elbowed their way into your house and invited themselves to your party and then started telling off color jokes, they would deserve a bad reaction too. I think it's an accurate generalization that recruiters are often untrustworthy, status grubbing materialists. A tech writer friend worked for one of these 'solution providers' a few years ago (in '99) and was getting a LOT of grief (pressure and snide comments from sales borks that worked in the place) over his declasse' mid 90s domestic sedan...
Sat 22 Mar | chunks | I'll take the conversation a step further in the wrong direction and say that any recruiter i've ever dealt with has been a guido from long island who went to nassau county community college and is now cold calling in an attempt to make it big without having to learn a useful skill. Think of the movie 'Boiler Room' but shift contexts a bit. In silicon valley, the recruiters were all dizzy girls with psych degrees from Cal State Hayward. In either case we are talking about people who make $50,000 a year and also drive $50,000 cars. These aren't people who care about your career, and don't really care about their own careers, either...they just care about making easy money and spending it as quickly as possible.
Sat 22 Mar | Daniel Shchyokin | Recruiters do have a usefull skill, they are willing to make those 300 cold calls a day to find somone a job, something most programmers are not willing to do themselves, if they did recruiters would not exist. Now as far as their commissions, I think the market dictates that also, I bet they have come down a lot (20% was normal) since the dotcom days. Also don't forget that the reason salaries got so high in the first place is recruiters would constanly move people around, driving up salaries
Sat 22 Mar | Mark B. | Mr. LasVegas' post is very interesting, but he never tells us why recruiters do the job they do. In this poor economy do recruiters really do that well?
Sun 23 Mar | | Daniel, you've got it wrong. Recruiters don't make 300 calls a day to 'find someone a job.' They do it to STOP programmers finding a job directly, and ensure THEY intercept the job and can then market it, collecting their commission on the way. If there were no recruiters, the jobs would still be there, and programmers would still get them. As to commissions, 20 percent is low. Recruiters were able to pocket much higher commissions, sometimes far exceeding the amounts paid to programmers. This was one reason H1-B's were so attractive, by the way, for certain classes of recruiter. This also is why recruiters earned salaries of $300,000 and above during the dot com days.
Sun 23 Mar | never needed to use a recruiter | 'Really pretty damned dense of some of you to not support your own kind' my own kind? call me a fuckwit but I dont consider spoilt, childish IT people 'my own kind'. I like to pretend I belong to a group composed of at least vaguely well-behaved and polite individuals who behave politely right up until it becomes necessary to not behave politely. 'and to not take into account just who was intruding and who was having a 'meeting'... I think if someone elbowed their way into your house and invited themselves to your party and then started telling off color jokes, they would deserve a bad reaction too.' Im not entirely convinced that a public forum can be compared to my personal place of rest....but if so then I refer you to my first point.
Sun 23 Mar | Stephen Jones | Philo, the 'you guys' are the people who are posting to that forum, in particular the main thread. I didn't see Bill Gates or Jeff Bezos there; perhaps they're using a handle. What is the difference between the attitude of the guys in the thread 'We'll start a recruitment agency. We don't have any customers but we've got a load of programmers so we'll get a web site going and then we'll hire some sales-monkeys to do the job.' and the attitude people on this forum are always complaining about 'We'll start a software company. We don't have any customers but we've got a load of salesmen so we'll get a web site going and then we'll hire some code-monkeys to do the job.'
Sun 23 Mar | ODN | I'm not convinced of the intelligence of that recruiter after he posted his own cell phone number in 'retaliation' a few posts down...
Sun 23 Mar | one programmer's opinion | The recruiter in that thread seems to be an independent broker (owns his own company). I tend to have more respect for these type of individuals than I do for the ones who work for someone else. My experience is that most companies that call themselves consulting firms are nothing more than body shops. They don't seem to offer much in terms of service to either their clients or the technical workers they employ. I noticed that EDS canned their CEO Dick Brown the other day. Supposedly he earned close to 50 million dollars last year and was given a 37 million dollar severance pay package. Anyone who believes that most staffing firms only take 20% of the billing rate, must be on crack.
Sun 23 Mar | | Stephen, I agree it is naive for programmers seeking to stop getting screwed to expect to do this by starting their own recruitment firm. That's not how it works. However the basis for their anger is valid. It's just they need to reconsider how to be independent, and also consider much deeper issues about the structure of this industry. Your point about their approach being the same as dumb business guys is valid. However their expression of the solution is not a valid one. If they expressed the solution properly, it would not fall foul of the problem you raise. In a way, the point you make actually supports their case and their anger. To a greater extent than, I think, any other professional occupation, programming is one where many other people profit by screwing the professional people. That is, by screwing the people who have the talent and have made the investment in training.
Sun 23 Mar | Bella | I have never consulted through an agency. Do they basically try to get the highest bill rate from the client, and. in turn, pay the lowest rate to the contractor, in essence maximinzing the 'spread'? I expect there to be some level of optimizing of the grey areas. ie: Agency needs pay as little as possible, while still maximizing the quality of staff they send the client, so as not to jeopardize other potential placements. ie: Collect $100/hr from client, but rather send over a $75/hr guru, as opposed to a $65 neophyte. Trying to save that extra $10/hr would be 'penny wise', as you may ruin the relationship with the client, if they sense the agency is trying to pocket as much as possible, at the expense of sending over decent talent. What kind of business/economic/MBA term/phenomena am I trying to describe in the above scenario? 'Maximizing'? 'Optimizing'? 'Trade off'? '2 variable optimizing'?
Sun 23 Mar | Bella | To anyone who is angry about recruiter 'gouging', I say don't use them. Problem solved. No one says you need to use them. They provide a service, perhaps overpriced in your eyes.. If you choose to do the work they find for you, you are agreeing to PAY them a cut. Like an agent. If you think their 'fee' is too high, then don't use their services, and find work on your own. You can pay $6 for a cup of Starbucks coffee, or you can brew your own cup for 25c. It's all up to you. In a free market, there is no 'right' fee or cut or 'too high' or gouging. They can charge whatever they feel like it. If 20% or 50% or whatever is unfair or too high, then market forces will force them to adjust. As long as there is someone who agrees to the terms, then that is what the market forces dictate as 'fair market value'.. If they are able to operate at the rates they have set, then it is YOU who is out of line with market forces and rates, b/c someone out there is willing to work under their terms. That really is the bottom line.
Sun 23 Mar | Tj | I once met with a very good recruiter (Thinknicity, nee Trilogy IT in SF) and their business model was clear. The fee was absurd for someone who didn't need them, but for the double-coincidence of clueless job seeker + clueless business, it seemed vaguely useful. The point that recuiters serve as gatekeepers, was not well made. Only an idiot company would sign an exclusive hiring deal with these guys. And if a company is completely unwilling to do the work of grepping through resumes when there's a job opening, then what's wrong when there's extra weight given to a recruiter's candidate? These companies aren't rational hirers anyway. Mike was flaming a bunch of guys who thought nothing of calling him bin Laden. Seemed evenhanded and fair, from where I stand.
Sun 23 Mar | Stephen Jones | Programmers are anything but the most exploited professionals around. Go to any maids agency in the States and they'll probably charge you about $25 an hour for the maid's time. The maid will be lucky to get $7 an hour. The States is not the worst place in the world for this. Go to Berlitz or Wall Street, or Inlingua to learn a foreign language and you'll find that the organization is probably paying 30% of income to your teacher.
Sun 23 Mar | Daniel Shchyokin | As one recruiter friend of mine said- 'you get paid what you negotiate not what you are worth'. I am not saying that is they way it should be, but that is the way it is. Incidently, someone mentioned 'dizzy psyche majors' in either this or the other board threads, there is good reason for this (think hall-kinion in SF). Attractive women are intimidating to a lot of techies to begin with, and if they can find a woman that is bad at math to begin with (or more commonly can pretend to be), it is that much harder to negotiate a fair price
Sun 23 Mar | | No, it is not just a matter of 'negotiating your worth.' Recruiters actively work to control the market, placing candidates at significant disadvantage in negotiating. If real estate agents tried to charge 30 or 70 percent for selling your house, they would be locked up. Even better, no-one would use them. Recruiters are able to charge these rates partly because they insist on hiding the rate of pay from the worker. The financial sums involved are equivalent over the course of a few years.
Sun 23 Mar | | Bella, yes, you're correct. Recruiting is a business where recruiters try to maximise the rate paid by the employer and actively minimise the amount they pay to the worker, including lying through their teeth. Standard business, really, but so many candidates don't understand how it works. A professional person might think the recruiter would be careful about putting forward the '$75' guy instead of the cheaper guy, but it actually works the other way around. The cheaper guy delivers higher profits. Most managements can't tell the difference anyway. One reason the H1-B program attracted a lot of angst is that there were firms who were essentially recruiters, but maintained they were 'consulting' firms, and hired Indian guys on $40,000 per year, yet farmed them out in the general contracting market. Needless to say, those recruiters made a killing. Also, there are many large companies now that do exclusuive deals with large recruiters with strict lock-down prices. The recruiting firm gets all the work, but to make any profit, they have to place really cheap people.
Sun 23 Mar | Fredrik Washington  | the clients (usually big companies) choose recruiters because it's easier to bill to one place, and have the recruiter schedule interviews. For the most part techies are a commoditiy because companies are not doing anything new or involving thought. Once the economy turns around smart people will have the upper hand.
future of software engineering | Sat 22 Mar | anon
What do people see in the future? Any new pardigms or foundations coming up?
Sat 22 Mar | Enjoy | Just speculating: Executable (UML?) models.
Sat 22 Mar | Matthew Lock | It's funny how people speculate that in the future anybody will be able to write a program. What ever came of all the 4GL talk in the 80s? Having said that I think Scripting will play a very important role in the future, letting you develop programs much more quickly: Scripting: Higher Level Programming for the 21st Century http://home.pacbell.net/ouster/scripting.html
Sat 22 Mar | Daniel Shchyokin | 'Just speculating: Executable (UML?) models. ' good one
Sun 23 Mar | ODN | Executable UML does exist... http://www.taug2.com/tausolution/taudeveloper/ Although at $12,000 to $20,000 a pop plus 18% annual support and maintenance, it ain't cheap. It's targeted at real-time software development and uses UML 2.0-specific features.
Sun 23 Mar | Enjoy | Matthew, I don't think that in the future anybody will be able to write a program. Sure many will be (and already are) able to develop (well, now I'm very cautious) *'software'* with products like LEGO Mindstorms: Just put a few modules together and voila. But we agree, that's not an n-tier application? For those who want to develop complex systems, there will be something like xUML. I don't know if it'll have 'UML' in it's name, but we'll have it! Why? Because probably the best way to understand what's going on in a software system (i.e. to cope with complexity), no matter if it is a new system you're developing or you're maintaining an existing system, is to make some diagrams. There is an example (http://www.omg.org/mda/presentations.htm) from the world of real-time software development. It's a very mission-critical system but it's still not a method to develop each and every kind of software. That's why ODN, if Telelogic want's us to read 'real-time' we should do that. They admittedly don't write it's a silver bullet. xUML exists but we can only solve 15 percent of the problems we face in software development. Therefor 80 or 90 percent in the world of real-time doftware development. For me executable UML (?) still isn't there. It still isn't ready for the primetime.
Sun 23 Mar | Tj | Isn't the big hype building for aspect-oriented programming?
Sun 23 Mar | Ori Berger | The more things change, the more they stay the same. The future is going to be LISP, as it always has been. OOP, AOP, metaprogramming, scripting, whatever; All of these miraculous inventions are library-level in LISP, which means that you don't need a new compiler, new environment or new training when the next buzzword comes along. Unfortunately, it also means that it's never going to be fashionable. [And, if the IT industry had any sense, the future would be APL, as it had once been. This is even less likely to happen]
Bella's Pet Peeve #542 | Sat 22 Mar | Bella
I cant stand when techies celebrate free beer or free food in order to justify going to a conference, staff development meeting, xmas party, etc. Along the lines of, This sucks, but hey, at least theres free food! I recall wanting occassionally to go out to lunch on Fridays, but finding no takers b/c there was free pizza. Its a $1 slice of pizza, you can pass it up once in a while. Now, I know that in 95% of cases, its just a figure of speech. Trying to find the silver lining, or making a joke. But Im not sure this is always the case. Is anyone really so broke that you cant afford a beer or ham sandwhich for youself? Or do you value your time to little that you will waste 3 hours at an event that you would otherwise not go to, just to get a free 2 dollar sandwich? Is this just a human nature thing? Like some deeper hunter/gatherer type of mentaility. Can humans simply not pass up something free? Look at the lines at those (not defunct) trade shows, where people would line up around the corner for a lame teeshirt (80% of the time) or free pen.
Sat 22 Mar | Slacker | 1. stay at the office, work, pay for my own lunch. 2. goof off at a conference instead, eat free. tough choice.
Sat 22 Mar | Prakash S | read this soemwhere, FREE is the only word which gathers the most attention - among everyone. Ofcourse there is nothing like a free lunch, and pizza & beer - an excellent, healthy choice of food:-) Lots of kids I know go to Career fairs purely to get their hands on all the 'goodies' - ...... human nature after all....
Sat 22 Mar | Jimmy Chonga | I couldn't stand going to COMDEX (back when it mattered) with several coworkers because they defined the experience by how many ten cent pens and plastic pieces of crap they could accumulate. I had much the same feeling as you: Why do people waste their time for cheap little trinkets? I think it becomes a game to see how much free junk people can get, rather than caring about what they're getting for free. Sorry, gotta run: I think I can score me a wrong-size ultra-cheap t-shirt with a cheesy iron on logo on it if I stand in line for 45 minutes! I'm SO there!
Sat 22 Mar | tapiwa | Sometimes it is making lemonade when life dishes you lemons. You are at the event already, and it sucks. The fact that you don't have to pay for your lunch is the only positive thing! I would not attend something just for the free pizza, but if I am already there, then I won't turn down the free booze just to prove that I can afford to by my own drinks.
Sat 22 Mar | Nat Ersoz | Sad but true... 1. Grab free pizza slice. 2. Covertly slink back to cube. 3. Read Joel on Software 4. Clean keyboard when finished.
Sat 22 Mar | Stephen Jones | Nothing to do with being broke. Ray Noorda, CEO of Novell at the time, and worth many tens of millions more than he could possibly count, was seen at an important meetins stuffing canapes into his suit pocket. His comment, 'ain't it wonderful to live for free!'. One of the leading police officials Felipe Gonzalez's Spanish government in the eighties was asked in a corruption probe how he had managed to build up such an impressive property portfolio on a relatively meagre public service salary. His comment, 'I'm a senior government officlal, everything's paid for by the state'.
Sat 22 Mar | Alex Chernavsky | What troubles me is the fact that doctors seem to be influenced by the glass beads given to them by pharmaceutical reps: http://www.yourlawyer.com/practice/news.htm?story_id=3626&topic=Medical%20Malpractice
Sat 22 Mar | Greg Kellerman | Bella, this bring up memories of crap that employers do. They want to to bust your ass and they dangle someting like pizza and beer as incentive. Gee let me think, you're going to bill extra thousands and buy 50 bucks worth of pizza and beer. Is it any wonder that I laughed at them when they'd make such a silly request? Sorry, I don't have a number for my Pet Peeve.
Sat 22 Mar | Dennis Atkins | Greg, I think that free beer and pizza is a nice gesture. The monetary value and whether one can afford to eat out are not relevant. It's the thought that counts. Obviously though, pizza offered as a substitute for a living, competitive wage is not a square deal. But a fair wage plus free lunch and tee shirts from time to time isn't oppresion by the man.
Sun 23 Mar | Patrik | Dennis, Free meals and beers is OK, but I started passing on them. When you hear things along the lines of this; 'Ah, yes. If you meet this very unrealistic deadline by working your asses off around the clock, you earned a night out.' you should watch out. This 'work-your-ass-off-for-$30' mentality used by some are nothing but insulting.
Sun 23 Mar | Dennis Atkins | Patrik, I agree with you completely. If presented with that offer, it would be reasonable and expected to slow down work output, take full hour lunches and leave for home at exactly five. But when it is presented as 'Since you've been doing such a great job lately, we're having a pizza party.' or 'I noticed you guys are working late so I ordered you pizza and beer.', then I tend to think it's a good place to work. But if someone is told 'If you work overtime we'll consider getting you guys $30 worth of pizza.' the appropriate response is, 'Boss, I've got a much better idea, you come to my house, dig a fish pond in the back, paint the spare bedroom, and remodel my bathroom and I'll buy you a nice sandwich and a bag of chips.'
Discussion Forum Software | Sat 22 Mar | Mark Sanders
After several weeks thought, Im so impressed by js arguments concerning the (lack of) features of the JoS discussion fora that I want to implement a clone on my site to replace a slightly-too-shapeless guestbook. Can anyone recommend any free/cheap packages that offer this type of cut-down functionality? Id prefer to avoid starting with bloat and stripping out IF I can, like, start slim and graceful. Thanks
Sat 22 Mar | Chuck | Mark, The functionality is so simple, is there some reason why you couldn't just throw it together in a couple hours like Joel did?
Sat 22 Mar | Mark Sanders | a) Several years out of programming practice b) Sloth
Sat 22 Mar | Matthew Lock | a) start programming again b) buy some coffee
Sat 22 Mar | Mark Sanders | c) Lose young children
Sat 22 Mar | Matthew Lock | c) Teach your kids to program, then sit back....
Sat 22 Mar | Mark Sanders | i just feel that code re-use is so much more environmentally friendly... 8--}>
Sat 22 Mar | Justin | Given the number of occasions 'where can I get some discussion board s/w like this' comes up, I'm really surprised that Joel or FC haven't started selling it as a 'You get what you pay for, unsupported' $25 package. There must be some commercial reason for it that we're not seeing - presumably admin costs outweigh sales revenue or something.
Sat 22 Mar | Alex Chernavsky | PHP / mySQL version: http://www.johnsadventures.com/backend/DiscussionForum/APHPDiscussionForum.html
Sat 22 Mar | optimistic coder | Yes! Get the kids to do it - that is a fantastic idea!
Sat 22 Mar | Jimmy Chonga | I disagree with Joel's assertions regarding conference software in a couple of ways, and one relates to having a 'preview' of your post: Joel's assertion is that by removing the preview people will write better posts in the first place, however I disagree if 'preview' offers some tools to make it genuinely useful. Plastic.com offers a brilliant preview where they actually spell-check your posts (and yes most of us appreciate a spell check. My spelling has humorously gone to hell BECAUSE of the net: After reading gross misspellings on Slashdot time and time again, pretty soon it becomes the norm in your mind), as well as offering a reading index on the 'level' of your writing. Very cool little tools.
Sat 22 Mar | Chuck | Mark, You should really sharpen up those skills and you'll feel better doing so. Go ahead and make it a project where you teach the kids some Perl or whatever and you'll all have fun doing it too! It's really not a big project - I added a similar forum to a web site for a friend in a weekend, writing it in Perl in scratch. I am not a web guy and did not know any Perl but it was pretty easy to pick up. Go for it and have fun. Your question is kind of like 'where can I find a string reversal function'. The answer is always that its a simple thing and the fastest route is to write it yourself if it is taking you more than a few hours to find one you like.
Sat 22 Mar | Li-fan Chen | I have hear people beg for this discussion forum software enough times! Gonna go write one over the weekend and sell it. -- David
Sat 22 Mar | Dave B. | I have written an ASP page using VBScript that is similar to this forum, except it does'nt support e-mail. (I'm using WinXP and CDONTS does'nt work on XP.) The asp page and the MS-Access database can be downloaded at http://dbehnke.users5.50megs.com (Note: That link has banner ads. Sorry it's a free site.) (Note: I used Jet 4.0, Visual Interdev, MS-Access 2000, WinXP Pro, IIS 5.1) Anyway download the ssw.zip file, unzip it, ad the files to a Visual Interdev Project, update the connection string with the correct database path and away you go. Modify it to your hearts content. It would'nt be hard to add e-mail support and/or upgrade to SQL Server.
Sat 22 Mar | Jimmy Chonga | Dave B: Take a look at CDOSYS, also called CDO for Windows 2000, which is the email interface that works in XP, but is backwards compatible to 2000 as well. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_about_cdo_for_windows_2000.asp
Sat 22 Mar | BJ | Dave B.: Nice work. Now I know how the red highlighting was done. Thanks for sharing your knowledge (and code).
Sat 22 Mar | Dave B. | There is an extra space in the address above try: - http://dbehnke.users5.50megs.com - Hope that helps. Jimmy, Thanks for the link. I'll look into it. BJ, Thanks for the compliment. I'm glad the source helped you out.
Sat 22 Mar | Mark Sanders | my final post probably - at least re. this: alex - yes, that'll do the trick beautifully; thanks very much-like the forum + home pages' b/w-colour toggle - subtle; chuck - i was on the verge of (almost) agreeing 'til I saw alex's post; btw, kids are 8 and not quite 3. pedagogic suggestions? for now thanks bye peace
Sun 23 Mar | Andrew Burton | http://www.darkbeast.com/files/wccsbbs.zip http://www.darkbeast.com/files/wccsbbs.pl.txt Straight Perl implementation of a slightly cloned version of Joel's board.
Sun 23 Mar | | After several weeks thought, I'm so impressed by j's arguments concerning the (lack of) features of the JoS discussion Yeah, He could sell ice to the eskimos.
Sun 23 Mar | Dave B. | To those who have emailed me or are interested, I have 'cleaned up' the source. The site is also displayed in a cleaner format. You can download the ASP page, the database and the style sheet at the link above. It is VBScript - not Perl or PHP. As I said earlier, modify it to suit your needs, it should'nt be that difficult.
Hungarian Notation | Fri 21 Mar | Benji Smith
After reading some of the topics below about code commenting and documentation, I started to wonder if anybody uses hungarian notation anymore. I, personally, have always hated HN. I think it makes code extremely difficult to read. I much prefer to just camel-case my object names (i.e., thisIsTheNameOfAnObject). But I know there are some people who prefer to tack little type identifiers onto their object names. Ive especially seen alot of things that look like ptrMyPointer, which Im also not crazy about. This is akin, in my book, to calling something strTableName or intCounter. Object types, as far as Im concerned, dont belong in the identifiers of objects.
Fri 21 Mar | Chris Tavares | Hungarian is dying. Thankfully. The Microsoft .NET naming conventions explictly say NOT to use hungarian. It might have made sense originally, but it was never used correctly, and required too much of a maintenance burden. Good riddance.
Fri 21 Mar | Chris Tavares | That being said, I do have one situation where I use hungarian. In C++, particularly in COM code, I'll often times have the same logical data stored in different data types. Strings are the big offenders here. So I'll often have variables bstrName, lpszName, and csName, for 'Name as a BSTR', 'Name in zero terminated string' or 'Name in a CString'.
Fri 21 Mar | Joel Spolsky | I think people who think Hungarian makes code 'hard to read' have never learned to read Hungarian notation. Heck, I think Greek is hard to read. But if you actually take the time to learn it, it makes code that much MORE readable. You know so much more about what a variable is by looking at it. I still use hungarian -- in C code it's essential, in C++ code it's helpful, we even have a standardized hungarian notation for SQL here at Fog Creek and it's extremely helpful.
Fri 21 Mar | Prakash S | still stick with Hungarian, since it works.
Fri 21 Mar | Keith Weiner | The problem with HN is that the type of a variable can change as the system evolves. wParam is a case in point. It isn't a WORD any more, is it? False information is worse than no information...
Fri 21 Mar | Benji Smith | Joel and others, What is it about C code that makes HN especially helpful in making the code more readable? Would code in Java or VB or C# (or any other language, for that matter) benefit from an HN-style coding convention? Or is there something peculiar about C/C++ that makes it more essential for you to have type information in your identifiers? Also, why is it that HN is falling our of fashion so quickly if it helps so much? (I really am curious.)
Fri 21 Mar | Nick B. | I've grown to like hungarian notation, if only because associating variable type and scope information in a variable name makes code easier to read and understand. Furthermore, I've never found changing variable names along with variable types time consuming at all (just search and replace). I suppose it could be irritating if you have code where a global var whose name collides with that of class member or local vars, or some similar situation. But that never really happens if you're using hungarian properly in the first place. I've never really understood why everyone hates hungarian so much or why they think it actually makes code harder to read. Sounds like more of a cosmetic preference to me. I do concede it requires additional discipline on the part of programmers and there's nothing that enforces it besides programmer discipline ... perhaps that is good enough reason not to use it in some environments. However, my experience has been that programmers not familiar with first ask questions about it, and then adopt it. I suppose I'M SPREADING THE DISEASE. BWAHAHAHA!!!
Fri 21 Mar | Steven C. | I'd actually go one step farther than Nick B. did -- if you're changing your variable types, especially between similar types (different string implementations, for instance, or the like), I find it incredibly useful to also change the name of the variable. Thus, I have to go look at every instance where it is used and make sure that things are really doing what I want. Of course, using search and replace obviates this, so YMMV.
Fri 21 Mar | optimistic coder | Everything gets called oWhatever or objWhatever in the end.
Fri 21 Mar | Nick B. | Yeah, but at least you know its an object of type class CWhatever. Or do you ? ;)
Fri 21 Mar | Nat Ersoz | 99% of the Linux kernel is written in straight C (with a small amount of assembler for supporting the dozen or so CPU platforms it runs on). It is some of the most readable code I've ever come across, and there are no Hungarian notations floating around. I loathe HN, and am glad to see it end of life. Not that I even encounter it in my daily work, but just to know that it will be out of its misery soon - that's a good thing. Deconstructing HN: 'lpsz' LONG: yes, even as late as 1998, MSFT was still playing with LONG. Very quaint. POINT to STRING: Dammit, its pointer to char. ZERO terminated string. Aren't C 'strings' by default zero terminated? Why don't we add 'r' in there while we're at it - so we know it can be 'randomly accessed'. And 'x', EVERYTHING needs an X these days. Let's add x to lpszr to formally bring it into the new Millenium. Hmmm, what has 'X'? How about xenophobic? There ya go, the X for xenophobic (sort of gives you that 'closed source' warm fuzzy feeling). xlpszrMyString[] = 'Hello World'; Oh the gems... Forget HN, how 'bout these jewels: typedef void* LPVOID; // FIXME: WTF? What is so difficult about void*? Would it be so bad to not have to invoke the tagger just to know that you're dealing with a built in type? Kill it. Unplug the life support and say a prayer.
Fri 21 Mar | Nat Ersoz | Geeze, its as bad as 'comment maturbation'. (Likely the best term I've come across lately, thanks!)
Fri 21 Mar | optimistic coder | Quite Nick. Heaven forbid we need two instances of the same class, that'd just get confusing.
Fri 21 Mar | flamebait sr. | Well, there are some reasonable things like denoting member variables (like adding my or m_ or something like that to the front) and other 'special case' situations where namespace collisions are inconvenient and obnoxious. The LPVOID thing is somebody trying to turn C into their own language. Sheesh.
Fri 21 Mar | Matthew Lock | One of the great design points of perl is that all variables start with a symbol, a kind of hungarian notation I suppose. Scalars start with $mystring, arrays @myarray hashes: %myhash, which makes reading code really easy once you're used to it.
Fri 21 Mar | mb | I've grown to like 'simplified' hungarian. So in a manged envrironment, sFoo means string. With plain C (or C++) szFoo means a zero-terminated string; wzFoo means a Unicode string. But long or far, no. (Though I've seen win16 code where wz didn't mean unicode because it was #defined re-used code from people who really meant OLESTR). Once you've simplified something to its essence (i or c for an int or counter), you certainly will have to do more than just search/replace if you change the type of a variable. And if it's just something dumb like a size (short/long), the simplified name doesn't change.
Fri 21 Mar | Nat Ersoz | Basically, if you make good design choices, like scoping variables appropriately, there is no need for HN. Allofasudden, I'm doing some math... y = alpha * sin( omega * t ); becomes: dY = dAlpha * sin( dOmega *dT ); Well, of course, d means double - unless you're into math, then d connotes delta - and it reads a whole new way. And then there is the sin() function, it reutrns double - so make it dSin(). Well, what the hell, it takes double too. Make it dSind(). And back to strings, familiar old strcat() now comes out lpszStrcat() - yet why stop there, it takes 2 strings, the second one const: lpszStrcatlpszlpcsz(); Geeze, looks like the Bronx cheer. Whipe off the laptop screen when you're done with that, wouldja? And don't even try for those Windows GUI functions that take about 17 parameters... Too much fun.
Sat 22 Mar | Justin | Does anyone use both? By this, I mean do you differentiate between private variables etc(1) and public, e.g. parameter names? Some places I've worked use HN for *everything*; their declarations look something like: Dim lobjMyObject as company_objComponent.clsClassName The also like branding things, which makes things even more confusing, especially if its done to every single publicly accessible object/name. (This is not *my* idea, btw, and I also hate prefixing local scope variables - the first 'L' in lobjMy...). Is there a 'sensible usage guide' anywhere - preferably a heavy one that I can use for other purposes? (1) Etc means function names to indicate the return type, constants ( I have seen the hateful mstrCONSTANT_NAME used by people)
Sat 22 Mar | Stephen Jones | As a humble beginner VBA coder may I say I find it very useful to distinguish between control names: cboFirstName as opposed to lblFirstName Same goes for remembering whats a string, what's an integer and what's a boolean.
Sat 22 Mar | Sam Gray | Speaking as someone who's still stuck, for the most part, back in VB6, I like HN. I've started learning C# and there's a lot to like about it, but it seems utterly ridiculous to call a control okButton, cancelButton or calculateTheSubtotalForMyUnderpantsPurchaseButton (hey, if you guys can come up with ridiculous examples of HN abuse...). If you're going to tack 'Button' on the back of every button and 'Combo' on the back of every combo box, why not use a Hungarian 'cmd' wart on the beginning and take advantage of Intellisense to speed up your typing ever so slightly? That being said, I have started moving away from using HN in parameter declarations. The API calls don't include them, so putting them in my own functions gets a bit distracting.
Sat 22 Mar | Tom Payne | Good short article: http://ootips.org/hungarian-notation.html Key bad points: 1) Often wrong or misleading (e.g. wParam in Win32). 2) Ambiguous (is b a boolean or a byte, is f a flag or a float?). 3) No standard (lpsz vs. lpstr vs. lpcstr vs. lpc vs. psz etc., dw vs. ul, vs n). 4) Effort to maintain. 5) Does not take account of C's automatic promotion of types. 6) Prevents your code from being portable between 16/32/64 bit architectures. 7) Offers no automated type checking beyond what the compiler already does. 8) Lots of finger typing. 9) Enourages unnescessarily verbose variable names. 10) Conflicts with OOP principles. Longer discussion on kuro5hin.org: http://www.kuro5hin.org/story/2002/4/12/153445/601
Sat 22 Mar | David Roper | Nat & Tom: I agree whol heartedly. All this goes to show that tracking object types is something that we should leave to the compiler. For my pennyworth, just name things clearly, concisely and consistently.
Sat 22 Mar | Justin | I would agree, Sam, however most VB etc programmers would *prefix* the control name with a mnemonic denoting the type, e.g. btnOK and btnCancel. Of course, even with HN, code can be hard to read. The following sample (apologies for text wrapping) illustrates, in my opinion, the need for coherent, readable variable names. Yes, I can read it...but the coder really isn't making it easy for me. The argument for mnemonics is that they require less effort to type and are less prone to spelling errors. The arguments were made before 'option explicit' and 'auto complete' were features that were commonly available. In fact, I'm not sure even if they are available. I primarily use VB, Interdev and lately .Net; I have no idea if these functions are available in other development environments 1 #include “sy.h” 2 extern int *rgwDic; 3 extern int bsyMac; 4 struct SY *PsySz(char sz[]) 6 { 7 char *pch; 8 int cch; 9 struct SY *psy, *PsyCreate(); 10 int *pbsy; 11 int cwSz; 12 unsigned wHash=0; 13 pch=sz; 14 while (*pch!=0 15 wHash=(wHash<>11+*pch++; 16 cch=pch-sz; 17 pbsy=&rgbsyHash[(wHash&077777)%cwHash]; 18 for (; *pbsy!=0; pbsy = &psy->bsyNext) 19 { 20 char *szSy; 21 szSy= (psy=(struct SY*)&rgwDic[*pbsy])->sz; 22 pch=sz; 23 while (*pch==*szSy++) 24 { 25 if (*pch++==0) 26 return (psy); 27 } 28 } 29 cwSz=0; 30 if (cch>=2) 31 cwSz=(cch-2/sizeof(int)+1; 32 *pbsy=(int *)(psy=PsyCreate(cwSY+cwSz))-rgwDic; 33 Zero((int *)psy,cwSY); 34 bltbyte(sz, psy->sz, cch+1); 35 return(psy); 36 } Sample extracted from MSDN copy of Charles Simonyi's 'explication of the Hungarian notation identifier naming convention'.
Sat 22 Mar | Justin | Sorry, that should have read 'the argument for short variable names' - mnemonics are supposed to be short. Doh.
Sat 22 Mar | Thomas Eyde | I started my programming career in VB3. The best practice back then was 3-letter-prefixed HN. Later in the VB5 or beginning VB6 era, bought a book using a single-letter-prefixed HN. I liked that better, but remember a rather heated discussion with my coworker on which HN was best. The discussion ended up with him using 3-HN, me using 1-HN. Then I became familiar with Agile Programming and read all the good opinions on why HN is bad, and why energy should be used on selecting better name in the first place. It's years since I used HN, and I have learned it's all about habit. I have also learned to apprechiate code which express intention. So I think HN is about implementation. Ditching HN freed my mind to concentrate more on solution, which I think is better. Many of my classes starts out as primitive datatypes, mostly strings. Sometimes they deserve to be strings, but other times they evolve with behaviour or more complex data representations.
Sat 22 Mar | rwh | 'One of the great design points of perl is that all variables start with a symbol, a kind of hungarian notation I suppose.' 'Scalars start with $mystring, arrays @myarray hashes: %myhash, which makes reading code really easy once you're used to it.' No, all variables start with a symbol that indicate HOW YOU WANT TO USE THE VARIABLE. They're typecasts. Every Perl statement is littered with typecasts. You have to typecast both sides of a simple assignment like '$foo = $bar'. And this casting is useless in distinguishing simple scalars like '3' from references to 'real' data structures (of arbitrary complexity). The '$' symbol LIES about what the variable holds.
Sat 22 Mar | runtime | I used to use hard-core HN, but now I mostly just use the following prefixes: p = pointer n = count/number of sz = null-terminated char string wsz = null-terminated WCHAR string is = boolean
Sat 22 Mar | Julian | For Hungarian notation to work, there must an explicit company standard. Then it only takes an hour to read the standards document, and it's always clear what everything means. Overall, Hungarian notiation added value when I started programming C in 1995 without an IDE, but it isn't worthwhile writing Java today with Eclipse. Here are some reasons for the change: 1) An IDE instantly tells you the type of any variable, so you don't need to search for the variable declaration to get that information. 2) Better programming practices, such as short functions and clear variable names, make Hungarian less necessary. Those practicies are more widespread now than they were before. 3) In C, not knowing a variable type can easily shoot you in the foot, such as when you call scanf. In Java, the compiler detects almost all type errors. 4) Other Java coders bitch endlessly when they encounter Hungarian notation. A few months ago, my employer implemented a no-Hungarian policy. It only took me a few days to adjust, once I wrote the logic to convert the existing code.
Sun 23 Mar | Chui Tey | Any explicit convention (such as Hungarian) is very helpful when coding in a team, and for new developers to get acquianted with a large code base. In OO, a notation which identifies the scope of a variable helps clear up what a piece of code is doing, instead of having to navigate back and forth through the source to look at where it was declared. In a dynamically typed language such as Python, variables begining with two underscores are automatically made private variables. For individual developers, the benefits are still there. I'm not the type who remember everything I have coded months after, and the improved readability helps. For competent programmers, learning a notation is not much compared to picking a language. Hungarian notation throws off people a bit if they are learning C at the same time.
Sun 23 Mar | Nick | From Nat: 'ZERO terminated string. Aren't C 'strings' by default zero terminated?' I'm with you I that one. I never could figure it out. Is there such a thing as a non-zero terminated string in C?
Headphones. | Fri 21 Mar | Prakash S
Which headphones do you guys use while working, if use them at all? I am planning to buy one, ideally if price was not as issue I would buy the BOSE QuietComfort http://www.bose.com/products/headphones/ Thanks,
Fri 21 Mar | Andy | At work Sennheiser HD-580s and at home Sennheiser HD-600s. You owe it to yourself to check out Sennheisers if you're looking for nice headphones.
Fri 21 Mar | anon | I can't listen to music while I'm working. For some reason, it seems to pull me out of the zone, so it's hard for me to focus. Weird, eh?
Fri 21 Mar | Brad (dotnetguy.techieswithcats.com) | +1 for Sennheiser. I have a pair of HD-570s, but the 600s are just outstanding (and out of the price range I wanted to spend).
Fri 21 Mar | Mitch & Murray (from downtown) | Sennheiser HD-600 driven by a modified Musical Fidelity X-CANS tube headphone amp. Source is a Sony CA70ES changer. The new Sennheiser PX-100 cans are outstanding for $40 and can be driven nicely with typical consumer devices (portable CD players, minidiscs, etc) as well as a decent PC sound card. Worth a look if you are on a budget. Hell, worth a look just to have a spare set laying around. www.headphone.com is the place to check out all known headphones, amps, cables, and associated gizmos. Not the cheapest, but a selection second to none.
Fri 21 Mar | Prakash S | Cool website, thanks. After the enlightenment, I am looking at the 'In Ear Canal' types, Etymotic: http://www.etymotic.com/product_list/product_list_product.asp?audience_category_id=1&product_type_id=2&product_number=ER-6 Shure: http://www.shure.com/earphones/eseries_e2c.asp what do you guys think? I used a Sennheiser (don't know the model - i think my frined paid something around 80-90 for it) - didn't like the fit (sine I wear spectacles sometimes), after using it for around an hour - ear started to hurt...., good sound quality though.
Fri 21 Mar | Prakash S | Spoke to one of the guys at HeadPhone.com - for starters it is an actual person who picks up the phone (no machine - wooHoo), he gave me excellent advice on both. According to him: The Shure is good if you listen to songs with a lot of bass (modren rock kind of stuff), while the Etymotic is good for high definition (classical). The Etymotic is slightly more comfortable, but expensive by $30.
Fri 21 Mar | Tj | I don't see why Sennheiser HD570-600s would lead to ear fatigue; the things push against your skull instead of the ear. It's possible for people to hear when you're using the Sennheisers, but only in silent rooms. It won't be audible in most computer rooms. I also use $12 Sony earbuds for portability; they're not bad. Probably bad for ear bacteria levels though. And you really don't want to let people use them.
Fri 21 Mar | Jonathan | I haven't tried any of the Sennheisers, but I do own a pair of Grado SR60s. For the price you pay (I got them for 60-70 at qaudio.com), they sound _excellent_. Note that if you're using them at work, they leak sound so these may not work for you if you like your music loud and everybody else in the office works in dead silence.
Fri 21 Mar | TK | Caution from a tinnitus sufferer: Over an extended headphone listening session folks tend to turn up the volume. The same is true if you are masking 'outside' noise. Headphones can be very damaging to your hearing over time. What is tinnitus like? Imagine how your ears ring after a loud rock concert. In my case, I woke up one day with that ringing in my ears and the ringing has never stoped, nor will it ever stop. It only gets worse.
Fri 21 Mar | Prakash S | I have heard about the tinnitus thing being mentioned from time to time.
Fri 21 Mar | anonymous | I use these, because music distracts me if I'm not concentrating, and I don't hear it if I am: http://www.walgreens.com/store/product.jhtml?PRODID=362489&CATID=100217 Oh wait, that doesn't answer your question.
Fri 21 Mar | choppy | the grado SR60s sound the best out of any headphone under $200. however like someone else said, they are not closed, so they leak sound. i have had the entymotics. they are great for isolation. however there is one really annoying thing, which makes me not recommend them (aside from the fact that they are super expensive): they are TOO sensitive and isolating. thus...if you ever move, and jostle the cord...you can hear the 'woosh' sound of the cord brushing against your shirt...amplified really loud. it becomes very distracting if you fidget around a lot, like i do. they are also VERY isolating...you can't really hear ANYTHING outside of the phones, which ends up being kind of weird.
Fri 21 Mar | optimistic coder | I know what you mean Choppy, but that's FUN when you get used to it. Feed the wire up inside your shirt and it won't make so much noise. Quiet enough for walking around, although I'll probably get run over soon...
Fri 21 Mar | Mitch & Murray (from downtown) | For those of you who are interested in, but do not yet own an 'in ear canal' phone like the Etymotic models I _highly_ recommend the Sony MDR-EX70LP for $50. I have used these extensively in both a (somewhat noisy) college library driven off my laptop's headphone OUT and on numerous (extremely noisy) trans-atlantic marathon flights driven off a Sony Minidisc player. Very good sounds and outstanding isolation for the price. Worth a look if you can find them, Sony sells them directly from their website. For those of you that haven't taken a look at the Minidisc format for portable tunes, these have always worked well for me. I am using the MZ-R90 which features digital and analog inputs which means it makes a perfect highly-portable live recording rig.
Fri 21 Mar | Mitch & Murray (from downtown) | Should have also mentioned that the Grados, most any Grados, are excellent as well. Very high on the 'bang for buck' scale, and much easier to drive than the HD-600 Sennheisers.
Fri 21 Mar | choppy | actually i forgot to mention the sony MDR ex70LPs. I bought a set when i was in japan and they were a godsend on the flight back. i prefer them to the etymotics because they don't have the 'cord woosh' problem I described above. the only thing i don't like about the sonys is that the cord seems to be about 30 feet long, which leaves a lot of extra slack to deal with when plugged into my ipod. i think there is a special 'short cord' version of the sonys, originally designed for use with MD player + remote. the grados also have a weird way-too-long cord, but if you want to get DIY, there are a number of sites that describe how to do cord mods.
Fri 21 Mar | Prakash S | I am not too crazy about the whoosh sounds, thanks for letting me know. - this rules out the Checking the sony out, the specs as the Shure.. for $50 lesser, ....unfortunately it says that it is currently unavailable. thanks again guys.
Sat 22 Mar | Brad (dotnetguy.techieswithcats.com) | Funny thing, I just pulled out a recent copy of Stereophile (April 2003) and looked through their list of recommended headphones. Of the 5 headphones on the list, 2 are Sennheister (model HD 600, Class A, $449; model HD 580, Class B, $260) and 2 are Grado (model SR125, Class B, $150; model SR60, Class C, $69). The Sennheiser HD 600 are considered by their staff to be the best dynamic headphones ever (although they did recommend driving them with a $3,333 tube headphone amp *snicker*). A perhaps more reasonable choice is their Class B rated Musical Fidelity X-Can V2 tube amplifier; I've heard the original X-Can, and it was a superb headphone amp, but definitely out of reach of the casual listener at $300. The only other pair of headphones on the list were the $4000 electrostatic Stax Omega SR-007, which requires a ~ $3000 amplifier to drive. Yeah, sure. :)
Sat 22 Mar | Brad (dotnetguy.techieswithcats.com) | Oh, a quick bit about the Stereophile ratings. Class A is the best in class, irregardless of issues like price. Class B is the next best thing, and generally still considered expensive. Class C is somewhat lower quality than A or B, but represents 'affordable high quality'.
Sun 23 Mar | Steven E. Harris | I use Sennheiser HD 600s with an Antique Sound Lab MG Head DT headphone amplifier. http://www.divertech.com/mgheaddt.html The Musical Fidelity X-CANS V2 amplifiers also come highly recommended, but were impossible to purchase about a year ago when I finally went for the MG Head DT. The sound is spectacular, with no fatigue, and they don't seem to disturb anyone around the listener. I also purchased a pair of the Etymotic ER-6 Isolator headphones for future use with a laptop or other portable listening device. http://www.etymotic.com/musicians/er6more.html As I have less experience using the Etymotics, I can't comment much on their faults, other than perhaps the strange prerequisite of wetting them before putting them in. 'Excuse me, did I just see you sucking on those headphones before you stuck them in your ears?'
Sun 23 Mar | Prakash S | I went ahead and purchased the Shure , the rest sound too expensive :-)
Sun 23 Mar | Brad (dotnetguy.techieswithcats.com) | The Sennheiser HD-570s I bought from Best Buy were less than $100 (I think around $80, but I'm not sure).
Why do Programmers Hate Documenting? | Fri 21 Mar | David Clayworth
Its a bit of a generalization but I think there is truth in it. Many programmers, even experienced ones, really dont like documentation. Most of us do it, because we know we have to, but if were under pressure its the first thing to go. Ive reviewed code from experienced programmers with hardly any comments at all, yet weve also all tried to maintain code and cursed the idiot author who didnt add enough comments. So why do we find comment writing such a pain? Its even worse when it comes to writing user documentation. Most of us would rather be thrown in the scorpion pit than be asked to write a manual, despite the fact that this would be the best way of showing off the brilliance of the program we wrote to a wider audience. I have a theory, and that is that its the Introvert in the Myers-Briggs type that most programmers seem to belong to (see the Orphans Wanted article in another thread). Programmers are interested in ideas, and once the ideas are fixed concretely we lose interest in their communication. But I could be wrong.
Fri 21 Mar | Steven C. | I'd tend to agree with you David. I think most programmers have an inherent dislike for staying on the same 'problem' after its been fixed (i.e., commenting the code they just wrote -- its usually incredibly obvious at that moment what the code does, so why comment?). I find that I usually comment at my best when I comment before or during coding, since at that stage I'm still figuring out the solution etc. If I wait until afterwards, my results tend to be slapdash and haphazard. Thoughts?
Fri 21 Mar | Tj | Usually people talk about their code when they're proud of it. Maybe these people aren't particularly interested in their work, and it doesn't strike them to defend or promote the code. I know that's an oddball theory, but maybe there's truth to it.
Fri 21 Mar | Jordan Lampe | When I am writing code, it all is blazingly obvious to me right now. In the future, someone is going to find some part of it confusing. The problem is that I can't predict /which/ bit is going to be confusing. So which bit do I comment? If I comment every last line, then the comments get tedious, as mentioned in other threads.
Fri 21 Mar | choppy | There is no profound reason...the answer is pretty simple: most programmers are very lazy. Writing comments is just more work. Writing a user manual is a LOT of extra work. I have to completely disagree with this statement: --- (re:manual)...despite the fact that this would be the best way of showing off the brilliance of the program we wrote to a wider audience. --- I don't know anyone who reads user manuals except as a last resort , or to figure out some obscure , non-obvious feature. The best way to show off the brilliance of the program you wrote, is to actually write a brilliant program...
Fri 21 Mar | Artist | Hi I tend to agree with David. We consider ourself (Programmers) as an intelligent being and want to create a good new and unique things which takes us from one steo to another better steps towards our goal. Now if documenting is driving your salary you would do that..,but it's not. If somehow they make documentation mandatory, it would take us forward towards the goal and hence will become and inherent part of what we do. Goal of the programmer in terms of intelligence is to increase the programming skills. Documentation if proven to increase the programming skill we would have done that already.
Fri 21 Mar | Reginald Braithwaite-Lee | 'Documentation is like term insurance: It satisfies because almost no one who subscribes to it depends on its benefits.' --Alan Perlis I believe that the problem with documentation is that the people who are supposed to write it derive no benefit from it, and the people who insist on it don't have to write it. Compare 'documentation' to strong and static typing. Many programmers these days don't have a problem declaring variable types, writing assertions, or even programming by contract: they perceive that there's a benefit inherent in getting the compiler to help them write better code. In my experience, programmers can and do become zealous about those portions of 'documentation' that have a demonstrable and immediate benefit to the project, such as documenting acceptance tests. -- http://www.braithwaite-lee.com/opinions/design-by-contract.html
Fri 21 Mar | One-Armed Bandit | 'Programmers are interested in ideas, and once the ideas are fixed concretely we lose interest in their communication' I think you really hit on something there. Sometimes, once I figure out how a piece of code should work I don't feel like even typing the code in. The challenge is gone. The same goes doubly for doc. There's a strong feeling of, 'I've solved this problem - I shouldn't have to still be working on it.'
Fri 21 Mar | Canuck | Documentation is *boring*. Writing help files is even more mind numbing. That's my major beef. I will say this though, inherting a system this well documented, especially if the domain knowledge is complex, is awesome! It makes life sooo much easier.
Fri 21 Mar | Brad (dotnetguy.techieswithcats.com) | How about considering the fact that people write code that REQUIRES a copious amount of comments to be, in itself, a broken process? Believe it or not, I write my 'comments' in the form of understandable code. Variable names are good, method names are good, confusion is refactored away.
Fri 21 Mar | Hardware Guy | I've repeatedly seen the claim that code can be written in such a way as to make comments unnecessary. But in almost 30 years, I've never seen such code. And that includes coding in hardware description languages, such as VHDL and Verilog. Does such a coding style actually work, or is it just a rationalization for bagging comments? Can anyone point to some examples of code that does something *non-trivial*, but which manages to explain itself to the uninitiated (say, someone who's taken responsibility for the code) without benefit of comments?
Fri 21 Mar | apw | how often (assuming you are a programmer), do you actually read the documentation of an application you just bought? not often, I would assume. you proabably just tear open the package, click through the lengthy EULA (anyone read that?), install, and play. programmers are lazy, who needs documentation if no on is going to read it? we reuse code cause the thrill is gone once the problem is solved, why? so we can get it over with and have a beer... those who do document either do it because thier boss is looking over thier shoulder or they are just bad coders and cover it up by looking busy and productive documenting thier crappy code.
Fri 21 Mar | Benji Smith | Asking why programmers don't write good documentation is like asking why technical writers don't write good code. Documentation and programming are two entirely different skillsets (although there are some people with skills in both areas).
Fri 21 Mar | Chris Blaise | I agree with choppy in that I'd rather work to make the application/function/etc easier for the user to use than to spend too much documenting it. The flip side is that if you start documenting it as a developer, you can wear a bit of both developer and user hats. In many cases, I found that when I do this for either myself or others, I 'find' better ways to code/display the feature. For me it happens when I'm trying to explain something complicated, I get frusted with the right way to explain it to 'my grandmother' (my lowest common denominator target audience) and a way to simplify the interface will reveal itself to me. Sometimes it's as trivial as showing/not showing data depending on a certain state (ie.,don't show these fields if this radio button is selected). Other times it can be much bigger, requiring a hefty bit of reworking but resulting in a much more intuitive interface.
Fri 21 Mar |       | the code is the documentation
Fri 21 Mar | Thomas | Programming is a largely a creative, problem-solving effort. Documenting is largely a teaching and communication effort. We like programming because we like creating solutions to problems. (Some of us like finding the solution so much that once we've figured out the solution we're not interested in implementing it!) We don't like documenting because we feel like we're not really solving a problem, we're just describing something. Also, I think a lot of programmers view documentation as largely being a waste of time and effort. When you are writing the equivalent of, 'To create a new document click 'File', then 'New',' the thought going through your head is what a colossal waste of your time this is. After all, anyone can figure out how to do simple things, right? I don't believe the claim that programmers are lazy. I do believe that programmers dislike doing things that are not programming. Like writing documentation, working on schedules, defect tracking. And we'll procrastinate on those things, or do the minimal effort necessary. That's an ego thing. -Thomas
Fri 21 Mar | Philo | 'I've repeatedly seen the claim that code can be written in such a way as to make comments unnecessary. But in almost 30 years, I've never seen such code' I think this depends on what you're looking for. I think when people make this assertion, what they're saying is 'if you write good code, then it won't be too hard to figure out'. I suspect what you are looking for is something that tells you what the code is doing before you even get into it. There's also the issue that code is understandable *in context* or to someone with a system-wide view, but yeah it may take some more work for the 'hit and run' debugger. The description from Unmanageable Code is 'they are viewing your code through a cardboard tube; they don't have time to understand the application' I think if you're trying to debug an app without getting into it and understanding the application then you're asking for trouble. Finally, an example of how well-written code can obviate commenting - in the spaghetti code days comments were essential in a ten-page module to indicate what's happening where. In procedural programming the procedure names should replace the section-level comments. Instead of //Now we fill the bill of materials display for the order id requested you have public void FillBillOfMaterials(int OrderID) Philo
Fri 21 Mar | Reginald Braithwaite-Lee | I'm with Choppy and Chris: One book I read said that every user manual is a list of design mistakes. One benefit of code and design reviews is that anything too complicated to explain to smart people is quickly discarded. Perhaps reviews are a form of disposable documentation? Since the benefit is in the explaining but not the explanation, a review offers the 'lowest barrier to entry' form of documentation... -- http://www.braithwaite-lee.com/opinions/clothes.txt
Fri 21 Mar | Stephen Jones | Programmers probably hate documenting for the same reason that teachers hate keeping record books, and computer users hate having to fiddle with their computer; they're in that particular line of work because that is what they like and not the other task . In my experience peoiple who know how to do things the best are not always those who can explain it the best. There's no greater block to explaining something than thinking its obvious, and for the better the programmer the more obvious many things are. It's why large companies have technical writers. The question of commenting code is slightly different; the thread lower down seems to have dealt fairly well with that. That is to say that code might document itself, but you still need comnents on the why, and on what is not there.
Fri 21 Mar | Nuff Said | 1. The code is not documentation 2. Good coders document. 3. If you don't document you are AUTOMATICALLY a bad coder.
Fri 21 Mar | Philo | 'Nuff said' - you should look into this thing called 'supporting arguments.' They help. A lot. Think of them as comments for your debate.... Philo
Fri 21 Mar | Nuff Said | Read Code Complete
Fri 21 Mar | Steven C. | Going along with what Philo said -- the best description of what some programmers do is 'comprehension free coding'. That is...well pretty much what it sounds like: trying to fix a problem without understanding the code surrounding it. Now I don't want to discredit this entirely, since in large projects you have to do SOME amount of comprehension free coding -- i.e., assume that the rest of the system works in a good way, and fix the problem where you've found it. To be sure, too little comprehension will be a disaster -- but especially when you have people who are just joining a team working on a large software project, you have to expect that some of their work will of necessity lack the overall comprehension that someone working there much longer may have. Good comments, in general, allow less 'overall' understanding and thus faciliate this fixing style -- which is good, I think, especially if you want your software to be maintained by people far into the future. But mostly, I just like to make fun of people for doing 'comprehension free coding'. I just get a kick out of saying it. :P
Fri 21 Mar | Brad (dotnetguy.techieswithcats.com) | To add a different twist (and to reiterate something else someone said), comments come from the days of long, hefty code. Most methods do waaaaaay too much. Refactor. Methods should have no more than a handful of lines of code, and a single discrete tasks. Those 'big blocks of code' will then generally become calls to these smaller methods. We've all heard that any time you see duplicated code, you should pull the common code out into a method. I'll go farther to say that after you've done that, then go ahead and pull out small, discrete units of work (perhaps no more than 10 lines of code) and make those methods as well. At least in the environment in which I work, there is an effectively zero penalty for non-virtual method calls. All can be inlined in real-time by the JITter. And even if I pay a dozen nano-seconds for the method call, that's infinitely better as my servers get faster, compared to the minutes or hours I (or others) might have to spend understanding code. Our PCs continue to scale, but we developers do not.
Fri 21 Mar | Philo | Nuff Said - you're missing the point. Throwing out mantras and appealing to authority can be the equivalent of what some people are trying to suggest here - that doing a thing because 'this coding god said so' and 'that software bible insists' does not make one a good coder, and can in fact be a crutch that keeps one from being a good coder. If the absolute truth is 'without comments one cannot write good code' then it's a subtle twist to 'comments can make one's code better' therein creating a reliance on comments to accomplish what can be done with editing, optimization, and refactoring. A comparison of two 'does this appointment conflict with any existing appointments' routines: [in pseudocode] 1) CheckAppt(datetime start, datetime end) //Check Appointment takes two datetime variables //which are the start and end of the appointment for i=start to end //let's step through the appt //here we create a cursor of the days of each // appointmetn that this person has select cursor=days from appointments where personid=currentuser //now we step through the cursor //and compare each day to the current day // in the appointment for each day in days if day=i then return 'Has Appointment' //go to the next day next i End CheckAppt //end procedure Or... 2) CheckForConflictingAppointments(datetime startdate, datetime enddate) Select 1 from appointment where appointment.startstartdate and personid=currentuser if(records.count>0) return 'Has Appointment' End Is procedure 1 really so very much better because it has comments? Does procedure 2 really need comments? I'll wager that if the person who wrote 1 focused on why they felt they needed comments instead of writing the comments they may have gotten to 2 in the end... Philo
Fri 21 Mar | Master Ninja | I think the answer to why programmers hate documenting is obvious... writing documents is not nearly as much fun as writing code. I think more important questions are what documentation should programmers be writing and how do we motivate them to write it. I argue that code comments and functional specs are essential, and most of this content should be written before the code. If you can't describe what a function is supposed to do in English, then you don't have the knowledge to code it yet. I wish I knew how to motivate programmers to do this, as this is a problem I am facing in my group as a QE desperately in need of useful functional specs.
Fri 21 Mar | The Real PC | I hate writing comments even though I love to write. I have previously been a teacher and I really like explaining things to people. And I was a researcher and I loved writing research papers. Therefore, I should like writing documentation or comments, but I don't, I hate it. It might be, as someone said, because it's so hard to guess what parts of the code will be obvious to others and which will not. The managers where I work are programmers also and they hate writing comments, so they forget to make us do it, so it hardly ever gets done.
Fri 21 Mar | Dennis Atkins | I don't thing being introverted is related to it. My understanding is that most authors are introverts. Sitting down and writing documentation or a book is low on the list of interests for most extroverts. Introversion is a concept misunderstood by extroverts. It doesn't necessarily mean shy or unable to deal with people. It means one is comfortable with the company of one's thoughts. Introverts can do great at parties if they want to, contrary to popular prejudice. Many hollywood actors and actresses are introverts as well - INTP in particular is very well represented in Hollywood.
Fri 21 Mar | jb | I never understood the business about coders having such a hard time with comments. For me, commenting is part of my thought process. I write the comments to document the purpose of the next block of code before I actually hammer out the code. It helps me figure out what I want it to look like. Maybe I'm just the odd one out.
Fri 21 Mar | __Felix Somnia__ | As a user I have an emotional reaction whenever I read a manual/helpfile (online, or printed) and I find chunks of text such as: To set the color of page text and background: 1.Open the Edit menu and choose Preferences. 2.Open the Appearance group and click the Colors category. 3.Click a color button to change colors of text, background, unvisited links, or visited links. 4.(Optional) Click other checkboxes as desired: 'Use Windows colors' ('Use default colors' on OS/2, Mac OS, and UNIX) to restore the original colors. 'Underline links' to make links easier to find. The emotional reaction I feel comes with a thought attached to it: 'Why doesn't the moron who wrote this doesn't merely say 'On the menu bar, click on Edit| Preferences| Appearance| Color, and customize to your heart's content'--instead of making me read grating lonnng sentences to say something stupidly simple.' To be safe with complete L-users (L = learning), a hyperlink on 'click on' would suffice to explain there the notation 'click on xxxx| yyyy| zzzz|.' I can only imagine the emotions and thoughts that would invade me if I had to perfunctorily pipe 'good idea' to a manager that would arrogantly require me to write a manual as quoted above. Quite likely my private thoughts would be 'what an unbelievable cretin!' And writing such manual would be a bitter transaction for my livelihood. As a further observation, I find it extremely annoying and stupid to find entries in a manual that merely restate in other words what the evident meaning of a label of a widget in a GUI is, such as 'to restore the original colors' in explaining the pushbutton labeled 'Use Windows colors.' Isn't it easier to 'write what you mean' for a label, thus obviating an explanation in the manual? *sigh*
Fri 21 Mar | bryan | The problem with this kind of argument is that there's always enough strawmen to feed a large herd of cattle. If all you do is write code which is simple enough to be self documenting, then you should be fired and replaced with a college intern. In particular, comments should be used to inform the reader of things like pre- and post-conditions for methods, the intended use of variables, and anything else which might be non-obvious to someone other than the author (including the author a year from now). For example, Philo, in your conflicting appointments method, you appear to be making the assumption that the dates you have are in the same timezone as the dates stored in the database. For a more complex method, there are often questions like 'is null a legal argument here? what meaning would it convey? Am I allowed to modify this data structure?' etc. Of course you shouldn't comment every line of code. In fact, for most methods you only need a single comment describing the intended use and parameters. But any real-world system will have plenty of cases where explanatory comments are helpful and greatly reduce the time spent maintaining the code, especially by reducing bugs introduced by the maintainers through misunderstanding.
Fri 21 Mar | Mike McNertney | Philo, your example is a poor example for saying that good code doesn't need comments, because those are extremely bad comments. I think everyone can agree that commenting on things that are obvious from language constructs or variable/method names is extraneous and should be left out (ie, the 'X function takes two parameters' or 'Start looping over X'). However that is just one class of comments. As for the idea that good code documents itself, to some extent I agree. Appropriate factoring and good method/variable naming goes a long way toward making the code readable without comments. But there is one thing that the code itself can not answer, and that is *why* it does something, or why it works the way it does. This sort of commentary on design decisions made by the previous coder can be invaluable. Other things that should be well documented are invariants, and why they should hold/why they make sense. When possible, of course, these can be documented using code such as asserts The other problem with the 'good code documents itself' stance is that, if the code doesn't do what was intended (ie, there is a bug), there may be no way for a future developer to know what the code was *meant* to do. Sure your code is very clear about what it actually does, but I don't care about that when what it actually does is not the correct behavior. What something is *supposed* to do, and does incorrectly, can be very difficult to gleam unless there are comments discussing the intent of the programmer.
Fri 21 Mar | Bored Bystander | More generally, I think a lot of programmers hate to write prose. Why? I don't know. I think there's a certain culture of 'functional illiteracy' in some programming circles. It's almost a blue collar attitude of being a 'specialist' who is held exempt from communicating concepts or ideas. I've known programmers who were quite proud that they didn't understand basic text formatting in a word processor and that any memos they did always looked sh*tty. Sometimes I think that certain stereotypical pet phobias like this held by programmers cause the rest of the business world to roll their eyes at us as 'oh, THOSE losers'. My belief is that real professionals, by definition, WRITE. Professionals write: overviews, documentation, communication to peers, clients or management. And code comments. And I'm not talking about some featherbedded crap where you write a 15 lb treatise to document an action plan to have a meeting to plan a new internal application... That's *always* the feeble strawman excuse of those who have developed a phobic reaction to writing - a blather that they're not working in DOD or for the space shuttle or whatever, so they 'can't' be expected to write (poor babies). I just mean that someone being paid at the kind of salaries or rates prevailing in this industy really should be able, ONCE in a while, to write decent and understandable prose that informs others as needed. The idea of a person earning $80,000+ / year exempting themselves from communication with others is ridiculous. If someone in this field does not want to write and is even proud of not writing... then accept the consequences. One of which is that nobody in management will believe that you know what you're talking about.
Sat 22 Mar | choppy | per godwin's law, this thread has devolved from 'huh?' to 'what the fuck?' I'll do my part to make it even more pointless. my dad is a 'professional' obstetrician and makes about five times as much money as I do. i'm pretty certain he has not written any sort of prose since he was a college undergrad. he can't type and can barely write, so far as i can tell. i don' think anyone else in his field cares. marginally related, the last time I had to spend a significant amount of time writing documents was when i was working in an academic lab after graduating from undergrad. in fact, we never really accomplished anything in that lab,other than accumulating millions of taxpayer dollars through approved grant applications. since i've been a programmer in the 'real world' i've never had to write any sort of prose again, so i'm wondering where you pro-prose people actually work, and what you are talking about? I'm all for communication and yes, comments in the code are usually good, but writing a user manual or random word documents has usually been the job of a technical writer, not a programmer...
Sat 22 Mar | JC | I agree that the code itself is the best documentation. It's hard for beginners to wrap their heads around a large body of code, but if you want to know how a program works, reading the code is the best way.
Sat 22 Mar | 3 | There's a useful distinction that can be added to this discussion - the distinction between documenting the code, and writing user manuals. They're quite different things. Programmers generally don't want to write user manuals because they find them boring. Also, some can't write well, although by no means all. Generally, though, preparation of user manuals is best done by people who take a pride in that job. Regarding documentation for code, I personally favor the concept of literate programming - self-explaining code. There are occasions when this should be supplemented by notes. As someone above pointed out, 'comments' along the lines of: 'Takes two parameters ugh and oh and returns an int' have no place in quality work.
Sat 22 Mar | Thomas Eyde | So Philo provided a bad comments sample. Can someone provide a code sample with good comments, please? With good comments which can not be removed by writing the code a little different?
Sat 22 Mar | Thomas Eyde | My biggest problem with documentation are requirements like '...and it has to be documented!'. No indication on indended users or usage, nothing on what it should describe. Nothing. Too many customers require documentation, but have no clue on what should go into it. We are programmers, not magicians or mind-readers. And I don't like to waste my creative energy on guessing what the customer needs. I need the energy more elsewhere.
Sat 22 Mar | Jimmy Chonga | The conclusive reason why programmers hate documentation: It's wasteful, and most programmers hate anything that doesn't have a purpose. When I say wasteful I don't mean that it doesn't serve a purpose, but rather that without a strenuous committed, time sucking process the documentation can be more of a hindrance than a help as it diverges from the actual purpose and function of the code to being completely separate reality. Many help files and programs share very little in common. How do you solve this quandary? Through the use of tools and technologies that eliminate duplications of effort and divergence. For instance if you have a UML tool that comments your class diagrams, inserting them as comments in the code, and then another tool pulls the code comments and creates a nice WinHelp or HTMLHelp or PDF, then THAT is a process that coders can work with (and it'll yield much better results). Manually synchronizing things NEVER works over the long run.
Sat 22 Mar | Dennis Atkins | As far as commenting your code, the answer is yes you should do it. It will help when you come back to it later. And it will help others when they have to fix your bugs. I guess though the super geniuses whose code not only is bug free but prefectly meets current and future requirements are exempt from writing comments. I even put comments in one-off utility code that I know for a fact no one will ever look at again. The comments help me design and structure the code. Perhaps if you have separate design documents that specify everything in advance before you start coding you can skip the comments. Perhaps. But what I really want to talk about is the issue of user manuals. I write user manuals for all my applications. It's the very first thing that I write in fact. The user manual IS the requirements document in my style of writing. It works for me and I think it's a very good way of doing things. I suppose it takes all kinds but honestly you need to have somebody on your team that can generate plain talking easy to understand documentation that explains what the program does. maybe its a fancy pants pdf file with embedded this and that or maybe its a plain text man page. Whatever it is, it's real helpful to have a high level view of what you are doing to help stay on course. It's also great reading for customers and investors. Just last week, one new client said one of my manual's was one of the most intriguing and compelling things he had ever read. yeah, OK, I work some sales talk and rah rah in there as well. Why the hell not? It's all part of taking over our segment of the industry and leaving our slow and dimwitted competitors far in the dust behind.
Sat 22 Mar | Brad (dotnetguy.techieswithcats.com) | This thread and the comment thread have something in common: most of you are where I used to be. I used to be a stickler for commented code. Then I started learning and using refactoring. This was a real eye-opener, that you could make the code speak for itself instead of needing comments. I read 'any time you find yourself writing a comment, refactor instead'. It sounded like crap when I first heard it, but I started doing it anyway, and it's absolutely true. Someone posted that they wanted to see code that had perfect comments, that couldn't be divorced from the comments. Other than explaining the 'how' of an algorithm (like, say, describing how an encryption system works), I've yet to see this. I can't promise I have the time to do it, but if someone posts something they think qualifies, I'll give a shot at refactoring out the coments.
Sat 22 Mar | Hardware Guy | One more time: can anyone point to a *non-trivial* example of self-documenting code? If self-documenting code can be written, I'd like to try it myself. But I need something more than assurances that it's possible.
Sat 22 Mar | Dennis Atkins | Well, I don't know how old you are but likely I was refactoring since you were in diapers. And writing comments. Good ones. 'In our olfactory analogy, comments aren't a bad smell; indeed they are a sweet smell. the reason we mention comments here is that comments are often used as a deoderant. It's surprising how often you look at thickly commented code and notice that the comments are there because the code is bad.' -- Martin Fowler, Refactoring, page 87 See, it's not that comments are bad. Your argument suggests you believe that not writing comments is a mark of brilliance because some bad code has comments. This is like saying that because some meat is spoiled, everyone should be a vegetarian.
Sat 22 Mar | Dennis Atkins | Brad, I accept your challenge. Please refactor the following FFT code to make it easy to understand without comments: import java.awt.*; double[][] fft_1d( double[][] array ) { double u_r,u_i, w_r,w_i, t_r,t_i; int ln, nv2, k, l, le, le1, j, ip, i, n; n = array.length; ln = (int)( Math.log( (double)n )/Math.log(2) + 0.5 ); nv2 = n / 2; j = 1; for (i = 1; i < n; i++ ) { if (i < j) { t_r = array[i - 1][0]; t_i = array[i - 1][1]; array[i - 1][0] = array[j - 1][0]; array[i - 1][1] = array[j - 1][1]; array[j - 1][0] = t_r; array[j - 1][1] = t_i; } k = nv2; while (k < j) { j = j - k; k = k / 2; } j = j + k; } for (l = 1; l <= ln; l++) /* loops thru stages */ { le = (int)(Math.exp( (double)l * Math.log(2) ) + 0.5 ); le1 = le / 2; u_r = 1.0; u_i = 0.0; w_r = Math.cos( Math.PI / (double)le1 ); w_i = -Math.sin( Math.PI / (double)le1 ); for (j = 1; j <= le1; j++) /* loops thru 1/2 twiddle values per stage */ { for (i = j; i <= n; i += le) /* loops thru points per 1/2 twiddle */ { ip = i + le1; t_r = array[ip - 1][0] * u_r - u_i * array[ip - 1][1]; t_i = array[ip - 1][1] * u_r + u_i * array[ip - 1][0]; array[ip - 1][0] = array[i - 1][0] - t_r; array[ip - 1][1] = array[i - 1][1] - t_i; array[i - 1][0] = array[i - 1][0] + t_r; array[i - 1][1] = array[i - 1][1] + t_i; } t_r = u_r * w_r - w_i * u_i; u_i = w_r * u_i + w_i * u_r; u_r = t_r; } } return array; } /* end of FFT_1d */
Sat 22 Mar | Bored Bystander | OK, I'll tone it down. Usually - management imperatives to document code are nonsensical and Dilbertish. I'll agree with that wholeheartedly. In fact, the directives to document are do thoughtless they're just plain stupid. 'Document it so we can get a trainee or clerk to understand it.' 'But it's really complex, how do you suggest I document it?' 'Make it clear, you techies are always making things too hard.' Etc. But telling someone 'the code will tell you everything you need to know' is often unfair, arbitary, and is a mask for laziness and unprofessionalism. I've found that only trivially small applications can be reliably understood by examining uncommented code. And when I rant about the need for written communication I'm also ranting (by implication) about tendencies among most geeks to not want to explain anything or break anything down into simpler concepts. Case in point: last year I did a turnkey contract that consisted of porting a 100,000+ line piece of avionics code into a training simulator. I could find *NOBODY* in that organization that would bother to give me the time of day to review the basic operational concepts of the existing software. Even SW people that knew couldn't begin to even describe lucidly what the general operation of the thing was. The point is, the inability of my 'peers' to support the work with even a token level of overview of major subsections of the thing did several negative things. It probably added 2-3 months to the task. It made me less sure of the architecture, to the extent that I had to guess why things worked. It reduced my productivity greatly because I had no idea how interconnected different parts of the whole were. My work was less effective overall because my self described world class peers were functionally illiterate about conveying ideas. In fact, most tech workplaces with legacy code tend to resemble frat house hazings. It's considered a badge of honor and necessary dues paying to be unproductive while you re-invent the wheel. You're swimming in mud trying to get some traction while a bunch of oafs that *know* willfully withhold information, your lifeblood. This unwillingness and lack of ability to communicate concepts to peers or management is woefully rife in this industry.
Sat 22 Mar | slacker II | I pretty much agree with the code being the best documentation. That said, there's good code and bad code. Bad code, like the example Dennis Atkins provided, is usually accompanied by bad comments, again, like the example Dennis Atkins provided. Good code usually doesn't need the comment. Caveat: I'm a fan of a 1-liner 'why' comment every now and then.
Sat 22 Mar | Brad (dotnetguy.techieswithcats.com) | Everybody can be upset with me if they read vitriol into what I wrote. I was just pointing out that the people who are militant commenters may be better served by learning to refactor than learning to write longer, more prosaic comments. I didn't claim to be brilliant or superior to anybody here (I don't know you, you don't know me; how could anybody make such a claim?). I was merely trying to point out to people that there's life after 'novellas of comments'. As for the FFT sample, we have two problems. First, I don't know what an FFT does (sorry, no math degree), and second, that code is not really commented in any significant way to help me figure it out. Besides which, I think I pointed out that I find there to be a general exception of comments to descibe the 'how' of algorithms. A purely mathematical algorithm -- which occurs pretty rarely in most code -- is probably going to require comments. *shrug* I'm not anti-comment. I'm pro-refactoring as a way of getting readable code. Comments are often covering up bad code (as a previous posted pointed out), but just as often, they're out of date and inappropriate. As for non-trivial code that has little commenting, I can't post the code I'm working on right now for obvious reasons. As of today, it's approximately 4550 files broken into 4 projects, covering about 3.5 megabytes of code (we haven't released v1 yet). Well over 98% (at a guess) of the comments there are XML comments for auto-generating help files. Look, everybody can be pissed off all they want. I'm not really interested in a pissing contest with anybody. My offer stands to attempt to refactor out the 'perfectly commented' bunch of code that somebody brings. I'm afraid the FFT example doesn't really work for me.
Sat 22 Mar | Hardware Guy | Brad - We're not pissed off with you (at least I'm not). We're just not convinced. It's not your job to prove that someone can write good, self-documenting code. Nor is it our job to believe you, at least not without a little proof.
Sat 22 Mar | Dennis Atkins | Ahem. Well that Java FFT routine I cut and pasted from the web is not all that optimized, but it's a pretty decent one pedagogically. It's laid out pretty clearly and concisely. The variable names seem clear to me since I have a general idea how the FFT works. I don't see any point in documenting it further, it looks good as it is. I think you are sort of getting my point and sort of not getting it. i'm really with you on the refactoring and agree with what I posted by Fowler -- a lot of comments might be a bad smell indicating the code could be refactored. but fowler never says you shouldn't comment - he says commenting is a sweet smell, meaning he fawors it and sees commenting as good. On the FFT, comments added would tremendously help someone who was not intimately familiar with the FFT understand it a lot better, and maybe even enable them to do some optimization or tweaking. Most code is this way. Most code is obvious to the person who just wrote it today, and much is obvious to someone who is intimately familiar with the problem domain. Even so you should still comment since not everyone dealing with the code is going to be that familiar with it. And for many other reasons too.
Sat 22 Mar | Brad (dotnetguy.techieswithcats.com) | Perhaps you didn't understand my point about self documenting code. Variable names like a_b are hardly self documenting. And a mathematical formula is a little bit outside the scope of self-documenting anyway, as I pointed out earlier. Done posting. Good luck. Write novels of comments!
Sun 23 Mar | Stephen Jones | The other thread on commenting code seems to state it pretty clearly. You don't comment primarily on what is in the code. You comment on what isn't in the code (the why, the business case it's trying to address, the reason for doing it this way and not another, any pitfalls to watch out for when refactoring, and so on). I really fail to see how refactoring is going to make those comments redundant. Also one or two line comments at the top of each short block of code saying what it does, so you don't have to read it all can be useful. You could use meaningful names instead but do you really want controls called PrintReportToShowHowManyApplicantsFromCountrySpecifiedinCountryOfCurrentResidenceDialogBoxArrangedInReverseChronoligicalOrderofApplicationDateButton
Sun 23 Mar | ODN | Maybe it's the mathematical mind at work. As One-Armed Bandit said, 'Sometimes, once I figure out how a piece of code should work I don't feel like even typing the code in.' This reminds me of a joke I once heard: An engineer, a physicist and a mathematician are staying in a hotel. The engineer wakes up and smells smoke. He goes out into the hallway and sees a fire, so he fills a trash can from his room with water and douses the fire. He goes back to bed. Later, the physicist wakes up and smells smoke. He opens his door and sees a fire in the hallway. He walks down the hall to a fire hose and after calculating the flame velocity, distance, water pressure, trajectory, etc. extinguishes the fire with the minimum amount of water and energy needed. Later, the mathematician wakes up and smells smoke. He goes to the hall, sees the fire and then the fire hose. He thinks for a moment and then exclaims, 'Ah, a solution exists!' and then goes back to bed. Another way of stating it: 'The proof is left as an exercise for the reader.'
Sun 23 Mar | Patrik | I dont mind writing some small document to go with my code if its needed. Usually if you do document an api half a page of text per function is plenty. However most places I have seen use totally bloated templates for documentation purposes. These templates usually are one-size-fits-all, used for all program documentation needs regardless of platform, which renders 70% of the template not applicable because it deals with say mainframe related stuff, and Im documenting UNIX stuff. Short and sweet goes for code. Short and sweet should go for documentation as well. Templates are so stupid it is laughable. This is why I hate writing docs. And needless to say, why people hate reading it.
Sun 23 Mar | simple mind | Where's the proof that someone can't write good, self-documenting code?
Sun 23 Mar | simple mind | this is self documenting code: http://www.cis.ysu.edu/~kramer/DataStructures/Intro/SelfDoc.html
Sun 23 Mar | simple mind | McConnell shows you how to do it: http://www.construx.com/survivalguide/doc/chk17.htm
Advantages to MFC | Fri 21 Mar | Alai
Im new to Windows programming (mainly use Perl and some Java, have edited existing VB code) and was wondering what the advantages and disadvantages to the MFC are vs. the Win32 API.
Fri 21 Mar | GML | MFC is a C++ wrapper, among other things, around the Win32 API. It builds a framework for developing Windows applications.
Fri 21 Mar | dmooney | The primary advantage would be you can develop windows applications more rapidly using MFC vs. Win32, while still using C++.
Fri 21 Mar | William C | Since the topic of MFC has been brought up, I'd like to digress for a second (although I suppose this discussion could show a possible disadvantage): I was playing around with VS6.0/MFC/C++ in my spare time the other day. I was trying to figure out how one would design some type of 'plug-in' architecture to a Doc/Vew app (the CMainFrame -- not using a Dialog app). Something along the lines of: dll's in a directory. On startup of the exe, it determines which dll's are in this directory and adds a button to the existing toolbar on the MainFrame and possibly menu items. I found this article: http://www.codeguru.com/toolbar/CFileDialog.html , where the guy adds a button to the CFileDialog toolbar (he adds a button through the use of CToolBarCtrl and he gets messages to this new button by overriding WindowProc using SetWindowLong). But that works all fine and dandy with a Dialog. With a MainFrame, I can get the button added (using the same technique) but the button won't stay enabled. My new WindowProc is receiving all the messages, but the button won't stay enabled! The only way I could figure out how to keep it enabled was to add a message map entry to the message map ... but that defeats the whole purpose of a 'plug-in' architecture. I would expect to be able to load dll's that I don't envision at the moment. I spent a weekend trying to figure this out. Either my limited experience in MFC is being exposed for this advanced topic ... OR ... this is a limitation of the MFC Framework. So, which is it? Anyone ever fooled around with creating the type of 'Plug-in' architecture I'm describing here (with MFC?).
Fri 21 Mar | flamebait sr. | Another digression.... MFC is *fun* because you get to work around not only stupid programming in the present, but hacks and other weirdness from years gone by including workarounds to not having templates, workarounds to not having RTTI, a fundamental distrust of the entire system of vtables, workarounds to a 16 bit operating system, and some really poor decisions that I can't blame the coders who made them for because this was when C++ was still a new and still-to-be-standardized language. Some parts of MFC are nothing but lightweight layers over the win32 API, in some cases very blatantly. MFC hackers like to go to http://www.thecodeproject.com/ to pick up pointers on how to do things that the users now expect but MS hasn't added to MFC because MFC is most likely into the winding-down-to-maintenence mode, despite official statements to the contrary. Which is fine. If people don't move over to the .NET framework and that whole effort dies, MS will probably still have to kill MFC and provide an alternative C++ platform for windows coding. There's too much stuff that just gets in the way and needs to be radicly changed. That being said, it's still probably less troublesome for most projects than writing to the raw Win32 API. You might consider checking out http://www.wxwindows.org/ to view a cross-platform MFC-like platform that is free of many points of obnoxiousness.
Fri 21 Mar | LeggoMyRiceCake | << ... a fundamental distrust of the entire system of vtables... >> Do you mean message maps instead of virtual functions?
Fri 21 Mar | Chris Tavares | When coding in MFC, I usually spent more effort working around the framework to get my stuff done than I did saving effort by using the framework. To the original poster - I would strongly recommend you work through Petzold's _Programming Windows_ book BEFORE diving into MFC. A lot of what's in MFC doesn't make sense unless you know the Win32 API beneath it. You don't need to be an API expert, but you need the basic understanding. Plus, this way when the framework gets in your way, you'll have the knowledge you need to go around it. For building ordinary win32 apps, MFC *does* save time. It's just when you want to get fancy that it gets in the way.
Fri 21 Mar | Chris Tavares | Message maps are used instead of virtual functions because of overhead. If every windows message had a virtual function associated with it, there'd be several hundred bytes per window class of just vtable. Message maps mean that you only pay for the messages you use. And besides, lots of apps define windows messages at runtime. How do you dispatch to a virtual function then? WTL ( a framework built around ATL ) uses message maps as well, but lets you do all sorts of funky stuff with them that MFC doesn't. It's pretty cool.
Fri 21 Mar | Ben Combee | I thought they already supplied an alternative C++ platform with ATL and WTL (Windows Template Library). The support for WTL isn't as deep as MFC, but it doesn't suffer from as much legacy work. See http://www.codeproject.com/wtl/ for details.
Fri 21 Mar | dmooney | Microsoft may have provided WTL, but where the support in Visual Studio for it? Where's the WTL AppWizard?
Fri 21 Mar | MFC Hater | MFC is *slightly* easier to code to than the Win32 api. However, your application either has to fit the doc/view architecture, or you have to work around it. And the mappings of classes to handles and OS objects are imperfect at best. And Visual C++ separates code and dialog layouts into the old, ugly API level code/resource dichotomy. There are some developers to whom MFC is the gold standard. And recruiters used to ask for it incessantly (ignorant jerks.) For my money, MFC is a cumbersome, almost irrelevant pile of poorly designed crap that gets in your way when you have a lot of screens to code, and I'm not really certain that I buy the explanation that C++ was that immature when MFC was designed, therefore the design decisions in it had to be lousy. My opinion is that MFC was designed by 'C loving' Win API developers who refused to consider polymorphism or other useful C++ features because they either didn't like C++'s uniqueness or they didn't care to learn. It feels like a rush job, as frameworks go. I know, I'll get lambasted for posting a frank opinion and will be nitpicked to death over the exact meaning of each and every word of criticism. Well, sue me, I'm not playing. MFC stinks unless your focus is writing low level stuff. I don't know anyone who is really productive in it. Using MFC or Win32 directly for ordinary applications is almost as off the wall as coding in assembler...
Fri 21 Mar | Brad (dotnetguy.techieswithcats.com) | The only advantage for MFC is that there's a lot of books about it. In every way, WTL is superior. As to where the wizards are, I can't help you. I don't use wizards. *shrug* Wizards make bad assumptions and hide important details from you. Learning what's going on is infinitely more useful than having stock wizards hide all the interesting bits from you. Oh, and you can write your own wizards for VC++. Did you know that?
Fri 21 Mar | flamebait sr. | The problem is MFC has a little more certain of future support than WTL because MS wishes right now they hadn't released WTL. WTL has never been officially supported. Not like that really means anything because MS will probably never fix the problem when you need it (i.e. 2 days before release ;) ) I can't fault MFC too much for the message map stuff. It's only lately that people have realized some good techniques using templates and functors and whatnot that work mostly like message maps but are far less obnoxious (and don't require macros) The wizards are quite useless and just make your life difficult. The worst of all solutions, probably. But again, most of the reasoning about what the right way was hasn't occured until much more recently.
Fri 21 Mar | runtime | If I were just starting out now, I would NOT recommend learning anything about MFC. MFC's entire purpose in life has been replaced with the much superior .NET Framework.
Fri 21 Mar | Chris Tavares | 'In every way, WTL is superior.' There's one way that WTL loses to MFC. WTL apps take FOREVER to compile. Particularly if you load lots of nifty template stuff from your own app on top of it.
Fri 21 Mar | Brad (dotnetguy.techieswithcats.com) | Is that still true with VC++ 7 (and 7.1)? I stopped using C++ altogether. :)
Sat 22 Mar | | Well, you can always blame Microsoft's fucked up implementation for your bugs, for a start.
Sat 22 Mar | d00d | So, I'm really curious... Back, 7 years ago when I wrote a few native 'Windows' apps, I used Borland's OWL - the thing that forced Microsoft to even conceive of MFC. So what is the future proof method for wrting Windows apps - which utilize the window manager/GUI widgets? Is it .Net? And If so, what does it look like? Are there windows messages/queues? Big switch statements? Resource Editors? Thanks,
Sun 23 Mar | HeWhoMustBeConfused | The only advantages I have ever seen from using MFC are: 1. It makes it easier to generate a blue-screen-of-death. 2. Your code is MUCH larger. Obviously this benefits your customers, because bigger is always better. 3. Your product is 'completely based on Microsoft technologies'. It must, therefore, be superior.
The importance of public speaking in career... | Fri 21 Mar | Interested Party
How would you rank the importance of public speaking in your career and do you have any suggestions on how one might go about improving in this area?
Fri 21 Mar | S.C. | Importance depends. Good public speaking is always a plus anyway. Practice makes perfect. Watch more David Letterman and learn how he talks and thinks.
Fri 21 Mar | tapiwa | Join your local Toastmasters. I remember we used to have these in High School, and in University. It really should not be too difficult to find one. http://www.toastmasters.org
Fri 21 Mar | Deepak Shenoy | I second going to a Toastmasters club. I've joined up in a club in my town and it's helped me make much more consise presentations. How much does public speaking help - well, it's relative, but as you go higher in the corporate ladder (or if you're in marketing) you'll need to sell something to people using presentation skills. Sometimes even to your own bosses or board. A bad presentation can botch things up. Public speaking isn't just the art of speaking, it's body language, voice modulation, structured speech etc...and not using too many complicated words :) Some of the best speakers are surprisingly lucid!
Fri 21 Mar | Bored Bystander | And I will 'third' the recommendation to attend Toastmaster's. I did, and it really helped me to become more self assured in speaking to groups. Mainly, Toastmaster's is practice for real life presentations. You receive structured speaking exercizes with constructive feedback, and you practice preparing your own speeches. Also you have the opportunity to practice at impromptu speeches called 'table topics'. It sounds worse than it really is. Or maybe not. :-) One caution - Toastmaster's promotes the 'cause' of public speaking as an endeavor in its own right, and many of the people involved in a club at a highly visible level take it all VERY seriously. You can just dabble in it, but there's tremendous pressure to attend speech contests and events outside the regular club meetings. It get really annoying if all you want to do is attend the weekly or biweekly meetings...
Fri 21 Mar | Hardware Guy | I agree with those who've said that public speaking skills are important if you plan to climb the corporate ladder. But they're also essential to people who want to stay technical, and hang out at the lower rungs. Unless you work alone and plan to keep things that way, sooner or later you'll have to stand up in front of a group of people and explain what you've done, or what you'd like to do, or why your idea is best. Instruction and practice help a lot. While I haven't attended Toastmasters myself, I've seen it work for others. And if you have a kid who's at all inclined to do so, encourage them to join the forensics club in high school. Knowing how to talk in front of a group can open up job opportunities, particularly for techies who aren't known for such skills.
Fri 21 Mar | Brent P. Newhall | I've observed that practically everyone is called upon to speak publicly at some point in their carerer. Your local library should have plenty of books on improving public speaking skills. It's free. Also, try videotaping yourself, then replay the tape a few days later. You'll notice all sorts of behaviors to eliminate. The most important things I've learned about public speaking (after teaching a few programming classes) were: 1. Everybody gets nervous about speaking in public. Don't ignore it, but let it stop you either. 2. Be well-prepared. It's better to have so many notes that you don't use them all than to not have enough. 3. Speak clearly. As above, try recording yourself, then listen to the tape a few days later.
Fri 21 Mar | Reginald Braithwaite-Lee | I try to give at least four formal talks a year, and I've done so for at least the last decade. (Some of those presentations are public, some private). I don't know what to tell you about doing it 'for your career'... In my experience there are some such benefits, but I wouldn't personally give a talk for the sole purpose of promoting myself. I mention this because there are a number of venues for giving a talk, and I suggest choosing a talk and venue that have a deeper meaning for you. Here are some of the non-monetary benefits I have received from giving presentations (YMMV): - meet interesting people I respect - meet interesting people I have to work hard to respect - force me to clarify my own thoughts on a subject - free BEvERages - ego gratification - meet people I might want to work with in the future - excuse to play with PowerPoint - evangelize ideas I feel are important Changing the subject slightly, I put my presentations on line after the talk. One problem I have discovered is that they make absolutely no sense without the dialog. It's a weakness of mine: my slides support my talk, but they don't repeat my points. Here's an example: http://www.braithwaite-lee.com/opinions/agile-critical-chain.ppt If you're thinking from a promotion POV, you'll want to make sure that you have (a) handouts at the talk, and (b) a web version of the talk that is readable and interesting for later downloads. -- http://www.braithwaite-lee.com/
Fri 21 Mar | Prakash S | Very Important, when developers need to talk to non-tech ppl it makes a huge difference. When you can put things clearly, in a very articulate manner- is invaluable. From my own experience (I am TA) over the past year and half I have seen my communication skills improve tremendously. I teach an intro course in computers to a host of students from majors like business to english,.. each student has a different perspective of things, so to speak in a clear confident manner is a great asset.
Fri 21 Mar | Prakash S | Reginald, Nice slides, In which article did Joel Mention the bit about process? thanks,
Fri 21 Mar | Tj | Speaking well makes you good friends, who like to be entertained by thought. Gives the confidence to be wrong in a way that doesn't lose peoples' respect, but rather allows them to see that you're willing to be inspired by mistakes.
Fri 21 Mar | Master Ninja | If you have a problem, as I did, with being afraid of speaking in public, I recommend taking some training in improvisational acting. I just finished a workshop, and it helped me greatly. It was also a lot of fun. I took my class at Comedy Sportz (http://www.comedysportz.com) which has locations throughout the country.
Fri 21 Mar | Carnegie | Most programmers are introverts. We are happier coding than meeting people. I have mostly avoided public speaking by just saying no. I have done a few demonstrations of my programs but I found the bored and uninterested looks on the faces of my audience too disheartening. Since then I have made sure I worked with a trainer or demonstrator who enjoyed this kind of thing. I believe too much public speaking can lead to some unpleasant social habits. These people seem to lose their self-consciousness and they often become rude and loutish.
Fri 21 Mar | Burney | My theory is that everyone hates public speaking and 99% of people are pretty bad at it. Therefore, you only have to not hate it and be adequate in doing it in order to rise above the masses and be seen as a star! Certainly this skill can be used along with passion, technical depth and empathy to make you seen as a natural leader. I used to be very nervous giving presentations. Someone told me to remember that the audience knows less than you do (otherwise why are they listening). So, rather than imagine the audience in their underwear or something equally silly, imagine that they want you (perhaps hired you) to tell them your story--to teach them. You might also be worried that someone might know more than you. If they do and catch you in a mistake, don't panic -- turn it around and tell them that their feedback is just what you were hoping to get when you offered to give your presentation. As the presenter you control the groundrules of your presentation. If the groundrules are that this is a time for you to share your expertise and get expert feedback in return, then how can you be nervous? It's a mindset that works for me. If it works for you, then make this groundrule explicit in the beginning of your presentation. Another thing that is important in the world of PowerPoint is never to repeat word-for-word the same things outloud that are on the slide. While you are talking next to the projection of a slide, the audience is reading the slide. They will be done long before you are done reading it outloud. If you are still reading it to them after they have read it, their frustration level will rise dramatically. Instead, use the slides as a kind of prop for your talk. Graphs, maps, pictures and a few words or simple bullets are great. Some short (non-repeating) animations may help too. Words on the slide should be there just to help you remember what you wanted to talk about and to cue the audience as to the current topics you are covering. If you really must have viewgraphs with lots of words (for example sometimes my slides have to double as a course manual) then keep to the rule and don't read the text. Highlight the most important points and let the audience take the rest in themselves while you talk. For similar reasons, don't hand out notes before the presentation (OK, you can hand out prints of your slides if you must--but not with 'notes' attached). After you are done with your presentation, then you can hand out a copy of your notes, speech text, etc. Otherwise people will probably be reading your notes ahead of the pace of your speech and then will sit there frustrated and bored, assuming they don't need to listen. Finally, take opportunities to practice. Make a point to seek appropriate opportunities in team meetings to speak to your team. Keep pushing yourself to do this often and at progressively larger gatherings. Practice, practice, practice!
Sat 22 Mar | Bored Bystander | Burney, you're telling it like it is. Almost everyone is nervous with public speaking the first few times they do it. I think that people that don't ever want to try it see it as something that 'someone' else is naturally good at and enjoys. That's a mistake and a red herring. Almost everyone hates the idea of public speaking - it's perfectly natural to feel that way. But I also have come to believe that while some gifted people can become good speakers on their own, most of us need occasional coaching and encouragement. That's exactly why Toastmaster's is such a benefit. You can do speeches of varying types and different lengths and you can receive very fine grained commentary from others on your mastery of each of these skills. I'm cautioning that unless you have the opportunity to give speeches in your daily worklife that don't have a big consequence either way to your career, it's pretty hard to practice enough to become 'good'. The only 'problem' with Toastmaster's is that it's presented as kind of a way of life, not a limited slice of one's life. Toastmaster's 'Light' (if there was such a thing) would probably help the average techie become more confident in presentation skills. The club I belonged to for awhile had a 2 month (est) program called 'Speechcrafters' that immersed participants in speech writing and presentation with an accelerated format.
Sun 23 Mar | Deepak Shenoy | Bored Bystander, I agree - sometimes this Toastmasters as a 'way of life' gets to me too. Sometimes things just go overboard, especially when there's peer pressure among clubs and a district involved and so on. But one thing I can say is that there are ways to speak humorously on topics not related to sex, religion or politics. My club adds to the standard format with a 'special session' at every meeting where we do different things that involve stage presence and ad-libbing, but is a lot more entertaining. Lot on the lines of 'whose line is it anyway' - and that is really what most people look forward to. In the end, what's important is to make people want to speak, and to pick up the tricks of the trade...but it's gotta be fun, or they won't come back.
Wrox bankrupt? | Thu 20 Mar | Philo
http://www.ctdata.com/programming/2003/03/18/0526249.shtml A friend of mine got a letter in the mail today from Wrox stating the same thing (hes expecting payment on an article he submitted). Philo
Thu 20 Mar | Prakash S | They were never consistent on their books - but the bankcrupcy issue had more to do with their parent company, thatn them...
Fri 21 Mar | Tony E | No great loss
Fri 21 Mar | Joel Spolsky | Yep, they're belly up. This is a company that started out with good potential but very rapidly became the ultimate Shovelware publisher. In a rush to get books out, they often had four, ten, even fifteen authors on each book. Editing appeared to be non-existent. The books were terrible even when each author tried their hardest. The covers looked like the Chess Club page in a high school yearbook -- a dozen mugshots of men who hadn't had a shave or a haircut since learning Perl. Chapters repeated things and left things out. Certain chapters were unreadable, depending on the author, and you could NEVER learn a technology by reading a WROX book because there was no overall intelligence behind the book, just a bunch of chapters by a smattering of writers, some good, most terrible. Amen to the 'Good Riddance'. Long live Apress. ;)
Fri 21 Mar | runtime | Plus Wrox book covers often had gratuitous photos of butt-ugly developers/authors.. damn!!!
Fri 21 Mar | flamebait sr. | Well, the Wrox books were better than quite a few Sams books, to their defense. Nontheless, I think that's proof that some things just don't work as an assembley line (which was basicly how Wrox worked)
Fri 21 Mar | Stephen Jones | What's wrong with Sams books. Some of the 24 hours series are good, and some are ordinary, but I've never seen a bad one. In general they chose a good author or at most a pair, told him/her/them to produce 24 chapters with a few easy exercises at the end of each, and get on with it. Seems like a pretty good way to run the show.
Fri 21 Mar | Brad (dotnetguy.techieswithcats.com) | There are really three GREAT publishing houses for technical stuff: Addison-Wesley, Apress, and O'Reilly. Anything else is suspect. :)
Fri 21 Mar | Brad (dotnetguy.techieswithcats.com) | I suppose you could toss in MSPress if you're a Microsoft coder, but even then I've seen some rather uneven MSPress books, enough so that I wouldn't trust a book from them without either knowing the author or having a recommendation.
Fri 21 Mar | Albert D. Kallal | Gee, I did not think worx was that bad. But the only book I ever had from them was one that came in the Visual C 6.0 c++ box. I had two of those books sitting around here for awhile. The book was a single author, and looked ok to me. It was a beginning c++ book. I only read the first chapter, but only stopped because I did not need to learn C++. But Microsoft did see fit to include a copy with each version of C++ sold (we talking the VC6++ standard edition). I just needed the C++ compiler to run all my tour software, but I still don’t know much c++. I was using a cross compiler that takes pick basic (mv-basic) code, and converts it into c++ and then runs on windows. This amazing produced is jbase www.jbase.com Anyway, my experience with the sams books are quite good. I had a Visual Basic for Application (Unleashed series), and the book was quite good. And, last but least, I certainly do think that the process that Addison-Wesley uses for making their books is very good (they use reveiwers). And, their process better be ok, as I am waiting for a check from them in the mail!!. Albert D. Kallal Edmonton, Alberta Canada kallal@msn.com
Fri 21 Mar | Immature programmer | Actually, I've had good experience with some Wrox books because they contained the snippets of code that did exactly what I needed at the time. But I have to agree, they had horrible looking book covers considering they weren't intended to be scary or alarming. Blood red color scheme with creepy looking programmers, all having glasses, messy beards, and bad haircuts; they were just awful! They were so bad, I had to either cut off the front cover or at least make sure the book was crammed between two others on the shelf so that the cover wasn't visible. I like O'Reilly books much better. They have pictures of cute, furry animals on the cover :)
Fri 21 Mar | flamebait sr. | Hmmm.. There's one book that has a mostly naked guy on the cover, I forget the title or publisher. I think the point of the Wrox covers was to show that the authors were programmers, just like you and me. Personally, I don't *want* to look like that. If they want to show that the authors were programmers like all of us, they shoudld put attractive muscular dudes and attractive ladies on the cover. Very few programmers actually look like that, but I think we'd all like to think we do. Well... except for those coders who are furry-fans outside of work. ;)
Sat 22 Mar | Dennis Atkins | 'There are really three GREAT publishing houses for technical stuff: Addison-Wesley, Apress, and O'Reilly. Anything else is suspect.' Addison Wesley is indeed of the absolute highest quality. Amazing the number of timeless works they have. O'Reilly is usually good but there are some dogs. And not usually all that deep. And sometimes not as well put together. Prentice Hall and Dorset House are both consistently good and also both well edited and well typeset. Fifteen years ago, Prentice Hall was what Addison Wesley is today. Microsoft Press is about as good as O'Reilly -- quite a few good ones but you'll want to leaf through each first on a case by case basis before buying.
Sun 23 Mar | . | Actually, Wrox's fate and the quality of their output is a good portent of the way software might go with all the emphasis on cheap programmers. Quite a few publishers had a business model of just finding authors from web forums, allowing and encouraging them to rewrite product documentation, paying them hardly anything and then putting out lots of titles in the popular fields of the moment. The authors, rank amateurs, would accept doing all the work in return for the 'kudos' of being an 'author.' The quality of their code samples was poor, the writing was abysmal. They were an embarrasment.
Sun 23 Mar | Nick | Out of curiousity, I looked through my bookshelf to see how many Wrox books I had. Most of the Wrox books were purchased back when I was less experienced. Since then, my bookshelf has been filled with titles by Addison-Wesley, O'Reilly, and Prentice Hall. It's also fun to look at the ACCU book reviews by publisher: http://www.accu.org/bookreviews/public/reviews/0pb/index.htm Under Sams, I think I found my favorite book title of all time: 'Teach Yourself C++ in 10 minutes' by Jesse Liberty. Classic!!
Persisting J2EE Web App State | Thu 20 Mar | John Topley
Im looking for thoughts based upon experience of how best to persist the state of a browser-based application in J2EE. The sort of scenario Im thinking about is taking the user back to the screen they were viewing when they last logged on, that sort of thing. Would this be a job for an LDAP-compliant directory service?
Thu 20 Mar | Walter Rumsby | Are cookies an option?
Thu 20 Mar | John Topley | Probably but would only want to store the bare minimum of information in a cookie, such as a user ID.
Thu 20 Mar | mark | If they had to log in first, you could store it server side.
Thu 20 Mar | Duncan Smart | Where? Er, the database?
Thu 20 Mar | Erik Lickerman | You could do it in LDAP but this is not a preferred use for such a directory. In general you want to use LDAP for user info which tends not to change over time. The one example you give would change every session.
Thu 20 Mar | Daniel Shchyokin | Every JSP Servlet ... has a session object (a hashmap)store the relevant info there!
Thu 20 Mar | Daniel Shchyokin | meant to say JSP/Servlet
Thu 20 Mar | Daniel Shchyokin | Also look at struts
Thu 20 Mar | Will | A session object is no good, as it goes away when the session is over. LDAP is a poor choice, see above, and cookies are really useful only for very small snippets of data. My suggestion would be to make an object that with properties that hold all the info about the browser state, and write a save method for that object that persists the properties. A static retrieve method could regenerate the object from the storage layer based on a user id. This abstracts the details of the persistance, giving you more flexibility. Three possible ways of persisting the data in Java: -- create a table in a database with 1 field for each property, keyed by the user id -- add a BLOB field to the user table in the database, and serialize the entire object to a byte array and store that byte array in the BLOB field for the user's record -- serialize the object to a file and write it to disk with a filename based on the user id The first method works well for small amounts of data for many users. The last method works better for large amounts of data for a small number of users.
Sat 22 Mar | Daniel Shchyokin | Try this, give everyone a session id, have an object implement serializable and write session out to disk. Upon session recovery get session id from cookie, read in session
Sat 22 Mar | Daniel Shchyokin | oops didn't read your post will, yep method three sounds good, the problem with databases, besides being slower than a local file system for this kind of thing, is that the session properties may change. The scary part with method 3 is be sure there is a reliable way to tell when sessions are done (users may not always touch the 'logout' link
Sun 23 Mar | Will | Good point-- you can't depend on logout. But there's several ways to get around this. If you're working with the Servlet 2.3 API, you can have the object implement HttpSessionBindingListener. Store the object in the session, and when the session times out the valueUnbound method will be called (at which point you can serialize it to disk).
politics | Sat 15 Mar | The Real PC
I have noticed that certain groups, or people in certain occupations, are more likely to have certain types of political ideas. I have been observing this over the years. It also seems to correlate with how people dress. I think the underlying causes can be very complicated and I try to figure out what they might be. I was wondering if there are any typical political views connected with software developers. I thought that, maybe, working at a job where you have to solve complex problems and keep a lot of things in your mind could lead to more sophisticated ways of looking at complex problems in general. I have noticed that certain groups are more likely to have very simple answers to the current international problems, for example, and to be very self-righteous and opinionated. Anyone who disagrees with them must be unintelligent, ignorant or brain-washed by the media. I have always read a lot and thought about politics and I cant see any simple answers to the current problems. I wondered if any others here have a similar feeling. I realize that each individual, in any field, has their own unique opinions. Im just looking for statistical probabilities, and possible causes.
Mon 17 Mar | realist | The term 'hard currency' is used to describe a currency that is widely accepted throughout the world, mostly highly industrialized countries. The U.S. Dollar and the British Pound are good examples of a hard currency. (from investopedia.com)
Mon 17 Mar | anon | Sorry, just being a PITA ;)
Mon 17 Mar | Stephen Jones | Dear Dennis, Here are three reputable URL's. You will find a table for ODA for all 22 countries in the OECD in the third link. As you can see the US gives the lowest proportion of foreign aid of the lot, though it's cash figure is the second highest because it has by far the largest population. ttp://www.usaid.gov/environment/foriegn_aid.html http://www.usaid.gov/fani/Chapter%206--%20Foreign%20Aid%20in%20the%20National%20Interest.pdf http://www.globalissues.org/TradeRelated/Debt/USAid.asp America does give a much larger proportion when private charitable giving is factored in, but other countries do not appear to keep statisitics on the figures for their countries (I suspect the figure in the UK for example is also fairly high), and it is hard to tell how much of that money is disinterestedly spent and how much simple religious proselytism. I totally fail to understand your question about how much money does Sri Lanka give to Israel. Are you seriously suggesting that a country with a per capita annual income of $860 per head should be donating money to a first world country which already receives $1000 a head in US aid alone? Dear Real PC, This discussion is not about US achievments; it is about US foreign policy. If I fail to give credit for the good it is because I simply don't see it. People in the UK and elsewhere who opposed Hitler in the 1930's didn't do it because they failed to appreciate German scientific acheivments or out of distaste for Beethoven's symphonies. I will tell you of one area where US foreign policy has my whole hearted support and that is in the pressure they are putting on the Tamil Tigers in Sri Lanka to disarm and come to a negotiated agreement with the government. They do have to go and spoil the good impression though by bullying the Sri Lankan government into threatening the Iraqui embassy whom they improbably accuse of being behind the anti-war demonstrations.
Mon 17 Mar | Stephen Jones | The first URL should be http://www.usaid.gov/environment/foriegn_aid.html and yes, it is true that the official US government agency can't spell 'foreign'!
Mon 17 Mar | Robin Debreuil | So the US will ask you which rebel group or gov't it is allowed to take out, and which to leave alone - lol! I'm sure you would be loved around the world for your wise choices. PS Its trade, not aid, that poorer nations need - even Che knew that. US leads it that category by miles, but others have respectable and growing contributions too. Just because it is mutually beneficial doesn't mean its wrong either (oh I can just imaging how that will set you off!). PPS I don't know why I'm curious, but how would you insure a country like Afganistan would be left alone in this world? It is the base of your argument, so no simplistic answers please...
Mon 17 Mar | The Real PC | Stephen, You are a perfect example of the craziness I have been observing. You compared our government to Hitler as if anyone can see there's no difference. [the official US government agency can't spell 'foreign'!] The mispelling was probably not the fault of the directors of the agency. More likely one of the typists. Are the typists in your country all perfect spellers? I see people like you focusing in on every little detail, anything they can rant about that isn't perfect about the US. A spelling error, the president's grades in elementary school, anything.
Mon 17 Mar | tapiwa | Real PC .... how does this compare to the rhetoric coming out of the Whitehouse, and Whitehall?? It is the leaders of the country who determine the policy and it is always a simple matter to drag the people along, whether it is a democracy, or a fascist dictatorship, or a parliament, or a communist dictatorship. Voice or no voice, the people can always be brought to the bidding of the leaders. That is easy. All you have to do is tell them they are being attacked, and denounce the peacemakers for lack of patriotism and exposing the country to danger. It works the same in any country. -- Reichsmarschall Hermann Goering For those of you whose history is a bit rusty, Goering was Hitler's Minister for the Interior (in charge of the Brown Shirts etc). A bit later, he became head of the Luftwaffe, the German Air Force.
Mon 17 Mar | | 'Its trade, not aid, that poorer nations need - even Che knew that. US leads it that category by miles' Like with Cuba you mean?
Mon 17 Mar | Robin Debreuil | You don't think Cuba would like/needs trade with the US? Countries pay a lot more attention when another country fiddles with access to market than with aid, rest assured. What works for Goering doesn't seem to work as well for Tony Blair : )
Mon 17 Mar | The Real PC | Disproving the 'we're all controlled by our governements' theory.
Mon 17 Mar | tapiwa | my point was that Hitler's Nazis and Bush's Patriots are all spewing the same rhetoric. whether you buy into it as an individual is another story altogether.
Mon 17 Mar | Robin Debreuil | Its probably a teensy bit easier to 'drag people along' once you've eliminated the opposition and locked down the press. Or maybe Goering was just a better orator, I don't know. In either case, it hasn't been that easy to drag the public along, even in the still jittery US, which was the original point no..?
Mon 17 Mar | rhetoric | 'The whole aim of practical politics is to keep the populace alarmed, and hence clamorous to be led to safety, by menacing it with an endless series of hobgoblins, all of them imaginary.' - H.L. Mencken Sounds like this fella had the right of it to me.
Mon 17 Mar | David Clayworth | So we should probably have a global police force. After all, when there is a murder in our town we don't want someone who thinks they have found the murderer just going down to their house and shooting them, even if they are the richest person in town. But we don't want to hand over total power to that police force - we want to make them accountable to the people. Hmm, democracy might work - lets set up an organisation where the countries, or elected representitives of them, get to vote on military action. Hey, that might work - we have checks and balences, and its completely democratic! Excellent. Oh wait, we've got it. It's called the United Nations.
Mon 17 Mar | The Real PC | [my point was that Hitler's Nazis and Bush's Patriots are all spewing the same rhetoric. ] There are lots of other similarities between the Nazis and the Bush administration. For example, the members all belong to the same primate species. An easy way to insult someone is to point out how they're similar to a Nazi. Well we're all similar to some Nazi in some way. These arguments are 100% emotional and 0% logical.
Mon 17 Mar | trollbooth | No flame war is complete without an association with Nazis. Come on, very shitty trolling going on here. Novice level at best.
Mon 17 Mar | Robin Debreuil | Completely democratic? I don't remember voting for any of those people, sorry. And even though they vote once in a while (1 vote per gov't, regardless of size or path to power, which umm, usually isn't by ballot if you do a quick head count), it isn't very democratic - 9 votes out of 15 for a quick example. And the vetos? They go to those who won the last war, losers and abstainers can't be trusted I guess. And the winners also get a permenant one third of security council votes. Sounds fair to me. If you can't imagine a threat to your own safety, perhaps you wouldn't consider the 250,000 in Kuwait 'hobgoblins, all of them imaginary'. To disagree with war is certainly a noble minded idea, but to dismiss all threats as imaginary is just silly...
Mon 17 Mar | trollbooth | Stephen Jones, you sir are my hero. A real troll. I am proud to serve in the same ranks as you. Your wordly advice and informative arguments are the best I have seen to date. So basically I am saying you are my new hero.
Mon 17 Mar | rhetoric | okay, how about 'imaginary or manufactured?' 250,000 what in Kuwait?
Mon 17 Mar | Robin Debreuil | ..250,000 soldiers. Is that a manufactured threat? People attack each other all the time, it is awful. Some people think the best option is to 'enforce' peace, others prefer to not stir up the pot and hope it doesn't get worse. No one has put forward a plan that would turn these things into empty threats though, regardless of the side you picked. Including me of course. If there were such a thing as a sure plan to get there though, you would see the world come together pretty quickly on it. Very few people on either side of the issue are wishing for innocent people to die - not even 'guilty' ones really. Everyone sees peace and stability is a good thing all around. How do we get there though. Is it more dangerous to wish war away than to hold it down? Someone even suggested that world peace will only happen once every country has nukes. Maybe. But we better be sure...
Mon 17 Mar | GML | The UN as an international police force? That's funny. Imagine your local police force acting as the UN: armed assailants have taken people in a mall as hostages. The police pass a resolution saying 'We'd like you to let those people go'. When this doesn't happen, they pass another one saying 'Please let those people go'. Eventually, they pass the 17th resolution saying 'let them go or else'. When the hostages still aren't freed, they'll keep on passing resolutions until either (a) someone leads a bunch of armed men in to take out the assailants, or (b) the hostages die of old age.
Mon 17 Mar | Stephen Jones | Dear Trollbooth, Until Joel allows grahphics my advice will always be 'wordly' , even if those words are on occasion short and not suited to polite society. Dear Real PC, Nice to see you're being true to form and haven't given up the personal insults you always crown your arguments with. Neither myslelf nor the other gentlemen suggested George Bush was Hitler, though to someone who vaunts illiteracy in three languages that is not apposite. I can fully understand your irritation however. You go to the trouble of introducing politics to a forum where it has normally been absent and then have to put up with people who think differently from you. The brazen effrontery of it all.
Mon 17 Mar | Stephen Jones | Dear GML, One proviso; if the hostage takers were Israelis the USA would veto every one of the seventeen resolutions anyway.
Mon 17 Mar | Nat Ersoz | Here's my little prediction for you all. When it comes time to balance the books, the Bush administration will be doing it with Iraqi oil money. You've heard the coded language 'trust fund'? Well, this time we're the executor of the trust, and lacking the responsibility of a democracy in Iraq, we'll help you manage your money.
Mon 17 Mar | Stephen Jones | Dear Nat, Spot on. What has amamzed me is the American government trying to bribe India to support the war by offering it $12.5 billion of reconstruction contracts in Iraq. The money of course will come from Iraqui oil money. That is to say the Americans are saying help us reduce Iraq to rubble and we'll enable you to make a killing on the rebuilding work which the Iraquis will have to pay through the nose for. And they call this 'liberating' Iraq. The Indians, give them their due, refused to have anything to do with it.
Mon 17 Mar | Robin Debreuil | The math doesn't add up though, even at high oil prices. Iraq will only produce around $15 billion in oil money in year one, a bit more in year two, if all goes well. As a nod to the original point of this thread, maybe we should keep our programmer hats on and do the math.
Mon 17 Mar | trollbooth | Stephen, I know you're a green horn still in college. Yes you have an opinion. I know because you never pass up a chance to spout your pundit bullshit from your obviously upper class mouth. I say you are a child. Tell me I am wrong (Like I need to say that, lol).
Mon 17 Mar | The Real PC | Stephen, That's fine if people don't agree with my opinion (especially siince I don't have an opinion re war with Iraq). I just have this thing about logic.
Mon 17 Mar | rhetoric | Hi Robin, By manufactured, above, I mean that 250,000 soliders did not all of a sudden get p*ssed at 250,000 soldiers on the other side - the conflict was manufactured. I'm sure those folks over there on both sides would all much rather be someplace else, so it stands to reason that something convinced them to be there. From what I understand of the situation it stems mostly from leaders on both sides stirring up fears in the people, making these things a self fulfilling prophecy. Here's a simplified illustration: Country A and country B are both at peace. The citizens are happily pursuing their lives in a dreamy bliss. Leader of A says 'country B could be gathering an army, we better do something...' People hear this from their leader and decide that he's right, so A starts to build a 'defense force.' Now over in B, they see these things going on and decide they need a force of their own to counter A. What we have here is the roots of an arms race of sorts. Sooner or later A and B are going to clash. And the whole thing was manufactured from an imaginary threat that Leader A used to menace his people. Why? Who knows, but I'll bet there was a nice pile of cash somewhere in the mix. The point is that two countries full of people don't magically focus on each other's destruction. Something stirs them into the snowball effect. Who's in a position with enough leverage to get the ball rolling? See what I mean?
Mon 17 Mar | The Real PC | It's hard to imagine leaders going to all that trouble just for money. Let's say pres. Bush is starting a war with Iraq in order to make a profit for himself and his friends. He's risking his popularity in the US and especially in the world for money, even though he's already rich. He would rather have more money than go into the history books as a decent president. No, that doesn't sound right somehow. That idea also disregards the fact that most people have a conscience in addition to an ego. It's hard to imagine the president thinking to himself 'What fun, I'm getting all these innocent people killed and getting paid for it!' I think you are overly cynical, and in a weird sense naiive, if you seriously believe that.
Mon 17 Mar | Nat Ersoz | I was not making a value judgment, just an observation. I have mixed thoughts on the entire war. I have one primary concern: minimization of US casualties. Second concern: that we don't tear ourselves apart similar to Vietnam. Other than that, UN, international law, France's opine du jour - I don't give a rat's ass.
Mon 17 Mar | rhetoric | PC, I don't claim to know why any of these kinds of things happen. I also didn't claim that the war was for money. It does seem possible, though, that some of the small things that get this kinda of crap started might involve a little cash, no? A little 'exaggeration' to generate some business for a few defense contractor buddies that help me get elected? You don't think that our noble officials would sully their hands on such things? The main point, though, isn't about the money. It's about how we get into these messes. Do you believe the official version of things? All of these people just decided one day to hate each other, sight unseen? If so, then I'm not the only one that's naive. If not, then what's your take?
Mon 17 Mar | The Real PC | Money is a part of everything, and so is ego. You can't find a situation where they aren't involved, and that includes all of us. On the other hand, our society has certain ideals which have evolved over centuries, and especially in recent decades. These ideals include compassion and humanitarianism, and they are also a factor in most of our leaders' decisions, and in most of our personal decisions. I think a person like Saddam Hussein really belongs to an earlier age when ruthless conquerors were admired. Now, and especially since Hitler, we consider people like him sociopathic criminals. Times change. Do I believe the official version? No, of course not. It's what they want us to think they think, not what they really think. On the other hand, I have a gut feeling that Bush is idealistic (mixed of course with greed and ego just like the rest of us). I do not think he's trying to ruin this country and I think he cares about his reputation more than making a few more millions. That is not to say I agree with the policy of interfering with other countries. On the other hand, why does the UN even bother making resolutions if they're meaningless? None of us can guess what would happen if Iraq were left alone, or what will happen if it isn't.
Tue 18 Mar | Robin Debreuil | I don't disagree that threats are manufactured to mask aggression (you can spot them on all sides, look for things like comparisons to Nazis). Its just once one side is doing this, what is the other side supposed to do? Now they know they face a real threat, but they haven't been threatened specifically. Is it more honest to say, 'those people are saying bad things about us', or 'those people are plotting to take us out'? If you choose the second one, which is actually true, you become a 'purveyor of lies' as well. Its like how the death penalty = murder, or arrest = kidnapping. Hemingway once said 'wars are caused by undefended wealth'. I think its more like that. If you build it, and don't defend it, they will come. Not saying that's fair or anything, just its the way it seems to work. At one point you just have to come up with a reasonable system of laws and live with the idea that those who break them forfeit a lot of rights. The problem with the UN is the laws - anyone who takes over a country by force, suspends elections, disposes of the opposition gets a voice. If that is the law, then I'm a rebel. It is also dangerous for the US to take that role without broad support, but that is hard to get with just a few dumb hawks, a lousy diplomat and one Colin Powell. I honestly think the logic here is from the sept 12th meeting. The question of the day was 'why do people drive planes into buildings, really?'. The easy answers came up short. Poverty? They were all rich. Education? They were mostly smart and mostly had degrees. America screwed them over? Actually it helped them against Russia, and Serbia for that matter (yes they were there). Political frustration? Bing! There are a lot of things they feel strongly about, but they have no hope of changing things politically in their countries. Very frustrating. If the abortion issue didn't have a political outlet you might see bombs here too. So the only way out is to give them a political voice, and Iraq is a strategically (Shiite, Sunni), politically (no one really likes Saddam), and militarily a logical target. If democracy comes to Iraq, you will see huge pressure on Saudi Arabia and Iran to become more democratic, Syria will become isolated etc. If they don't put a democratic system in place, then I have no idea why they are there - not for money, not for oil, not to stop the Muslim world from disliking them, not to rid the world of the last of its nasty weapons, not to cement NATO alliances... If that whole area becomes democratic, it could really do well, and the US would be more secure for it. I know the UN is against 'nation building', but it worked in Europe, and it worked in east Asia. OPeople don't like living under a dictator's thumb, surprisingly. Getting to that point is hard though, usually requires at least some form of civil strife. Police hate domestic disputes, they are dangerous and the police always look like the bad guy. But walking away and then inviting the survivor to the table isn't the moral high road either, but its the norm.
Tue 18 Mar | Stephen Jones | Dear Robin, Any democratic governement elected in the Middle East would immediately demand the end of all military ties with the United States, and this would continue for as long as the United States supported Israel. If you seriously think the USA wants to replace its client governments in the region with others that represent the true will of the people you will believe anything. The US only supports democracy as long as it can guarantee the results of the election beforehand. Otherwise friendly dictators are a much safer pair of hands.
Tue 18 Mar | Stephen Jones | ----'I have one primary concern: minimization of US casualties. '---- Strange Nat. My primary concern is maximization of US and UK casualties so its leaders will think twice before going on these kind of jaunts again. Nice to know we agree on the analysis though.
Tue 18 Mar | Robin Debreuil | Hmm, Turkey isn't in the middle east? I don't know, you say things, but then they just don't add up. I'm trying to think of one instance (I'm sure there's one) where a non democratic country (US satellite even) had elections, and then cut ties with the US. Not Taiwan, not Korea, not the East Bloc or Russia, not Argentina, not even Guatemala... Ok, Phillipines sort of, they voted to close Subic Bay, and it closed. And the point is? Don't confuse rhetoric with policy. Sometimes gov'ts are willing to screw up the big picture over something remote and far away (like France and the US have), but it tends to be shortlived and easily repaired if people are given a chance to change their minds. As far as me beleiving anything, I don't beleive you are being honest about many things you know, just passionate. I don't see that alone as admirable, though probably you do. Maybe we can just disagree on that and I'll go back to work.
Tue 18 Mar | John Ridout | If the USA was really interested in international law and order they would support the international court.
Tue 18 Mar | a stephan supporter | I am not sure that a democratic country will give Al Quwhatever a voice. Muslim fundamentalists are not generally democratic.
Tue 18 Mar | Stephen Jones | Dear Robin et al, Firstly it is not a question of Muslim findamentalists versus supporters of the US. There AREN'T ANY supporters of the US in the Middle East. And as long as the US continues to back continued Israeli expansion there won't be. Most of my Saudi students are pleasant, polite, with a definite desire to learn English, with parents that work for Aramco and often were educated by Americans or British. They wear western dress and will talk to you about pop music and films. Not one of them supports Blair or Bush; in fact even among the hunderd or so Americans and British I know here only one does. The Turkish government decided to support the American invasion because it reckoned they were going to invade anyway, so they might as well get some compensation for the lost trade and be able to send in their army to control the Iraqui Kurds. Despite being offered $21 billion they couldn't muster a majority even among theiir own supporters in Parliament. And there is a massive 95-98% of the people opposed to a war. The Kuwaitis, who you would think would be the first to be worried about Saddam since they are about the only country any hypothetical weapons of mass destruction might reach, are so in favour that the British government has ordered all its nationals to leave for fear of reprisals from the populace. It is true that most people are not instinctively in favour of Al-Quaeda, and their tactics horrify most Muslims, but on the principle of my enemy's enemy is my friend he has attained mythical proportions even among people he would normally be engaged in a fight to the death with. The truth is that even outside the Middle East there are only four governments, the Israeli, British, Australian and Spanish (the Italians seem to have slipped out of the picture) who support the US on this. There is also a rag-tag collection of minor governments, such as Bulgaria, Romania, Estonia, Latvia and one or two others not even the geographers have heard of who support the US because they've been pressurized into doing so and hope to get brownie points; the rest of the world either knows nothing, is too poor to have any time left to worry about it, or is violently against, including the population of Britain and Spain.
Tue 18 Mar | Stephen Jones | ---'I'm trying to think of one instance (I'm sure there's one) where a non democratic country (US satellite even) had elections, and then cut ties with the US'------ How about Iran for a start?
Tue 18 Mar | Tj | What is there to say about US politics? We don't hire presidents because of morality. We try to optimize for good economies. Unemployment up? Boom, he'll be out. Allies running over Americans with bulldozers? Well... we shouldn't interfere with other countries. Free speech is an illusion. Really, if you say something 'unpatriotic' which angers your neighbors and someone attacks your house, what if the police look the other way? The state doesn't need to do a thing. If your son is thrown in jail for nonviolent civil disobedience, it won't be the government brutalizing him. The other prisoners will. Selectively enforcing the law is enough to take away free speech, you don't need a dictator with a gun.
Tue 18 Mar | Go Linux Go! | The Tin Hat Brigade is alive and well.
Tue 18 Mar | apw | Global gov't? Sounds like Armageddon to me :)
Tue 18 Mar | The Real PC | The main reason Muslims hate the US is that we support Israel. The main reason the US supports Israel is to make up for centuries of European anti-semitism, culminating in Hitler. The Muslims have been opposed to the Jews in Israel for centuries. The Israelis have been guilty of aggression, but their primary motive is survival and self-defense, not expansion. The US, like any nation, is always partly motivated by self-interest. But our support of Israel doesn't seem to have much to do with self-interest or greed. How do we profit by supporting Israel? People who hate the US overlook the fact that our current dilemma resulted more from compassion, idealism and loyalty to Israel than from self-interest. The US is just as imperfect as any human society or organization. But people like Stephen Jones (and there are many) are too full of rage to look at things objectively. A. The US is primarily motivated by greed and imperialism, and B. the Muslims hate us primarily because we support Israel. How do you make the logical connection between A and B?
Tue 18 Mar | Jim | Stephen, when you said 'My primary concern is maximization of US and UK casualties so its leaders will think twice before going on these kind of jaunts again.', i was surprised to see your hatred of America runs so deep. What has happened to you? Aren't you the same Stephen Jones I knew in Texas?
Tue 18 Mar | Mark Hoffman | Stephen, Your comment of 'My primary concern is maximization of US and UK casualties so its leaders will think twice before going on these kind of jaunts again.' pretty much eliminates you from the domain of rational, intelligent discussion. The mere fact that you seem to wish harm on troops who are obeying the orders of a democratically elected government is sickening. Don't like Bush or Blair? Fine. But to suggest that you hope that some 19 year old kid gets his head blown off so you can prove some point is just nuts.
Tue 18 Mar | Mark Hoffman | I find the comparisons of Bush to Hitler show just how ignorant and naive many people are. We can argue all day long about whether the US should invade or not. We can argue whether or not the US should overthrow a dictatorship just because it's a brutal regime. But if you suggest that Bush is like Hitler then you are clearly demonstrating how little you know about either one. Why is there no such anger towards Hussein for murdering thousands of his own people? Where is the anger for the Kurds he gassed? The Iranians he gassed? The women he had gang-raped? The children of political opponents he murdered in front of their parents? Where is the outrage for the people who had their tongues cut from the mouths because they criticized the government? What about the countless Kuwaitis who were murdered by his police during the Gulf War? Where are the comparisons to Hitler there? Once again, we can debate whether or not the US should attack Iraq, but to compare Bush and Blair to Hitler and then turn around and ignore the atrocities of Hussein is the epitome of hypocrisy.
Tue 18 Mar | Tj | Tin hat? I've met black men who've experienced rape in prison, and personally know activists who are afraid of protesting openly, so they quietly work on ecovillages and alternate economies. If you don't know that world, well, you're luckier than I am. That actually doesn't answer the matter of Bush vs. Saddam. I have no opinion there, except that Bush has conflicts of interest, and is unconvincing. That doesn't mean he's wrong (or right). We'll see soon enough.
Tue 18 Mar | tapiwa | 'National Socialism as a matter of principle, must lay claim to the right to force its principles on the whole German nation without consideration of previous federated state boundaries, and to educate in its ideas and conceptions. Just as the churches do not feel bound and limited by political boundaries, no more does the National Socialist idea feel limited by the individual state territories of our fatherland. The National Socialist doctrine is not the servant of individual federated states, but shall some day become the master of the German nation. It must determine and reorder the life of a people, and must, therefore, imperiously claim the right to pass over [state] boundaries ....' 'Democracy as a matter of principle, must lay claim to the right to force its principles on the whole Human race without consideration of previous international boundaries, and to educate in its ideas and conceptions. Just as the churches do not feel bound and limited by political boundaries, no more does the Democratic idea feel limited by the individual state territories of our planet. The Democratic doctrine is not the servant of individual states, but shall some day become the master of the Human race. It must determine and reorder the life of a people, and must, therefore, imperiously claim the right to pass over [international] boundaries .... ' The first is by Adolf Hitler. In the second, I have replaced National Socialism with Democracy etc. I would say that it kinda sums up the rhetoric coming out of the west on EXPORTING Democracy. How do we know we are right?
Tue 18 Mar | Stephen Jones | Dear Mark, The fact that you are quite prepared to countenance thousands of nineteen year old Iraquis having their heads blown off because they happen to be a different nationality to you but are horrified when someone wishes it one your side just even though they are the invaders shows Dr. Johnson was right 'Patriotism is the last refuge of a scoundrel'.
Tue 18 Mar | tapiwa | Mark, more for you ... 'The leader of genius must have the ability to make different opponents appear as if they belonged to one category. -- Adolf Hitler ' Anyone figure out how the war against terrorism became the fight against weapons of mass destruction?? The two are totally different. The one uses conventional weapons in conventional warfare... the other hits you and runs. Before you answer, why did Britain, now 'fighting' against terrorism, not bomb the Republic of Ireland, which until a couple of year ago, was officially at war with Britain over Northern Ireland, and supported the IRA, harbouring them, and allowing them to be funded by Irish folk in the USA.
Tue 18 Mar | Nat Ersoz | tapiwa, Regardless of how you fill in the blank (Nazi, Capitalism, Democracy) that is basically the premise of war, period: To have peaceful end which conforms to your 'way' instead of the other guy's way. The purpose of war is not to prmote war. Its to promote a peaceful outcome which favors your view. Such has it been, and it will always be. I do not have a problem using all means to 'persuade' others to conform to US politcal will. If you don't manipualte them, they will manipulate you. Need evidence of this? What do you think the whole German/France/Russia thing is about? Its about obtaining and maintaining dominance. That was their ploy to obtain a more dominant position over, or obtain parity with, the US. And for now, it sputtered - though nothing is certain. I take issue with Bush, because I think he could have manipulated the situation successfully and fully to the US's advantage through diplomacy and without directly risking of American lives. Also, the world will be a more risky place (risking trade w/Europe for example) by chosing war. Now that he has commited Americans to the conflict, so be it. My differences are now moot. Imperialism? of course. Exporting a muslim state world view is no different. The only difference is that we are more likely to succeed.
Tue 18 Mar | Stephen Jones | ----'The main reason the US supports Israel is to make up for centuries of European anti-semitism, culminating in Hitler.'---- When the American secretary of State tried to explain to King Abdul Aziz of Saudi American support for the creation of the state of Israel after the Second World War the Saudi King replied 'Sir, in my society we reward our friends and punish our enemies. Why therefore are you dispossessing your friends and allies, the Arabs, instead of taking part of Germany and creatiing the State of Israel there'. Incidentally it is the latest sport among the American right to attack Europe as anti-semitic, but the largest pro-Nazi rally outside Germany was held in Madison Square Gardens, and pro-German sentiment in the country prevented Roosevelt from declaring war on Germany until Hitler foolishly declared war on the States. ----'The Muslims have been opposed to the Jews in Israel for centuries'----- In fact there have not been Jews in Israel for centuries.The Romans expelled them in 79AD and they didn't really return until the twentieth century. In 1897 the World Zionist Council sent a delegation to Palestine to explore the possiibility of setting up a Jewish state there. They reported back 'The bride is beautiful but she is already taken'. The fact that Israel was conceived of from the first as being a colonial enterprise by European Jews can be judged from the fact that for many years the Biritish government was seriously considering setting up the State of Israel in Uganda, presumably because the Ugandans' complaints about being evicted from part of their land would attract less attention than the Palestinians. The Jews lived peacefully throughout the Ottoman Empire for centuries, even after they were expelled from Europe. There were certainly humiliations on occasion but there can be no comparison with the pogroms of medieval western europe or 19th century eastern europe. ---' How do we profit by supporting Israel?'--- This has been one of the great mysteries of the last thirty years, since US Middle Eastern policy palpably does not serve the interests of the United States as a nation nor that of the majority of US citizens. However if you get rid of the illusion that your rulers are interested in anybody but themselves it becomes fairly clear; campaign contrbutions, swing votes (and most importantly stopping those contributions and votes going to your political opponents). The increase in the influence of the Christian Zionists who believe that the Second Coming will happen when the Jews regain the promised land (from the Nile to the Euphrates?) also must be mentioned. Do remember that the plans for regime change in Iraq were drawn up by Richard Perle in a policy document well before Bush became President; in fact the policy document wasn't written for Bush at all but for Benjamin Netanyhu. Perle at present is serving on the board of a company which is vying for multi-billion dollar contracts for rebuliding Iraq. Obviously the profits won't be helped much if there is no war. Remember these are the same type of guys that bought you Enron and World Com. You are also making the mistake of presuming that there is one single motive behind the invasion. I feel there is more likely to be a mixture of motives of which a desire to be seen to be doing something, a wish to divert public attention from previous embarrassments, the machinations of the pro-Israeli lobby and the Christian Right, post September 11th hysteria, and the opportunity to make a killing by taking over Iraq's oil all had a part. The guff about weapons of mass destruction and, when that proved to be a damp fizz, about freeing the Kurds (an on-and-off reason since when they thought the Turks were coming in they were quite prepared to countenance a Turkish occupation of Iraqui Kurdistan precisely to ensure that the Kurds weren't freed) and lately about bringing democracy to Iraq by replacing an Iraqui military dictarorship with American military administration is just PR.
Tue 18 Mar | Stephen Jones | Dear Mark, If you read the posts carefully you will find that nobody is saying Bush is like Hitler. As for why we don't go on about Saddam's atrocities it is because I don't believe there is anybody on this forum who disputes them. However when he was committing many of them Dick Cheney was flying to Baghdad to offer the US's support, and Jack Straw was refusing to support a motion in Westminster censuring the gassing you refer to. (By the way the first people to gas the Kurds in Iraq where the British). The main reason though is that opponents of the war do not believe you liberate people by bombing and shooting large numbers of them. It merely sieems a variant on the 'better dead than red' mantra that so many Americans have professed - normally for other people they didn't bother to consutl on the matter.
Tue 18 Mar | Mark Hoffman | A few points... Tapiwa, Your analogy to National Socaliam and Democracy is flawed for a number of reasons. Democracy, at it's core, symbolizes the human beings should be free and should have a voice in their leadership. It's more than just the latest political ideal. It goes to the core of being a human being and desiring to be free. National Socialism was just another political manifesto brewed up by a collection of crackpots. Or did you honestly mean to put the ideals of the Nazi's on the same footing as democracy? Stephen, how did you arrive at the conclusion that: 1. I wanted to see Iraqis die? 2. That if they are to do, that it's just because they are a different nationality? I never said that I wished anyone to die, and I certainly didn't say that I wanted people of other nationalities to die. If you're an Iraqi soldier and you want to kill as many Americans or Brits as possible, well hey, that's the normal course of war. I'm going to go out on a limb here and assume that you are not an Iraqi soldier defending his country. Therefore, your desire to see the 'maximimaztion of US and UK casualties' is clearly politically motivated, and not motivated by a defense of your country. Oh, and thank you for clearly defining 'the real reasons' for the war in your most recent post. Whew! Close one! We almost went to war without knowing it's really the Jewish lobby, those pesky right-wing Christian fundamentalist and a few of Kenneth Lay's friends that are really the reason. Does CNN know this?
Tue 18 Mar | Stephen Jones | Dear Jim, I've never been to Texas., or to the United States, though I'm sure both places have as many charming people (and vile) as elsewhere. My 'hatred of the United States' runs as deep as the hatred of Iraq that the other posters are showing. They seem to think there is nothing wrong with killing tens or hundreds of thousands of young Iraqui men who do not offer the least threat to the United States, nor even to their immediate neighbours. I would much prefer if all the British and US and Australian troops went home to Texas, Tyneside or Melbourne rather than suffered any casualities, but that no longer appears to be an option. Why is it that every time the US takes it into its head to bomb or invade some other country the young men of that country are 'collateral damage' but the American troops are people with lives and families. If I said that half a million dead American children under five was (note 'was' not 'would be') a cheap price to pay for regime change in Washington I would rightly be considered a dangerous lunatic, yet when Madeleine Albright said the same thing about Iraq there was scarcely a whisper of protest. Of coiurse, if I've got it wrong, and what Bush really wishes to do in Iraq is challenge the Iraquis to a video arcade shootout, then please change 'dead US and UK troops' to 'lost games of Quake'.
Tue 18 Mar | I'm just stupid. | Yeah, those American and British bastards! I mean, why are they even in the Gulf anyway? It's not like Saddam has committed atrocities against his own people or invaded his neighbors or anything! Yup, Saddam hasn't done anything to deserve the worlds attention. He has just been sitting in Baghdad trying to help his own people and these damn Americans and British just came over there for no good reason and start giving him crap. Saddam hasn't done anything wrong. Why won't people leave him alone?
Tue 18 Mar | Stephen Jones | Dear Mark, How do you think you are going to win the war against Iraq without killing any Iraquis? If you want the war with Iraq then you are saying you want to kill Iraqiis. Or do you think you just play them gospel music and they all throw away theiir guns and boogie with you? And seeing that Bush seems to consider invading another cournty is an annual event and that Blair likes to turn up for the ride like some impoverished distant relative freeloading at a country house bash, then I would prefer to see enough British and American troops killed to stop them going off and killing a lot of other people next year and so on. If you disagree with my reasons for the war, then give me some other ones (and please don't give me weapons of mass destruction that if they could be put on mssile and those missiles could be carried by camel to Niagara Fals or EL Paso could provide a threat to the US equivalent to that of a weeks consumption of big Macs, an Iraqui once caught a subway train with Osama bin Laden's cleaner's mother, Iraquis are under an oppressive rule and are just begging us to bomb them back into the Stone age, or todays daily special of 'democracy wrapped up in direct US military rule for the next few years and no way Shiites are Kurds can have their own independence like the Yanks do'). Incidentally, if you believe CNN is a reliable source of information you do have a problem. Someone once summed up Tony Blair's credibility gap by saying that if Blair said it was raining she would look out of the window to make sure; if CNN tells me its raining I immediately ring up everybody to arrange a beach party.
Tue 18 Mar | Tj | Mark, you're very uneducated on this topic. Democracy is anti-American. James Madison in the Federalist Papers explained that democracies are disasters. A polisci 101 teacher would rap your knuckles. http://www.trimonline.org/website/deceived.htm The hope that massive casualties will avert war, has its roots in the debate against using technology to fight wars. I don't agree with it, but the theory is that losing your own populace deters countries from war. (Bullshit, says I.) The Jewish swing factor is well-documented by... intelligent, respected Jewish people. The theory is that unlike say abortion, it's an effective way to swing a vote. http://www.jcpa.org/jl/vp446.htm This is my last post on this topic. It's just on my mind too much, and I keep reading debates everywhere on this. The US is sliding to Empire, and I haven't studied enough history to know what this means.
Tue 18 Mar | Stephen Jones | Dear 'I'm just stupid', You are. Do you really think that the American and British troops are just going to get rid of Saddam and family and not touch any of his long-suffering people. And that when they go away the Iraqui's problems will go with them. The present policy is to get rid of Saddam and his family and pass power on to the second echelons of the Baa'thist party, which is rather like liberating Germany by getting rid of Hitler and Goebbels and forming a new government from the ranks of the Waffen SS and the Hitler youth. American troops have been going in and invading countries to get rid of evil rulers (those that are no longer in favour of course) for ages. They went into Panama to get rid of Noriega, and bombarded and completely destroyed the homes of 50,000 of the poorest people in Panama City, who to the best of my knowledge still have received no compensation. Then they put Arnulfo in power who became a byword for greed and corruption even by Central European standards. In Afghanistan they decided they had to get rid of the Russians, and came to an agreement with the Saudis that the Saudis would fund the freedom fighters (including later Bin Laden and his troops) and the CIA would train them. When they managed to take Kabul in 1992 they fell out among themselves AFTER A WEEK and then varying factions, including the US's ciurrent ally Hektmayer, proceeded to completely destroy the city in four years of war. The Americans did not see this as what they wanted so they helped their chief ally in the region, the Pakistani military inteligence, train a large body of displaced refugees, the Taliban who then took over the country with surprisisng ease. The Taliban didn't prove to be the solution the US wanted either so they went in and put the old warlords back in power, and put a puppet governementi in Kabul that only has the authority that American dollars give it. The resiult is that after twenty-four years of interverniton and permanent war even in the best place, Kabul, Afhgnasn have less freedom and more misery than they did under the Russian backed government before it started. In Somalia they went in with the best of intentions. However they ended up deciding to free part of Mogadishu from another 'evil leader' in this case Aideed, whiom they didn't succeed in catching (mainly because the Marine in charge of radio communications was Aideed's own son) but still managed to kill scores of Somalis whom they had come to protect. There is nothing more dangerous than good intentions
Tue 18 Mar | Mark Hoffman | Stephen, If you aren't going to read what I said, and if you keep on putting words in my mouth, then this isn't going to be any more fun. I haven't actually stated here that I was in favor of the war. You are assuming that just because I took you to task for a comment that I must be in favor of the war. And you know what they say about assuming.. My comments to you have been directed at the fact you while you are not defending your country, nor are you under orders to enter into combat but yet you are hoping that people are harmed for the sheer sake of achieving some political ends. You are positioning yourself to achieve some sort of moral victory if the maximum amount of death is inflicted on people. The governments involved are positioning themselves so that the fewer casualties on both sides will bring victory sooner. I'm not going to argue the merits of this war with you. It's rather pointless. My comments have not been in defense of the war, but rather pointing out that hoping and wishing for the maximum number of deaths, blood and suffering is hardly the hallmark of a peace loving person. I think CNN is reliable, but not very complete in it's coverage. But have no fear, I come to Joel on Software to get the 'real scoop' of what's going on in the world. Just today, I learned all about the conspiracy theories that CNN doesn't have the guts to report on.
Tue 18 Mar | Mark Hoffman | Tj, So if I don't agree with you, that makes me uneducated? Interesting..Some might say it makes you intolerant of other opinions, but I digress.... Democracies are not disasters. Now, lets not nitpick over the term democracy. Spare me the 'But America is a Republic' speech. I know. If you believe that a tyrannical form of government is preferable to a democratically elected government, then hey...more power to ya. There is little doubt that any major group of people will wield some degree of political power. Hello lobbyist. But to say that the reason for the war is to appease Israel is just nuts. Jews make a convenient scapegoat for virtually anything that happens in this country. This war is no different.
Tue 18 Mar | Mark Hoffman | Stephen, Can you provide a link that shows that a US Marine involved in the attempt to capture Aideed was one of his sons? I've never heard that. In fact, I wasn't aware that Marines were involved. I was under the impression it was a US Army operation, not Marines. Anyway, I did a quick search and couldn't find anything on that. I'd like to see some info on that if you can provide it. Thanks, Mark
Tue 18 Mar | Stephen Jones | -----' think CNN is reliable, but not very complete in it's coverage.'---- Well yes, if only covering facts that support its own points of view is incomplete coverage. Iraqui television has the same fault (I get both of them and they're equally irritating - in fact if instead of blanket propaganda on CNN and Fox News the Bush administation had continously broadcast Iraqui television on a widescreen oppoiste the UN building it would probably have got its resolution weeks ago). I have no desire to see people die for the fun of it. But with the Bush Administation talking about invading Iran next year and North Korea the year after and who knows where the year after that, it seems that there would be less loss of life if there were some siginificant allied casualties this time instead of the real-life video arcade shootout we were presented with in the last Gulf War (which incidentally was a war I believe both necessary and justified). Anyway it is midnight in Saudi now, and I have to be in work at seven. Wouldn't want to miss the missiles flying.
Tue 18 Mar | Tj | (Sorry, I meant to say your terminology is very uneducated, but made a stupid slip. Bad mood. My polisci prof, on the first day, made it very clear that in the old days, people knew the diff between democracy and republic. Democracies suffer from majority rule and lead to mobocracy. This is not just nitpicking, your analysis leads straight to mobocracy. Republics are much more inefficient. The wheels are hard to turn.)
Tue 18 Mar | Tj | (In fact, I'm also too uneducated to have a clear position, and I just mailed Stephen for any useful sources/books he might know. Perhaps he can share them with us? I'm already starting on Rome.)
Tue 18 Mar | The Real PC | [There is nothing more dangerous than good intentions] Good intentions plus ignorance have caused a lot of damage. But I think you must agree that evil resulting from egomania, plus ignorance, wins the contest for the most dangerous combination. The US sees itself as the great superhero fighting evil, but the world sees us as a threat because we have no competition and there's nothing to balance our power. The world is rushing in to fill the vacuum left by the Soviet Union.
Wed 19 Mar | Just me (Sir to you) | 'Democracy, at it's core, symbolizes the human beings should be free and should have a voice in their leadership. It's more than just the latest political ideal. It goes to the core of being a human being and desiring to be free. ' Democracy has no more or less 'freedom' build in than any other system. All it is is rule that says a popularity contest decides who gets to put the flag on the henhouse. Outside of Utopia this means those that appeal most to the lowest common insticts of the masses with 'bread and games' get to do the sorded deals. Spare me the utopian freedom speech. 'Democracy' is just as flawed as 'Socialism' was in a real world scenario. Sad thing is, so is everything else, so it's not that big a deal. It is not worse, just don't pretend its better.
Wed 19 Mar | The Real PC | Just Me, In the US the government does not decide our college major. I think that's nice, don't you? We can start a business, any kind as long as it's legal, and live anywhere we can afford. We can protest if we want and can write or say whatever we think. You're crazy of you think that isn't a better system. I have never in my entire life had my freedom restricted unfairly by my government. The only thing that sucks is the graduated income tax -- but that's a socialist idea intended to make us all equal.
Wed 19 Mar | The Real PC | I better add that I'm not against socialism and I think we need social programs and that capitalism should not be unrestricted. There has to be a balance.
Wed 19 Mar | tapiwa | Real PC Who decides the balance?? You have one opinion. I have another. Democracy as we know it imposes the will of the majority on the rest. What do I want? Complete freedom to do as I please, as long as it does not hurt anyone else. Yes, that means the right to determine solely on my criteria who to employ. Or who to go out drinking with. Whether to carry a gun, or whether to take drugs, or sell drugs. If I am competent enough to vote on a government for the people, then I think I am competent enough to decide my own life. 'A democracy cannot exist as a permanent form of government. It can only exist until the voters discover that they can vote themselves money from the Public Treasury. From that moment on, the majority always votes for the candidate promising the most benefits from the Public Treasury with the result that a democracy always collapses over loose fiscal policy always followed by dictatorship.' -- Alexander Fraser Tyler in The Decline and Fall of the Athenian Republic 'Democracy, n.: A government of the masses. Authority derived through mass meeting or any other form of direct expression. Results in mobocracy. Attitude toward property is communistic... negating property rights. Attitude toward law is that the will of the majority shall regulate, whether it is based upon deliberation or governed by passion, prejudice, and impulse, without restraint or regard to consequences. Result is demagogism, license, agitation, discontent, anarchy.' -- U. S. Army Training Manual No. 2000-25 (1928-1932), since withdrawn
Wed 19 Mar | tapiwa | My point really, is that Lenin et cie were convinced enough in their ideals. So was Hitler. So it seems is Bush. Problems arose when they felt the need to impose these said ideals on the rest of the world. That democracy is better than socialism, or islam is not the point. All I say is let the people of xyz country determine the future of that country.
Wed 19 Mar | trollbooth | Mark, why are you arguing with children? These kids are still in college for god's sake. They are still trying to get over the fact that the world really isn't fair. All I see is over educated rich kid pundit bullshit. Having never been to the US and calling us 'vile'. Now that is some bullshit!
Wed 19 Mar | trollbooth | And another thing - this is not new! The US has had Presidents that have had the same mind set, where the might of the US was used to change the world. Reagan and his hawks were probably the most influential on the current administration.
Wed 19 Mar | Guess Who | PC, from your reference to socialism, I'm assuming by 'social programs' above, you mean government managed programs. If so, then my question is, why can't the private sector see to this need using private charities? Look at the logic of your approach. You claim we need these programs, I assume to help those in 'need.' So, living in a democracy, as you observe in your earlier post, such a program would have to be voted into place by a majority of voters. This means a majority of people are saying that they are willing to spend money to see these needs met. In that case, why wouldn't they just donate directly to a charity dedicated to the cause? This approach is much more efficient in practice, isn't it? Either that or you think that people will be stingy and not do it of their own free will, so government compulsion is required. In this case, how could a majority ever develop so that the program could be voted into place? This is obviously not what happens in real life, so tell me how it really works. Let's see which basic assumption is flawed and then let's decide whether this really is a good thing or not.
Wed 19 Mar | Stephen Jones | Dear Mark, I think the Aideed story was in 'Time' or 'Newsweek'; they are the only print magazines that I used to get. The only trouble is that they have different versions for each region and I don't know if it was the Middle East or the South Asia one. Here are a couple of links about Mohammad Aideed's son. http://news.bbc.co.uk/2/hi/africa/1747697.stm 'Based in Mogadishu, Hussein Aideed leads the United Somali Congress/Somali National Alliance (USC/SNA). Hussein Aideed controls parts of Mogadishu He is a former US marine and son of the late General Mohamed Farah Aideed - the warlord who helped to remove President Siad Barre from power, and then fought US forces in Mogadishu in 1993. His son - Hussein Aideed - arrived in Somalia with the Americans but then left the US military and became a local militia leader. He now controls southern areas of Mogadishu.' http://www.smh.com.au/articles/2002/07/24/1027497355639.html 'Hussein Aideed, who grew up in the US, is an American citizen and served in the US military, including as a member of the US peacekeeping force in Somalia, now controls his father's powerful militias.................................. Hussein Aideed was educated in America and worked as a city engineer in California and as a reservist in the US Marines. Hussein had been estranged from his father, the warlord Mohammed Aideed, but re-established a relationship when he returned to Somalia in 1996.' The fact that he was involved in the radio contacts pf the marines becaise of his engineering background, does not come out in either of these interviews. On his father's death he took over his rule and at one stage declared himlelf President of Somailia and claimed to control 855 of its territory.
Wed 19 Mar | Stephen Jones | Varying tnings are been joined together here wihich should not be. fFirstly democracy in the sense of each person being able to vote for their leaders on a periodic basis. The main genarally accepted advantage of this is not some nebulous, it allows the people to rule, but that it theoretically provides a mechanism for the peaceful transition of power (though the people that postulated the idea had evidently never seen Indian or Sri Lankan elections).. Secondly the separation of powers, between the military, the executive and the judiciary. Generally considered to be necessary to ensure that democracy does not become a farce, but can in fact exist entirely independently of a democratic way of choosing the leaders. Both of the above (a way of ensuring a peaceful transition of power and the separation of powers necessary to safeguard the former) can exist but basic freedoms still be denied in a pseudo-democacy. The black in the Deep South up to the 1960's would have been in that situation since registering to vote or engaging in ciivic activiry was forcibly denied to him; this still ocurs in India or the Philipines, for example. Freedom of Information is also necessary to allow the people to effectivel exercise their choice and enable it to monitor the three branches of government. Economic power must not be too concentrated as this will allow the democracy to be subverted, either at the level of people having to vote for the local building contractor or they would be out of a job, to huge multi-nationals blackmailing whole governments into giving them tax breaks. A universal system of state ownership would also have this effect. So democracy can be subverted by too much state power - communism - or too little - cowboy capitalism. Democracy cannot theirefore be opposed to or indentified with either socialism or captialism. And a parting shot. Churchill was confusing different concepts when he said that democracy meant that when you got a knock on the door at the crack of dawn you knew it was the milkman, but any policy that changes that to protect your freedoms or way of life should be viewed with the gravest suspicion.
Wed 19 Mar | Stephen Jones | Dear Trollbooth, I never said people in the US were 'viler' than anywhere else. Your mother really should have taught you to read, though I suppose she was still upset she hadn't thrown you away and kept the stork.
Wed 19 Mar | Patrik | All this flamewars; and the war hasnt even started yet :-)
Wed 19 Mar | trollbooth | I don't have a mother Stephen. I was grown in a cabbage patch. Keep biting and I will keep writing. I see you wont comment on the fact that I said you are a child. Am I wrong? I see your hate runs deep. I also see your knowledge of how to use a thesaurus is unmatched. Bravo my child friend. I am going to be your new best buddy! I do have one serious question for you though - when are you ever going to offer something constructive and not destructive. You can pick apart an argument pretty well but you offer no alternatives. Do you have something to offer to the world besides long rants that make my eyes tire? Say something constructive you boob. I dare you.
Wed 19 Mar | Stephen Jones | ---'to offer something constructive and not destructive'---- Like you do you mean? Have a nice day.
Wed 19 Mar | The Real PC | [Democracy cannot theirefore be opposed to or indentified with either socialism or captialism.] I didn't think anyone said it could. But to maximize individual liberty you need some form of capitalism. To prevent the streets being paved with homeless sick people you need some degree of social welfare. Balance is everything, and for balance you need wisdom, not extremism or hate.
Wed 19 Mar | Ged Byrne | Real PC, If you follow the thread down you see that everybody starts off conforming to the accepted norms, but once the debate begins a greater diversity of opinion becomes apparant. I think we all hide behind stereotypes. They provide us with masks that makes interaction so much easier. If everybody utters acceptable ambiguities from an established school of thought then everything goes more smoothly. If people didn't do this, then you'd get this type of row all the time.
Wed 19 Mar | -j | >Like you do you mean? Have a nice day. Ok, wtf is the first part of that sentance supposed to mean?
Wed 19 Mar | codito | >My point really, is that Lenin et cie were convinced enough in their ideals. So was Hitler. So it seems is Bush. Following this idealistic logic, since my left foot itches I must be able to hit home runs like Babe Ruth too, but only if I scratch my balls first.
Wed 19 Mar | realist | Interesting read....Stephen I agree with much you have said. Some other good contrary opinions too. It was good to see that the conversation didn't end up being an abuse session (or is that Joel at work?) Lets just hope the whole bloody mess is over soon. Poor old Iraqis have been getting it up the rear for over a decade now, and now the most powerful nation on earth is going to blow the living beejesus out of them again. I hope the tents they live in are made of lead!
Thu 20 Mar | tapiwa | Looks like we are now at war.
Thu 20 Mar | tapiwa | 'Following this idealistic logic, since my left foot itches I must be able to hit home runs like Babe Ruth too, but only if I scratch my balls first. ' Codito, this is my point exactly. The fact that your left foot itches does not make you a great baseball player. Bush's conviction of his ideals, and the fact that he is right, is possibly no greater than that of the Hitlers and Lenins of this world. I have no problem with personal ideals and convictions. I do however have a problem with people using force to impose these said convictions on another nation. Whether they are right or wrong, history will judge.
Thu 20 Mar | Ged Byrne | TJ, I think you've made the point there: America is slipping into Empire. The current actions of Bush and Blair are not capitalistic, they are Imperial. I'm saddened to have to agree with Stephen. If Iraq turns out to be as easy as Afganistan was then its going to leave them hungary for more. The alternative, however, is the loss of soldiers lives. Perhaps political damage will be good enough, and loss of life will not be necessary. I hope this is true, because it will prove the effectiveness of democracy.
Thu 20 Mar | Ian Stallings | So losing 'massive amounts' of soldiers will make them stop fighting wars? If anything history has proven otherwise.
Thu 20 Mar | Stephen Jones | History gives conflicting lessons on this one. Losing soldiers is unpopular, so in democracies, where the guiding principle behind all policy decisions is getting enough votes to win the next election, it can prove effective. Two million Vietnamese died in the Vietnam war, not counting the casualites, both direct and indirect in Cambodia and Laos. However i the 55,000 American dead were almost certainly a more compelling factor in causing the American pullout. Empires are not normally stopped in their expansion by feelings of invinciblity.
Thu 20 Mar | Ian Stallings | I did not mean one particular war. I meant war as a whole. War will not stop in my life time, regardless of who is waging it. To wish death on soldiers just to whip their political masters is crazy thinking. You might as well be one of the leaders spouting the same rhetoric. I personally hope that casualties on BOTH sides are avoided. There are other ways to defeat a US administration without using violence, the US system was set up that way. BTW Stephen, you've revealed your true colors and it isn't pretty. I hope you can work out your hate one day and see past the rhetoric that is strong on both sides of this argument.
Thu 20 Mar | Hmm | 'To wish death on soldiers just to whip their political masters is crazy thinking.' Surely that's exactly what the political leaders are doing? Sending soldiers to kill opposition soldiers so one side or other wins the war. Crazy thinking it may be, but it seems to be the way wars work. Or does it depend what side you're rooting for?
Thu 20 Mar | Ged Byrne | Question is what else will stop this and the wars to follow. 1) A 'messy' war discourages the UK and US leaders from starting another war. 2) The UK and US continue there current policy until every country on the so-called axis of evil has been defeated. Which option has the least loss of life? As I say, I'm hoping that this isn't our scenario. Hopefully the safety mechanisms of democracy will serve there purpose and save us from this nightmare scenario.
Thu 20 Mar | Ged Byrne | What am I missing. I don't see where Stephen says anything that hateful or unpleasent. Mostly he quotes history and other sources.
Thu 20 Mar | Ian Stallings | [ Crazy thinking it may be, but it seems to be the way wars work. Or does it depend what side you're rooting for? ] If you read further you'll see I said:. You might as well be one of the leaders spouting the same rhetoric. as to Stephen's hate: [My 'hatred of the United States' runs as deep as the hatred of Iraq that the other posters are showing. They seem to think there is nothing wrong with killing tens or hundreds of thousands of young Iraqui men who do not offer the least threat to the United States, nor even to their immediate neighbours. ] [Strange Nat. My primary concern is maximization of US and UK casualties so its leaders will think twice before going on these kind of jaunts again.] Is that not hate? I mean what qualifies as hate these days? Besides, I've seen all of his posts and watched him over the past few months and his anti-US rhetoric makes me uneasy. Every time the US is mentioned he will come out of the wood work to bash, regardles of the fact that he has never actually been to the US. He knows a few US and British citizens overseas, is well read, and obviously well educated, so he feels qualified to condem us all as bunch of lemmings being led by the evil empire. If only life was that simple. And for the record I am still on the fence on this war. I think both sides of the argument have legit concerns. But you know what, my opinion only counts at the polls and that's where I will excercise it.
Thu 20 Mar | optimistic coder | Well it's all happening now, there's nothing we can say that'll stop the war. So lets hope they've got the strategy right. If they have, we should soon be reaping the benefits - among them, lower insurance premiums, cheap fuel, healthy investments and all round fantastic economic and social conditions the likes of which we haven't seen since before the bad times. Fingers crossed.
Thu 20 Mar | Stephen Jones | Dear Ian, You are under the strange delusion that coming from the USA gives you the right to expect preferential treatment. You have already stated in a previous thread that you feel it is quite all right for you to protect your job in the USA working for an industry which specializes in exporting a product designed to automate human jobs world wide. You are now stating that it is hateful to wish for the death of US troops but quite reasonable to wish for US success. The fact that you are sweeping under the carpet the fact that US success will lead to the killing of Iraquis doesn't mean it's not going to happen. We are not going to have the minimum of casualites on both sides (and considering the discrepancy in fire power that minimum is likely to be 1000 to 1 in favour of the Americans) for the simple reason that if this war is a push-over, Bush and the rest of the gang will start getting ready for the next one. If carloads of the Mafia came round to your neighborhood from somewhere in the Bronx, to get rid of some local don, after fire-bombing the whole suburb, would you consider it fair if to say as Nat does that you don't care about the law or the Minnesota opinion du jour, but only that casuialties among the bambinos are kept to the minimum, and that it doesn't cause a rift in the family? And why is it wrong for me to criticize the US, without having been there, while quite all right for Americans to decide the fate of nations they couldn't even find on a map.
Thu 20 Mar | Tj | Ian, there's one interesting rule I heard, if for some reason I decide to pop a baby out of someone. 'The younger you are, the louder you can shout.' I'm very comfortable being an American. A Ukranian once mentioned that I could get multiple women in Ukraine, just for being American. If you think life sucks, imagine if your country was so poor that your daughter dreamt of being a vapid whore. So I think we can take a little bit of 'bashing.' In the end, if it's well-researched, it's information. Maybe it's biased, but so is Halliburton; and still bias is not quite enough to say anyone's wrong. Now that the US is acting like an empire, I hope we do it well. We're now committed to the strategy of controlling governments. Hopefully, we will be put under extreme scrutiny. And the peace activists can flock to Iraq and oversee those controlling the oil wells. It's GOOD that the US is starting to burn its diplomatic bridges. Change is happening. People will stop looking up at the US, and take care of their own damn problems without toadying to us. In Germany, I met many people who wished they were American; now they've likely grown up and can start being Germans. We are now in decline, and that gives us a rest.
Fri 21 Mar | tapiwa | So the US want's to play prefect and grand protector of the world heh? 'Of all tyrannies a tyranny sincerely exercised for the good of its victims may be the most oppressive. It may be better to live under robber barons than under omnipotent moral busybodies. The robber baron's cruelty may sometimes sleep, his cupidity may at some point be satiated, but those who torment us for our own good will torment us without end, for they do so with the approval of their own conscience.' - C. S. Lewis
Fri 21 Mar | The Real PC | [you feel it is quite all right for you to protect your job in the USA working for an industry which specializes in exporting a product designed to automate human jobs world wide.] Stephen, Haven't you noticed that technology has been automating human jobs for the past century? Maybe where you live they still herd goats but in most places civilization is evolving. One option is to stop technology by killing all children with an IQ over 100.
Fri 21 Mar | Just me (Sir to you) | 'One option is to stop technology by killing all children with an IQ over 100. ' Another option is to create a society that sets up a scholing system that tries to nip intelligence in the bud, and with relentlessly promotes mindless airheads as perfect rolemodels, with 'winning the lottery' or 'getting on a game show' as the exemplary strategy to gett the loot you need to satisfy all the ridicules needs and cravings that have been bombarded into the tiny skulls from day one by the all powerfull marketing brainwash machine. Welcome to the free world. You better have fries with that.
Fri 21 Mar | Stephen Jones | Dear Real PC, Nobody has yet producied the technology that will make you able to understand the point. I never suggested we should reverse the technological advances of the last hundred years. I was attacking Ian's double standards in seeing nothing wrong with US companies exporting job-destroying technology all over the globe but everything wrong in their moving some of the jobs that make this technology out of his own backyard.
Fri 21 Mar | Ian Stallings | Stephen, You seem to be a young man(?) filled with ideals and opinionated. No matter what I say you will simply twist my words to fit your preconceived notions and your arguments. If you look close you'll see I never said such things. For instance, when did I say that I deserve special treatment? I merely said that my representative in Congress represents me, not those in foreign countries. Is that not true? You even accused me of being a Jingoist if I do remember correctly. Kind of unfair to call me a Jingoist because I want my local congress member to hear my opinion on local jobs being outsourced for no reason besides the bottom line of a corporation. [You are now stating that it is hateful to wish for the death of US troops but quite reasonable to wish for US success] Another example of you putting words in my mouth. Can you point to where I stated this? Or even implied it? I bet you cannot because I did not say or imply this. I said you were hateful because you voice hostility and animosity toward the US. That is the definition of hate by the way. Maybe it is a strong word to use. But I only used it because you stated that you have 'hatred' for Americans. [And why is it wrong for me to criticize the US, without having been there, while quite all right for Americans to decide the fate of nations they couldn't even find on a map. ] Once again you show your bias against Americans. My point was that you don't even know any Americans. Am I wrong? Do you really know any Americans? We are not the lemmings you imply above. We are people with families and friends just like you. We bleed red just like you. We voice concern just like you. And we fight for what we think is right, just like you. So stop trying to fit us into your little box. And of course _again_, you twist my words. I never even said that it was ok for Americans to decide the fate of anyone. Again, I am neither for or against this war. So please do not say or imply otherwise. All I want is for it to end with a minimum of casualties on both sides. The only people that get hurt in war are the common men and women.
Fri 21 Mar | tapiwa | 'I am neither for or against this war' ... The problem with sitting on the fence is that you are bound to get your arse shredded by the barbed wire :) How can you be indifferent. Deep down, I would hope you have some opinion,
Fri 21 Mar | Ian Stallings | [How can you be indifferent. Deep down, I would hope you have some opinion, ] We might as well argue about religion or any another heated topic which serves no purpose other than to grand stand my own ideals onto others. And I can sit on the fence as long as I like thank you very much.
Fri 21 Mar | Just me (Sir to you) | You do not have to be either for or against war. It does not have to be black or white, there's a whole lot of shades of grey in between. A nuanced opinion does not mean indifference. Current media seems to have this tendency to polarize everything. It is easy, clear and simple. Everybody can 'get it' straight away. You do not have to think too hard and it delivers great soundbites. Polarization is what gives you extremism. On both sides of the chasm. 'You are either wit us or against us', 'If you are not part of the solution, you are part of the problem' 'Bush or Saddam' 'Israel or Palestine' 'Linux or Windows' 'Kill or be killed' Leave the simplifications for the simpletons. I'm running the danger of being overly optimistic here, but the fact that you are here already shows you at least can pretend to be more enlightened than your average E-poppin, beer-belching nuckledragging MTV24x7 'kewl' dude. There is not much semantics at the lowest binary layer. Climb that protocol stack.
Fri 21 Mar | Nat Ersoz | Listening to Runsfeldd... 'Goal is to destroy weapons of mass destruction...', etc. When the shock & awe is over, and everyone goes looking for chemical weapons, Rumsfeld will say 'well, we destroyed them in the bombing campaign'. Once again, don't construe my skepticism with objection to the war. As for mafioso analogies, Stephen, you've been surrounded by people who think that Sept 11, 2001 was a conspiracy of Branch Davidians and Israelis. Here's a clue for the Arab world: abandon your conspiracy theory infected workd view and you'll have hope of advancing past the year 1500. See you then.
Fri 21 Mar | Stephen Jones | Dear Ian, Here we go again. I'm not putting words into your mouth. You are simply not prepared to see through the consequences of your opinions. You want your jobs protected but the very existence of many of those jobs is the result of other countries buying American instead of looking after their own. No, that attitude is not restricted to Americans, I can read about it every day from Indians, Sri Lankans or Saudis, just to give you three examples. But that doesn't make the idea any more correct, or any less hypocritical. Sure you can say you only care about Americans, but why should you expect support, or even sympathy from others on the forum, whose co-nationals, friends or colleagues may be directly deprived of work by your policy. And incidentally I do hope you have found a job by now. You can sit on the fence over the war, whatever that may mean, but to wish for the minimum of casualties on both sides is spouting pious platitudes. And even if the war is over quickly, as seems to be possible at the moment, that does not mean that the confilcit is over. In 1917 the British got to Baghdad in three days. They then stayed for decades, during which time they gassed the Kurds and put down an insurrection by the Shiites in Southern Iraq with thousands of deaths. And you do not seem to have got the point as to why I wished for significant allied casualties. It is because I, maybe mistakenly, believe that it is the only way to stop the USA from continuing on what seems like becoming an annual run of invasions. Last year we were told it was necessary to invade Afghniastan to save us from terrorism. The invasion of Afghanistan goes off with thousands of casualties, leaves the country as impoveriished as before except for the payments to the various warlords to maintain their power, doesn't prevent the Taleban and Al Quaeda's continued presence in large swathes of the country, enables the writ of the central government to run no further than Kabul (and not always there as the assasination of various ministers shows) and at the end of it we're supposed to believe it's a success. Then suddenly we have to invade Iraq. Your government, backed up by the British government, proceeds to find various reasons for this, produces fabricated or contentiousl evidence, tells a load of lies to the media and the UN, changes tack half-a-dozen times about the reason for war and we're being anti-American or anti-British to criticize it. No Ian, I am not anti-American, just against most of America's foreign policy at present. I do not think nor have said that Americans are lemmings, and certainly do not think they all have the same ideas. I do however believe that your government lies just as much as Saddam's and that I've as much chance of getting an objective view of the situation from CNN or Fox as I am of getting the low-down on Linux from a Microsoft salesman. Before you keep dismissing criticism with the 'oh, it's the usual anti-American rant' you might want to ask yourself why its always America people are ranting against. Oh, by the way, the phrase about hoping for enough casualties to make the American government think twice before embarking on such a venture again, was first expressed to me by my office mate. It was in a moment of irritation, and he felt himself ashamed to say it because he just happened to be an American.
Fri 21 Mar | Stephen Jones | Dear Nat, I've come across the theory that 11/09/2001 was the work of Israelis, and no I don't believe it for one minute. Just as I am sure you never believed for one minute that the anthrax scare was the work of foreign agents as opposed to someone involved in US military research. The Arab world is full of conspiracy theories. The USA hasn't always lagged far behind either :) The old saying is that 'if it walks like a duck, looks like a duck, and quacks like a duck, then it probably is a duck' appear to hold true in this case. Two of the reasons given for the war (weapons of mass destruction and links to Al-Quaeda) are palpably ridiculous and appear to have been dropped. The third, bringing democracy to the region, will prove to be a joke since the last thing the US wants are popularly elected regimes that are violently opposed to it. I think Nat you've misunderstood the point to the Mafia analogy. The troops, whose lives you are so worred about, have been shipped five thousand miles out of their country to beat the hell out of some people a couple of hundred miles up the road from me. Your concern for them is no doubt touching, but many will find it rather inappropriate.
Fri 21 Mar | Ian Stallings | [And incidentally I do hope you have found a job by now.] I'm sure you do. You know one day we will meet and I'll bet good money your mouth will not be so active. You should run for office, you and your IFilibuster interface.
Fri 21 Mar | Stephen Jones | It was meant sincerely. Though reading your reply I wonder why
Fri 21 Mar | anon | One important thing is that someone can criticize you without necessarily wanting you to change your opinions. Stephen criticized you for not acknowledging the fact that us computer professionals are sort of being hypocrites by complaining about being replaced. However, that does not mean you should suddenly become irrational and stop complaining.
Sun 23 Mar | Ged Byrne | Stephen, I'm glad to see you've continued to defend your opinions in the face of so much opposition. I don't accept that Stephen has said that he hates Americans. The term 'deep filled hatred' was in quotations, quoting what somebody else had said above. He also qualified it by saying it was the same hatred as is being expressed for the people of Iraq. Of course, we are all supposed to love the people of Iraq. After all, we are fighting the war on their behalf. I think the hatred is of the type when you stop viewing fellow humans as people like yourself (with families and all the rest of it.) When you start think of people as being merely statistics, an acceptable level of 'colleteral damage.' Then you are demonstrating a frightening cold hatred that is of the worse type.
Oracle or Sql Server is one thing, but SAP? | Wed 05 Mar | K
Ive received an assignment to develop a large data warehouse, and been told to consider SAP for the database. We already use and are happy with Oracle. I hear debates between Oracle, Sql Server, MySQL, and even Ingres and Sybase, but why is it that Ive never heard SAP mentioned in the same context? Does anyone have any experiences (good or bad), or good links to share, aside from the official sapdb.org site?
Sun 23 Mar | Mark Sanders | Risking ridicule: quickie in light of comment on Oracle docs: i've spent last 6 months developing an oracle db for teaching purposes. i've never before touched an rdbms system, so was a capital v virgin i found the morass of documentation completely impenetrable, worked most of it out meself but had to ask oracle meta link to solve several very basic problems caused by oracle needs that were only mentioned a zillion layers deep in the books (if then) am I a wimp (in this regard) or is oracle well known for basic lack of friendliness to newbies?
Template Method | Fri 21 Mar | beginner.net
Im just starting to use .NET for my programming chores. I am wondering whats the best way to implement a template method. To refresh the memory, a template method is a method that is defined in a superclass that delegates the implementation of certain key steps to derived classes. Initially, I expected to be able to declare the delegated methods as protected abstract so that subclasses implement these to make the template concrete. The problem is that the protected access level seems to behave differently than Id expected. Subclasses can see protected members of their superclasses, but superclasses cannot see protected methods in their subclasses. Is there any access level that does what is needed? Am I missing something? Whats the best way to implement a template method using this technology?
Fri 21 Mar | Brad (dotnetguy.techieswithcats.com) | What kind of compiler errors are you seeing? We use this pattern constantly with great success (protected abstract).
Sat 22 Mar | Thomas Eyde | Probably I am totally misreading your post, but doesn't a template method call other methods on its container class? Then these methods are usually implemented as protected abstract (in C#), so subclasses must provide an implementation. The template method itself is usually public sealed/final (what's the modifier in C# again?). The template method is inherited, so the call is always made to the implementing subclass. The subclass provides its own implementation, so there's no need for superclasses to see the sub's protecteds. This seems to come out wrong, but hope you understand what I mean.
Critical Chain, ToC & Project Management. | Fri 21 Mar | Prakash S
Hey Guys, I am assuming that a lot of you have read The Goal, Critical Chain. Have you incoporated any of this in managing software projects? How has it worked out? Let me know your obesrvations, success. Thanks,
Fri 21 Mar | DavidG | I've tried Critical Chain on 1 project so far, but I can't make any conclusions. Unfortunately, because of an impossible deadline, the task durations got squeezed down to less than the 50% guideline. Not only was there no padding in each task, the durations were basically impossible. So, we were late on almost every task. Also, I was not allowed to put in a big enough project buffer. I still believe it can work because, we were much less late than we've been on other projects. I also found myself concentrating on the critical chain. I had 2 resources that were overscheduled in a way that I would have missed if I had just looked at the critical path. I optimized those 2 resources as much as possible. So, I think being aware of the critical chain improved my project management to some extent. Overall, I think it works but I need more projects and more control over the schedule.
Fri 21 Mar | Prakash S | yeah taht is true, you need complete control to assign buffers, etc.
Fri 21 Mar | CCPM user | One thing the buffers buy you is a mechanism for evaluating the schedule risk a certain 'due date' imposes on you. A simple way to do this is to use the aggressive and comfortable estimates to generate a statistical distribution for the length of the chain. This distribution will show you the confidence associated with a specific chain duration. The way to use this is to use the risk level as a bargaining chip with the folks that like to assign arbitrary due dates. Give them a list showing risk percentiles in column one and projected finish dates in the second column and tell them to circle the one that achieves their objectives. They tell you what date they want, you tell them what risk they are assuming. After the decision is made make sure to publish both numbers to all stakeholders as a part of your periodic summary information. Publicity of this sort is very effective at curbing schedule exuberance in managers since none of them wants to be known as being a reckless cowboy. As an aside, learning how to properly identify and analyze risk is probably your single best tool for fighting against arbitrary management decisions. When they adjust project parameters like budget, scope, schedule, quality, etc, they are implicitly adjusting project risk. The problem is that this side of things is rarely made explicit. When you make it explicit, you turn a one-sided argument 'Who doesn't want to make the schedule shorter???' into a tradeoff 'I'd like a shorter schedule, but I can't see assuming that much risk...' To answer the original question, I've used the approach successfully for about four years, and have nothing but good things to say about it. The biggest problem is the lack of tool support. My team has had to build our own toolset to make this stuff tractable.
Fri 21 Mar | Reginald Braithwaite-Lee | (sorry for the public post) CCPM, may I quote you?
Fri 21 Mar | CCPM user | Reginald: certainly. By the way, another great place to ask questions like this is on the Critical Chain group at yahoo: http://groups.yahoo.com/group/CriticalChain/ There's several folks on there that have been using this approach for a while and are typically happy to share their experiences and observations.
Fri 21 Mar | Prakash S | CCPM user: 'As an aside, learning how to properly identify and analyze risk is probably your single best tool for fighting against arbitrary management decisions. ' Do you have any advice/ tips/ links on how to go about this? You make some very interesting points. thanks,
Sat 22 Mar | CCPM user | If you are interested in identifying and analyzing risk, the best place to begin is to look at the simple and the obvious. If you examine the way scheduling is typically done (using Gantt charts, etc) you'll see that the key analysis element is the task, and that the task obeys the following equation: t = (s * e) / r Where: t = schedule time or calendar time (hours) s = scope, number of features (units) e = effort per feature (resource-hours/unit) r = resources Let's assume that we're going to analyze a single task, first using traditional methods and then again keeping an eye out for schedule risk. The traditional approach would just evaluate the equation above like this: Assume: s = 3 units e = 3 resource-hours/unit r = 0.5 resource (a case where you are on the project half time - very common). If we plug these numbers into the equation, we get (3 * 3)/0.5 = 18 hours of schedule time to get the job done. Now let's look at it with an eye to risk. Risk is really the cost of uncertainty in a lot of ways, so let's add some uncertainty. Let's now assume: s = 2-4 units e = 2-4 resource-hours/unit r = 0.25 - 0.75 resource This keeps the average case the same as the traditional approach. We can use just this much information to compute a back of the envelope best case and worst case as: best t = (2 * 2) / 0.75 = 5.3 hours worst t = (4 * 4) / 0.25 = 64 hours So, just for a rough approximation, we've decided that this single task can take from 5 hours to 64 hours, with just a small amount of uncertainty. Computing the average case yields the same 18 hours as before. You can see how a little uncertainty can really change the picture when you acknowledge it. You can apply similar logic to chains of tasks and then to small project plans. This kind of analysis is useful for convincing yourself that it's important not to ignore these tiny risks, but the results are not realistic. The next step is to refine the analysis so that the results are useful for decision making. The best way to do this is to either develop or purchase a good monte carlo simulation package. My favorite is Crystal Ball by Decisioneering - no affiliation. Another good one is @Risk by palisade software. You can easily develop a basic one using Excel, though, and this is even useful in understanding how these things work. These packages allow you to easily set up models like the one above, but provide a much more sophisticated (and realistic) analysis capability. When you get good with these tools, it doesn't take very long, you will have a potent weapon to use in turning one sided arguments to your advantage. A nice side effect of this kind of approach is that these are the same kinds of analyses that the finance guys do, so it's easy to get them on your side. Another nice thing that sometimes happens is that the project managers get enthralled with your ability to produce seemingly complicated charts that show things like the project's 'cone of uncertainty,' which makes them look good when they move it up the management chain. When this happens, they turn into numbers junkies and you become their favorite pusher. In other words, you da man. Aside from using tools like this, it's useful to get a basic understanding of practical statistics, especially some of the common statistical fallacies like the so-called 'Flaw of Averages' (see http://www.optimizemag.com/issue/002/financial.htm ), and some of the basic ideas like the law of large numbers and the central limit theorem. You don't have to understand the theory as much as the professors would like; it's much more impotant to just learn to apply and interpret the stuff - I don't care about the equation that defines a Weibull distribution as much as I do about what the shape of it tells me. You can supplement this kind of work with other tools like the free estimation tool available from Steve McConnell's company (http://www.construx.com). He also offers a very good estimation class that covers some alternate approaches to risk identification, analysis, and reduction. I think he has a book called 'The Black Art of Estimation' or something slated for publication that covers basically the same material, but the class is nice because you can grill McConnell. Some of it is also covered in 'Rapid Development.' The main thing to walk away with, though, is that just like production lines and project schedules, communication with management is typically compromised by a small number of limiting factors. Being able to bring even a small amount of this stuff to the table goes an amazingly long way in strengthening your position. Getting them to get some skin in the game is one of these. Once you deal with these, do just like Goldratt says, find the next problem and tackle it, the same way. Anyhow, I've included my email address on this post, so if you'd like to find out more or to tell me what a putz I am or whatever, feel free to shoot me an email :) Or post here again, I read regularly. Hope this helps.
Sat 22 Mar | David Roper | May I add another, I trust pertinent point, to CCPM's excellent commentary. One unspoken assumption in the 'Flaw of Averages' is that estimates of the duration of tasks are independent of one another, i.e. that the distribution of values of s, e, and r (in CPPM's description) for each task are in not correlated. Therefore, if r (say) is 0.4 in one task, putting us late, it is just as likely to be 0.6 on some other task, putting us back on schedule. This is a fallacy. In reality these figures can be highly correlated; if you underestimate the complexity of one task (i.e. s is too low) or your manager does actually let you have the promised 50% of a programmer's time (i.e. r is too big), it is highly likely that the achieved values of s and r will run throughout the entire chain of tasks. What this indicates is that it's vital to monitor actual values of s, e and r in the early stages of a project. By getting a handle on these values you can refine not only the expected duration of the project, but also the range (variance) of likely completion times. This underlies the technique used in the XP 'planning game'. Tasks are estimated in abstract units, often 'jelly beans', that are then converted to real durations by a 'project velocity' of jelly beans per hour. The achieved velocity incorporates the uncertainty in scope, estimation, and resource availability.
Sat 22 Mar | CCPM user | David Roper makes a couple of very important points that need to factor into any comprehensive attack on these problems. The first point is that models based on historical data are almost universally better than models made from scratch. Having this data available allows you to tune and calibrate your models early, saving a lot of time. This means that it is in your best interest to track your project data closely. Not only will this help you improve the accuracy and precision of your models, but it can also help you eliminate some of the subjectivity from the planning process. In the ideal case you would eventually have enough good data available so that you could change from an estimation problem to a classification problem. For instance if you look at all your projects and find that most of the tasks can be grouped into ten buckets so that items in each bucket are similar, you can then track actual values for the items in these buckets. This practice will allow you to construct a performance profile for each bucket. Now, when it's time to start putting data on tasks, instead of trying to estimate the correct values for a task, you can first try to fit the task into one of the buckets. If you can convince yourself that the task fits into the bucket, you can use the bucket profile as an estimator for the task instead of making one up. When the boss wants you to alter the estimate you can say 'I didn't make the estimate, it's based on historical data.' The only responses she has is to either accept the estimate, convince you your classification was wrong, or to ask you to alter the past :) The first one is fine and the last one is impossible. As for the second one, it's much harder to fight about a classification problem than an estimation problem. 'Boss, why don't you think that this task qualifies as a 'simple database access?' You think it's really a 'form based gui?'' The second point is that your development process may have some systematic bias associated with it - this is quite common. Manufacturing has developed an entire science, called statistical process control, to deal with the problem of identifying, characterizing, and eliminating this kind of variation from their processes. Some of these tools would be hard to use with software because they require large populations to sample in order to work well. Even so, understanding the ideas and principles that these things are based on can give you a lot of insight into how uncertainty is affecting your processes. This could be helpful in making more effective use of approaches like the one David describes for the XP planning game. The best book I've seen on this material is 'Understanding Variation' by Donald Wheeler http://www.amazon.com/exec/obidos/asin/0945320531
what comes first, product or company? | Thu 20 Mar | hydrogen
I work as a programmer for a research laboratory at a university. In a prior life, I was an independent consultant. I took the research job to have a more laid back lifestyle. I have a product idea that would be very useful for at least three groups at my current university. I think I could generalize it a bit and package it up with a nice installer, and hawk it to the same type of research group at EVERY university on earth. I think I could set up a business where myself and a friend could probably make a reasonably good living for ourselves with this product. My question is: do I create this product first, prior to forming a company, get it installed locally, and get some feedback from my university groups? OR do I first form some type of business entity (most likely LLC) which has in the articles of organization that our focus is to build and distribute this type of software? Any comments are appreciated.
Thu 20 Mar | Wayne Earl | There are a number of legal issues with code ownership when you are working for a company or a university. What I've usually seen is that any code written for a company while an employee belongs to the company. Consulting gigs are a little bit iffy on this; I've always had code ownership as part of the consultant agreement to clear things up before hand. Depending on the terms of your employment, you may actually have to leave that employment before working on your software. The university might have a legal claim of ownership otherwise.
Thu 20 Mar | Matthew Lock | Get the product built first. That will be the critical path in your plan, and also by far the most time consuming.
Thu 20 Mar | Prakash S | I agree with Matthew on the Critical Path bit (The Goal & Critical Chain - Goldratt). I would suggest you from a company, then start work on your product - purely for legal issues. Time/Cost or Feature set will be the way you schedule your project. (This is out of Steve McConnel) The most important thing you need to concerate on is EXECUTION. lot of people get great ideas, what seperates the sucessful is the implementation bit of it. All the luck,
Fri 21 Mar | hydrogen | Regarding wayne's comments. I was worried about that, so I had a lawyer (family friend) look over the things I have signed and the university does NOT have any ownership of code I develop outside of my current project. The code I do at the university is very theoretical oriented (re: science stuff) whereas the product I have in mind is more infrastructure oriented. However, that isn't to say that if I'm successful the university won't try to stake claim on the software. I highly doubt this would happen; a couple other people in my group own small companies that produce palm pilot applicatoins. But, you never know. This is why I wondered about forming the company first - to cleanly demarcate the university stuff from my own product.
Fri 21 Mar | Stephen Jones | Remember that the legality will depend on the country you are in, so take advice from the internet in this respect with a pinch of salt. Your problem will come if you use the university as a guinea pig to test it out. I'd think about testing it out at another couple of places first, and then make sure you get your university to sign before you test on them.
Fri 21 Mar | Must be a manager | You don't need to have a company to own the copyright. You as an individual own it just fine. Why not go to the university's HR folks, explain what you're doing, and get them to sign a letter that makes it clear the university does not own the work you do outside working hours. They shouldn't have a problem with that. What you need most is money, not a company infrastructure. The best way to attract money is to have a working, respected installation. So get those signatures and start building.
Fri 21 Mar | Just me (Sir to you) | Many universities have rules that force you to explicitly declare any commercial activity you have outside of your job with them, and have rules as to what you can and can not do. Be very carefull and avoid all use of university property (e.g. your computer there), and et everything cleared up (in writing) before you embark on this effort.
Fri 21 Mar | sedwo | I was in a similar dilemma (had an idea, while still working for a company) and approached my manager with this. Asking about ownership issues, etc. His advice was to just go ahead with it (on my own time that is), and not bother talking to anyone else in the company about it. After that, the strategy was to focus on the idea and implement it. The business startup aspect can be time consuming and overwhelming sometimes. The best advice I received was (as Nike says) 'Just do it'. *When* the product makes money, *then* you can start to deal more with the business side. Without the product, the business stuff just sits there. I think too many first time entrepreneurs get caught up in the 'business' excitement and lose focus on actually creating the intended product. One side can't fully exist without the other. Product first, then deal with business. Good luck.
Fri 21 Mar | Canuck | Others above have stated compelling reasons to go with the product first, and providing some very good reasons to do so. However, I say company first. Recently I have been reading 'Good To Great' by Jim Collins: http://www.amazon.com/exec/obidos/ASIN/0066620996/qid=1048263845/sr=2-1/ref=sr_2_1/102-1851447-5136951 This book has extensive research about what seperates 'good' companies from 'great' companies. Its a very interesting read based on 5 years of research. He does a good job of presenting facts and not theories. So, his research indicates that good companies come before good products. Actually, he talks at length about this very topic. Basically, if you have the right people, in key positions, you can point them in any direction.
Fri 21 Mar | Brent P. Newhall | However, Canuck, hydrogen's in a different position than the position assumed in 'Good to Great' (which, I agree, is an excellent book). hydrogen isn't going to be hiring employees any time soon. If hydrogen had a big budget and had to choose between hiring employees or choosing a focus for the company, then the decision would definitely be to hire great employees first. However, I don't think that's the dilemma here. I love 'Must be a manager''s advice. Talk to HR. They'll have no problem clearing this all up in writing. That's the best of all worlds; if the university tries to 'stake claim' to the software, hydrogen can just whip out that written document.
Fri 21 Mar | Canuck | Brent, Mostly I agree with you. He is just starting out. I was just trying to illustrate the other side of the coin. I was making the case, without necessarily stating it, that thinking like a CEO and not a software engineer, is most important when creating a software product (not to be confused with non-commercial software). I think it is really important to focus on the company side of things, because a great product does not necessarily equate to sales. It is necessary to focus on customer needs, feedback, building relationships and so forth, when writing commercial software. All that sappy marketing crap, is actually important. Starting your company first, helps you get into that mind set. Without doing so, you run the risk of developing software that *you* think is great, but doesn't address all of the concerns of your target market.
Fri 21 Mar | runtime | Are you trying to start a 'Ben & Jerry's' or an 'Amazon.com' company? I am currently reading Rob Ryan's 'Smart-ups: Lessons from Rob Ryan's Entrepreneur America Boot Camp for Start-Ups'. It's pretty interesting, but basic stuff. It is definitely focused on start-ups that want VC funding and to go public, but I think his message is still helpful: Get customers ASAP. This will give you money and product feedback. You can sometimes get customers even before you have a product! Interested customers can place orders, knowing the product is still in development. These 'pre-orders' help fund your development and look good to VCs and other prospective customers.
Fri 21 Mar | matt | Having worked with 100s of entrepreneurs, I can state with no uncertainty that forming a company first is usually a disaster. I know there are case studies and books that will tell you that without the foundation of a company, your product will never succeed. But here is what happens- the engineer gets sidetracked by attending to company details, and then by being told to write a business plan, and then by being told to work on a product line because no one product companies survive, and then on raising money because how can you create a whole product line if you are working alone, and and and... So, here are the correct steps- build enough of the product so that you can be sure A) it will work B) people want it, badly, and C) there are a lot of people in part B. And realize when I say be sure, I don't mean assume, I mean actual conversations with actual buyers who are ready and willing to pay actual money- otherwise they can't really be counted as a potential customer, and don't fit requirement B. Then, you can start to explore the idea of quitting your job and selling your product. A premature move to form a company has cost more people than I can count (and that's just of the ones I have personally met) a ton of money simply because they never got far enough to confirm the above 3 points, without which no company survives very long. I venture to guess that anyone who says form a company first either has never done it, or was starting with a six figure bankroll. Best of luck.
Fri 21 Mar | hydrogen | Thanks for the comments. I thought I'd clarify a few things. This company is essentially going to be ME, and maybe one other guy if I'm successful enough to warrant hiring people. I'm not planning on IPOing anytime soon. My goal is simply to make as much money as I do now (about $100K, FWIW) by running my own show, instead of working for da' man. Hopefully I can grow sales so that I'm making a lot more than I do now, but I'm setting the initial target to 'survival.' Think FOG CREEK and FOG BUGZ & CITYDESK, not Microsoft billions or whateverthefuck.com's 1998 IPO blitz. I could be missing something important here, but aren't the warnings about all the time and money wasted spent forming a company a bit overblown? In the midwestern state where I am based , forming an LLC costs $135. There is a $40 book from NOLO press that guides you through the entire process. To shut it down if I'm not successful costs about $100. Buying stationary and a new website will cost about $200. So if I totally fail, I lose $500...what's the big deal?
Fri 21 Mar | HeyMacarana | Google was started from research performed in a university. So was Cisco. However, in both cases neither of them were incorporated from the get-go and only did that later after they were sure that there was demand. However, Cisco did initially have some problems with Stanford regarding intellectual property rights since it was said that some of the hardware design they used in their routers weren't just a product of the founders own ideas but were a combination of research perfomed by other graduate students. So you will definately want to heed the advice of others who have previously posted regarding the need to first clear it with the commericalization and research licensing department of your university. I wouldn't even go through the trouble of creating an LLC initally and would just do it as a sole proprietorship. You'd probably want to start incorporating when you make over 75 - 100,000 due to potential tax benefits and the ability to have better personal asset protection. However, you did mention that you might be also bringing in a partner. In that case, it would be wise to create the LLC and get the partnership agreement in writing witnessed by lawyers unless you really really trust your partner as your own mother. Good luck with your new venture!
Fri 21 Mar | runtime | Please keep us posted on your progress! I'm sure many readers here fantasize about giving the middle finger to Da Man and striking out on their own. :-)
Fri 21 Mar | Prakash S | Yeah, keep us posted of your progress.
Fri 21 Mar | Matthew Lock | > I could be missing something important here, but aren't > the warnings about all the time and money wasted spent > forming a company a bit overblown? Because we want to save you from majoring on the minors. The difficulty of creating a product is so vast compared to setting up a company that you should not consider the company until you have a product. Personally I have a problem with procrastination, I have tried to build a product in my spare time for years, and always find myself worrying about all the wrong things - company structure, website etc. But it's all a waste of time until the product is finished.
Sat 22 Mar | pb | Product first. The company stuff is just useless overhead.
Orphans Preferred | Wed 19 Mar | ODN
I recently stumbled across a great Steve McConnell essay on the personalities of programmers. The opening quote alone is worth taking a look at the article... Im still periodically breaking out laughing. Apparently this essay is from After the Gold Rush, 2nd Edition. I think its a great essay for explaining to friends what makes programming a unique profession, in a way that non-technical people can understand. It does a great job of detailing the unique career hazards a programmer faces, partially due to their personalities, and partially due to the software development culture at many companies. http://www.stevemcconnell.com/Orphans.pdf
Thu 20 Mar | Julian | It's interesting that ISTJ is the most common personality type among computer programmers, considering that I'm doing just fine as an INFP.
Thu 20 Mar | Dennis Atkins | McConnell is so full of himself. What a puff piece for himself that article is. And he doesn't even understand the Myers-Briggs.
Thu 20 Mar |       | Wow Dennis, you're so full of yourself. You don't even understand McConnell.
Thu 20 Mar | Mathematical Dunce | What struck me most forcefully were the discrepancies between this article (late 2002) and a couple of frequent themes on this forum: 1) There are more jobs created than people to fill them (but there are often discussions about how difficult work is to come by); 2) The average age of the programming workforce is rising inexorably (but there are often discussions about how it's impossible to get a job if you're out of diapers). Is McConnell living in a parallel universe? Or are these discussions merely proof that people who feel hard done by are always the loudest? Hey, I don't know. I'm asking your opinions.
Thu 20 Mar | Chris Winters | That's odd: most of the programmers I've known well enough to get a M/B out of them have been INTP, myself included.
Thu 20 Mar | Brent P. Newhall | Mathematical Dunce: From what I can tell from this article, McConnell's presenting a long-term view on available jobs. He freely admits that there will be cyclical ups and downs in the job market. Right now, there's a job crunch, but it's 'only' been around for a couple of years. McConnell's data starts in 1960 and projects out through . Regarding age: I've never witnessed a pervasive age problem. Every company I've worked for has hired developers of all ages for all kinds of work. Dennis, I can't believe you can dive into McConnell's mind to know that he's full of himself.
Thu 20 Mar | Kyralessa | The article's conclusion seems overly optimistic, considering the stories we've heard (or in some cases, lived) the last two or three years.
Thu 20 Mar | mackinac | Brent, Since you made a comment about the age discrimination problem, I'd like to ask for a little more detail on your statement that you have seen developers of all ages hired. At the companies you referred to, how many developers did they hire who were over age 60, 70, and 80 at the time they were hired? It would be interesting to know both absolute numbers and fraction of developers. I wouldn't expect you to know this in detail, but if you have some general idea it would be interesting to know.
Thu 20 Mar | RocketJeff | How many 60, 70 and 80 year old people have you seen looking for work as a developer? The question doesn't make any sense if you're talking quantity, it only makes sense if you talk percentages. I haven't seen too many people in this range looking for developer jobs - I can only remember 3 in my 15 year career. Of those 3, 2 were hired for the position they wanted. That's not a bad percentage (heck, it's better then younger workers).
Fri 21 Mar | mackinac | You are right that there aren't a lot of over 60 developers looking for work. Software development hasn't been around very long and it has been expanding, so the number of older workers is going to be relatively small. My main interest in posting the question was to confirm that Brent had really seen a wide range of ages among developers and not just one or two rare instances of older developers. The fact that you have seen a couple of them and they got hired is an encouraging sign, but the sample size isn't large enough to consider it significant. Thanks for the response.
Fri 21 Mar | Brent P. Newhall | Developers at my current employer, roughly speaking: 1 in his 50's 2 in their 40's 3 in their 30's 6 in their 20's My last employer was a startup, where I think that all the developers were in their 20's. At the employer before that: 1 in his 50's 2 in their 40's 2 in their 30's 3 in their 20's
Fri 21 Mar | Ed the Millwright | At last employer, 2 in their late 40s. 3 in their 30s. 1 in 20s.
Sat 22 Mar | Brad (dotnetguy.techieswithcats.com) | ENTJ here, and striking fear in the hearts of co-workers for more than a decade! Muahahahahaha! :-p
Allowing developers to control their machines? | Wed 19 Mar | Philo
The office Im working in has desktops locked down pretty hard - they monitor installed software and report to your manager if you install unapproved software. IEs options are unavailable (cant set reuse existing window or turn on form autocomplete), and even the desktop color scheme is locked. While I can guess at the *opinions* about this, can anyone cite articles that I can use in an attempt to get this practice stopped? IMHO, if youre trusting me to write your core business software, you can trust me to manage my own desktop. Philo
Wed 19 Mar |   | Install VMWare & control your own OS - assuming the box is beefy enough.
Wed 19 Mar | Brad (dotnetguy.techieswithcats.com) | Locking down a box like that would cause me to look for a new job. Developers need to be able to run as admin occasionally, depending on the type of software you're developing. However, I do agree with the mantra that developers should run their daily tasks -- including development, testing, and debugging -- as a non-priviledged user.
Wed 19 Mar | Nat Ersoz | That's par for the course in very heirarchical organizations...
Wed 19 Mar | Matthew Lock | Just take in your own laptop and set it up how you like. Don't connect it to their network, just use sneaker net to transfer files.
Wed 19 Mar | Brad (dotnetguy.techieswithcats.com) | Most companies that have that kind of a lock-down policy will also have a 'no personal equipment' policy, regardless of whether you connect it to the net or not.
Wed 19 Mar | dmooney | How exactly is he supposed to install VMWare? For the software you write, what software and priviledges do you need that you can't have? This can't just be because you really *love* that autocomplete feature.
Wed 19 Mar | | Install VMWare ESX, it needs no OS loaded. Granted he's going to have to buy it, in which case he may as well buy a laptop for the price...
Wed 19 Mar | Philo | To be honest, the thing that drives me most insane is the 'Reuse existing windows' on IE. I keep the address bar on my start bar, and often type a URL in there to go to a site. Now I have to remember to open a new window first (then hit 'stop' because their home page takes forever to load). Granted it's a minor nit, but I just have general issues with having to fight my tools to do my job. As for software - Ultraedit, Irfanview, Winamp, Dezign (ER Diagramming tool) various and sundry shareware for proof-of-concept stuff... Philo
Wed 19 Mar | Big B | Some people, including some developers, have the ability to screw up their computer on a regular basis to the extent where the only remedy is to reinstall the OS from scratch. I can certainly understand why they enforce this practice. The company I previously worked for enforced this, but allowed for exceptions for developers. It sounds like it is more of a trust issue in your case. I can understand that you feel patronized for not being trusted to maintain your own computer, but if you need to look to fellow programmers for a reason why you need to be given full control, you probably don't need it.
Wed 19 Mar | Matthew Lock | If you make web apps tell them you need to install Mozilla to ensure maxiumum compatability. Then enjoy customising Mozilla to your hearts content.
Wed 19 Mar | Philo | Big B: 'but if you need to look to fellow programmers for a reason why you need to be given full control, you probably don't need it.' In my experience: a) Being able to show independent documentation that supports your case *always* helps b) When researching, asking for help from peers is generally more efficient than starting off on your own Which item are you saying is incorrect? Philo
Wed 19 Mar |   | Big B, I think everyone has the ability to screw up machines, developers, admins alike. But at least if they give you full control and full responsibility (you f*ck it up, you fix it), then they really should have nothing to worry about from a support standpoint.
Wed 19 Mar | Anon this time, sorry | I had this problem at my last company. I made a request to install something every other day or so, and I took care to justify the requests. The admins had to take time out to come over, log in as admin and install the software. When they couldn't make time, I let my boss know that my effectiveness was impaired until the software got installed. After about a week, they gave me local admin rights on the machine. Another possibility might be to say you absolutely _must_ have a coding-related tool that only works if you're local admin. Not sure whether they exist though.
Wed 19 Mar | Ran | Depending on the work you do, it may be possible for you to ask them to give you a local machine account that has admin privledges. That way you can run as admin when you need to, but the admins do not need to worry about the security implications of someone running as a machine admin all the time. I run in to this quite often as a VBA developer. The addins and templates are usually in C:\Prog files and cannot be tested without enhanced access. It can also be difficult to add controls and write (and test) install scripts without admin rights. My current client has a website where you can log on and request admin rights for a 2 hour period.
Wed 19 Mar | cheeto | I am in an organization of 250 inside of a company of 10,000 and we run NT4. I have gone through two PCs in the last 5 years and have *never* had a BSOD. The secret. No local admin access. Nothing is allowed to be installed without permission (no dancing baby screensavers, no SETI@home, etc.). There are a few scattered developers who have local admin. So what that proves to me is NT4 is stable; running Winamp3000 and WindowBlinds and BlackBox for Windows and ICQ7000 ... is what gets you hosed. So either take the blue screens or accept the restrictions.
Wed 19 Mar | Philo | Heh. Actually I *have* local admin rights (you can't manage an ASP.Net app without them) But they still scan for 'unauthorized software' and have IE locked down hard. Another factor on the IE issue - can't install the google toolbar, which I find invaluable. seriously, as things go it's not a major issue, but it's just one more thing that a) hampers my ability to work yet b) accomplishes nothing. Philo
Wed 19 Mar |    | What type of scans for unauthorized software do they do? Executables? (just create a batch file, rename it to .doc when it's not running.) If they do registry scans, that's going to be a little tougher, though you could do the same thing. Get a registry monitor, install the software, export the keys, delete them from the registry and install/remove the registry info using reg files (for inserting the keys, not sure for removal) before/after execution. Granted that's one hell of a workaround and you might be better off getting your manager to talk to IT & give you more rights ;-)
Wed 19 Mar | Philo | As far as I can tell, they can the 'Add/Remove Programs' registry tree. I've had a standalone .exe running for a week and nobody seems to have noticed. So it's easy enough to simply remove the Add/Remove entry; but I'd rather get the policy changed and keep everything above-board. More silliness: when I got the first report of 'unauthorized software' I was asked to remove it. I had to go back and point out that I couldn't because my control panel has no 'Add/Remove' applet (another lockdown). The sysadmin said 'You can run it from the control line' Uh, I knew that. But if you're going to advocate that, then just put the freaking applet back, you goon. Philo
Wed 19 Mar | trollbooth | An admin refusing to give you control of your machine! *Shocker*
Wed 19 Mar | Stephen Jones | Philo, I suspect that the problem is not that he wants to restrict your IE settings but that any rights he gives you on the domain will apply to every single machine you may wish to log on to. NT4 server appears to have an all or nothing attitude towards domain security. You are only noticing this with IE because you will always be using IE when logged on to the network as a user, as opposed to being logged on as local administrator when you can change it. Many programs such as IE have user based settings; you change IE as local admin but the change doesn't migrate to you logged on to the domain; you can get the admin to come round, log on and change them, but they will apply to him and not to you. Other apps such as Word keep user changes in a template, so you can cusomze to your heart's content.
Wed 19 Mar | Anonymous Coward | When they gave me that crap at work I put up servers created a domain and took all my developers out of the corporate domain. They got all huffy and refused to support my group. Great! It takes less time to do it myself than to beg tech support to fix it. Eventually went so far as to install DSL and my own firewall so I could get completely off the corporate LAN. Then I made them pay for VMWare. The trick is to always have a business case for whatever you want, and escalate, escalate, escalate.
Wed 19 Mar | Bill Tomlinson | Well, I thought that someone should respond to your actual question. No, I've never seen any article discussing the impacts of company controls on installed software. Particularly not in the area of software developer's productivity or morale. That said, I think that your best bet to get the policy overturned is to pick a particular piece of software and develop a business case why you (and others) need it installed (pick some software where you can get articles showing the productivity gain). Then, after you've won that battle, pick another piece of software, repeat, repeat, repeat. Hopefully they'll eventually get the idea and change the policy.
Wed 19 Mar | Kyralessa | Bob Lewis's columns for InfoWorld have several discussions on this topic. This is one of the best: http://www.infoworld.com/article/03/01/17/030120opsurvival_1.html You can scan forward and backward through his archived columns to find several others on desktop lockdown (proponents of which he calls the 'Value Prevention Society'). Hope they help. (If they do, you should send him an e-mail and share your story!) I feel your pain. Up till a month ago I had Win98, and though the stability was iffy, I could install anything. Now I had to take Win2000 to get VS.NET on my machine, and a hundred little frustrations cropped up: Can't put stuff on my desktop, can't change display settings, can't change Start menu, can't add toolbars in the taskbar, can't change IE home page...the list goes on. I pointed out to the IT guy that I hadn't managed to destroy my PC while it had Win98 on it for a year, but apparently *somebody* in the organization did manage to do this, so now everybody has to suffer. What a pain.
Wed 19 Mar | Robert Moir | It might be a licence issue as well as they are responsible for unlicenced software on those machines. You ~are~ using all that various sundry proof of concept shareware doodats within the limits set by their various licences aren't you? You are not letting any go over their eval limit? And what's the business case for needing Winamp on your dev machine? Incidentally I certainly support developers having some control of their machines myself, its the norm for devs to have this right on machines I manage if they want it. But I understand the concerns of management too. In a big company of course, 'concerns' have a way of snowballing into a big deal until they reach some VP's desk who commands their minions 'Lock all desktops down' in a booming voice, and that's that. I'd say having a seperate network for dev machines where the devs can do what they want is a good idea if the budget can carry the weight. Unless things have changed recently this is how things were setup for the W2K network at microsoft - the NT and Exchange devs had their own 'NT DEV' forest where they could do what they wanted - as long as they fixed it afterwards.
Wed 19 Mar |     | << And what's the business case for needing Winamp on your dev machine? >> I'm more productive when tuning out the office chatter by listening to MP3s (Yes, legally ripped MP3s)
Wed 19 Mar | Philo | Heh. Someone beat me to the case for Winamp. [grin] 'You ~are~ using all that various sundry proof of concept shareware doodats within the limits set by their various licences aren't you? You are not letting any go over their eval limit?' Actually, yes - I'm *very* sensitive to licensing requirements on business machines (my home machine, well... [ahem]). Generally I download shareware, see if it's what I need. If it isn't, it's gone. If it is, I petition management to buy a license. For *tools* I would also like the leeway to buy a copy myself and use that if it makes my life easier. Note that I would never do this with anything that may commit the client to purchasing licenses to get one of my deliverables working (or even to just maintain it). For example I might like to personally use Ultraedit to work on text files, but I would never deliver a presentation in Flash unless Flash was an agreed-upon format. Philo
Wed 19 Mar | Robert Moir | 'Actually, yes - I'm *very* sensitive to licensing requirements on business machines (my home machine, well... [ahem]). Generally I download shareware, see if it's what I need. If it isn't, it's gone. If it is, I petition management to buy a license.' Cool. Even though *you* are good with this, is it a company concern because I'm certain that not everyone is as careful as you? Is there some sort of perception by the PHBs that this could be a problem if they didn't behave in the heavy handed manner you told us about?
Wed 19 Mar | Brad (dotnetguy.techieswithcats.com) | Actually, most companies disallow this kind of stuff because they don't control the licensing. The machine is their property, and they are the ones who end up responsible for rogue software, not the person who installed it. Unfortunately, it's usually easier to get freeware/public domain stuff approved because there's no potential license issue. My wife was using a legit copy of HomeSite at work and they nixed it (a lot of others were too), so in order to make the IT people happy, they had to buy legit copies for them, even though they already had them, just so it was a controlled license situation. Go figure.
Wed 19 Mar | Matthew Lock | Arbitrary rules governing what developers can and can't do seems to be the hallmark of big companies. The only real solution is to leave the company. That's probably why little start-ups can come up with new products so quickly. (MS in the late 70s/Early 80s, Netscape, Napster, Viaweb etc. ) To quote Paul Graham again when his start-up was bought by Yahoo 'I've been on both sides, and I know. When Viaweb was bought by Yahoo, I suddenly found myself working for a big company, and it was like trying to run through waist-deep water.'... ...'But they (Yahoo ) were still only about a tenth as productive as a small startup. No big company can do much better than that. ' http://www.paulgraham.com/road.html
Thu 20 Mar | Marc | When I have the opportunity to assist in setting up a development team, be it in a corporate environment or in a commercial software developer, I have a sort of check list I take them though. The goal is to both protect the company from legal issues while maintaining the productivity of the developers. 1. Pull your developers off your domain. You may setup a separate domain and trust it if you like, but standalone PC’s are just as good (and cheaper to maintain). These both allow the developers to build the software productively while keeping your developer’s hands out of the proverbial cookie jar. They need complete access, you need good security, and this is the best way to achieve that. 2. Put the head of your development team in charge of managing the team’s software. This gives you central control over your licenses (protecting your back side) while at the same time ensuring that the software your developers need is adequately provided. No one in your organization knows more about what software your developers need than the developer’s manager (because this person typically has both managerial and developer experience). 3. Keep your IT separate from your Development, both conceptually and physically. Although they both working with “computers”, they have completely difference mindsets. Not keeping these two dragons apart will cause in-fighting that will hurt your productivity tremendously. 4. Build a default PC environment for your developers. This should include every tool that your developers need (IDE, Compilers, Editors, Controls, etc. etc. etc.). Once you have this, image it (Ghost works well for this). This way when your developer craps his PC, you can get him up and running right away. It is the best way to ensure uptime without requiring your IT staff to fix some developers mess. It also simplifies adding someone to the team as you can build them a workstation in an hour. NOTE: This must be done in connection with Rule 5, not in place of! 5. Backup, backup, backup. While Ghost will get you up and running quickly, it doesn’t save all of your custom settings. Because these settings can take days to recover, backup is the best bet. You should only use Ghost when there is no other option. As for installing shareware and the like, sorry. You are out of luck there. It is just plain a bad idea from a legal and support point of view. However, I do recommend that the team keep a separate PC with the default configuration running someplace. This PC would be open to anything being installed. This way you can test it and just Ghost the PC back when you are done. But allowing this with every PC is very dangerous. We all laugh at those BSA commercials, but they are no joke. Shit can hit the fan if you are not *very* careful.
Thu 20 Mar | Marc | Oh, and if you think you have it bad, this was posted to a mailing list I read: --------- Is there an ftp site I can get the KBase from? I just found out while I don't have web access (lowly contractor), I do have ftp access from my windows desktop. SO, if someone knows of an ftp link, that'd be awesome! Thanks! --------- OUCH!
Thu 20 Mar | Ian Stallings | [And what's the business case for needing Winamp on your dev machine?] I have a better question - what is the business case for not having winamp on my machine? I mean is listening to music all of a sudden a bad thing? Gimme a break.
Thu 20 Mar | Philo | I just thought of an analogy to the developers locking down their machines thing - it would be like hiring a dozen carpenters for a job then issuing them each a standard toolbox with a standard toolset. No tool belts allowed. You'll see them all day long reaching for a pencil or tape measure in their belt, then remembering they have to go to the toolbox for it. They look for their leatherman, then remember they have to go to the toolbox for a pair of pliers or a screwdriver. Etc, etc. In fact, this would be an interesting experiment - have two teams of carpenters build the same project; one with their own tools, the other team with a standard 'best guess' toolbox. Philo
Thu 20 Mar | Phillip J. Eby | Actually, this thread has made me realize that, should I ever have a company of my own with development staff, I'll probably just buy every staff member their own computer and *give* it to them, making them responsible for whatever's on there. And similarly, give them expense reimbursement for any software they have to buy in order to do their job. As long as the upgrade cycle for equipment and software is shorter than the staff turnover cycle, I'll spend the same amount of money, and have (presumably) zero liability for the machines' contents, since they're not mine. :)
Thu 20 Mar | Nat Ersoz | Ownership is a very good idea. The difference in care given to corporate owned laptops and personal laptops bears this out. I would make it a 50/50 split however. And whenever the engineer feels they need a hardware upgrade, they can pony up the 50% of the new purchase and take the old purchase home if they like, or use it at work, etc. Hmm, I really like this. Might suggest we take a look at it.
Thu 20 Mar | Philo | Another thing ownership gives you - it prevents that nasty habit of playing 'trickle down the machines' whenever new hardware hits the floor. I was at a gov't agency where any new computer went to the department head, then his machine went to the assistant dept. head, etc, etc, etc - down to the guys who actually did work. Getting a new machine generally blew an entire Saturday for the IT staff. I figured it was a management/gov't thing until I went to work for a boutique IT place. They told me that if I was hired full time I'd get a company laptop. I later found out that the senior developer would get the new laptop, and I would get his. No thanks. The most bureaucratic place I've ever worked did the 'we'll buy you a laptop, you pay us back half over time' thing. Yeah, sometimes people who had been there longer griped a bit, but I think intellectually we all knew that's simply the way computer stuff works... Philo
Thu 20 Mar | Stephen Jones | And it took me a year to persuade my boss we needed to 'trickle down' the machines (me gettiing first choice of course). Actually it wouldn't be necessary if it wasn't for the bureaucratic inertia in large organizations. What got trickle down started was the fact that the secretary and the boss couldn't do the job because they only had 32MB of RAM on otherwise perfectly good Pentium II's. They would put out a tender for the RAM according to regulations, and receive one valid for a week, which is about the most you can guarantee RAM prices for. It would take three weeks to get it approved by which time the price had changed. So they ordered complete machines instead!
Thu 20 Mar | Mark Hoffman | I've had to deal with these type of Net Nazis in the past. I was responsible for a small development group working on a project that was critical to the company's survival. The IT folks took it upon themselves to lock down our machines and and lo and behold when we tried to build one of the DLL's in VB 6.0, it failed because we didn't have permissions to register DLL's on our system. I about blew a gasket right there..No, I did blow a gasket because the 2 guys running IT liked to brag about how they really controlled everything in the company. I picked up the phone and called the company president at 3:00 AM in the morning and explained to him that if he expected us to meet this very important deadline, then he had better call the idiots in IT and tell them to get in and give us permissions. The president of the company was just as pissed as I was and from that day on, we never had any problems with IT. They were not so politely reminded that their job is to assist the people that are actually earning $$$ for the company, not to get in the way because of some adolescent ego trip.
Thu 20 Mar | Stephen Jones | Much of the 'net Nazi' syndrome arises because an overly strict IT policy, while costing untiold manhours to the company as a whole, actually saves the IT department time and money. So a company that blocks .docs will save on the time needed to clean up from unknown viruses. Of course it may mean that the Personnel department loses over half of all its job applications and has to spend a fortune on recruiting agencies, but that doesn't show up in the IT budget. My favourite was the local steel company that, in order to stop a repeat of Chernobyl, went round every machine and took out all the floppy drives r! My contact there happened to have been on vacation in Inida when the email addresses were given out, and it took them two mohths to give him a new one, so during that time we had to wait unitl a colleague who had a cubilcle in a distant corner, and thus whose machine had gone unnoticed by the screwdriver brigade, was taking his afternoon nap, whereupon he would type everything out again and transfer it to floppy.
Thu 20 Mar | Marc | Ok, it is now official; Mark Hoffman is my new hero. Calling the CEO at 3:00 AM? You kick ass my friend.
Fri 21 Mar | Just me (Sir to you) | Two of my own favorites from sysadmin encounters: The first was an admin that spent most of his time perfecting one particular server. The server ran no apps and served no users, since that would ruin the 'perfection'. The second was an admin that refused for months to install needed functionality since it would require a reboot and thereby ruin his 'uptime'.
Fri 21 Mar | Robert Moir | 'I have a better question - what is the business case for not having winamp on my machine? I mean is listening to music all of a sudden a bad thing? Gimme a break. ' Ian - that whooshing noise was my point going just over your head. Try reading my post again, ALL of it this time, not just cherry picking bits you think you can argue about. Any PHB from a company who locks things down as tight as we've seen discussed here is either going to say 'Yes, listening to music is a bad thing, you should be working not playing music' or they are going to say 'You already have Microsoft Media Player (Or Quicktime for your Apple users reading this), so use that'. It's inclusion on a list of serious work related software would pollute the whole list if it was shown to a PHB like that. Their eyes would keep coming back to the one thing they _could_ just about justify objecting to and they'll seize it like a life raft to keep their dream of a tightly controlled desktop afloat. I personally wouldn't stop dev or sysadmin people from installing whatever they liked on their machines - with the 'you breakum you fixum' caveat - but you ain't going to get far in changing policy to allow you to install software by citing WinAmp as a need. Give _ME_ a break.
Fri 21 Mar | Stephen Jones | Actually, thinking about the question of not letting people install anything because of punitive and restrictive licensing policy, combined with draconian semi-SS like inspections by the BSA and its minions, has anybody thought that another factor in favour of outsourcing is that in many other countries they're still pleased to get the large checks you send for the software you do pay for?
Fri 21 Mar | Ian Stallings | Robert, Maybe you thought my 'Gimme a Break' was pointed toward you but it really just a sigh I let out like 'geez' or 'come on'. I didn't mean to offend you for christ's sake. Why all the guff?
Fri 21 Mar | Robert Moir | Bad day I guess. My apologies, Ian.
Sat 22 Mar | Gregg Tavares | This might be a solution to one of your problems. Have you tried 'Dave's Quick Search Taskbar Toolbar Deskbar'? You'll never use the googlebar again once you've tried it. http://notesbydave.com/toolbar/doc.htm Joel mentioned it which is how I found out about it http://www.joelonsoftware.com/news/20020718.html I couldn't live without it.
writing coding tests at interviews | Sun 16 Mar | Simon
Gave a couple of interviews recently all had half hour coding tests, in C++ and Java.I am pretty okay withthem, asking algorithmic and programming questions, but sometimes I find they ask arcane language features, which you have to be a total expert to know.How do people design these tests? and how do they weigh the tests overall in giving job offers?
Mon 17 Mar | Steve C. | Non sequitor, but this reminded me of a story a friend of mine told me a few years back when he was interviewing for jobs: He had gone through a number of 'social' interviews (questions and talking mostly), and had one last 30 minute technical interview with some lead developer. The guy asked him to write out, on a white board, how my friend would design a hierarchy of classes to represent a binary tree. My friend wrote out his tree setup, and made it such that a terminating leaf had two 'EmptyNode' children (instead of using NULL or something). He even used the singleton pattern so that it wasn't more than a constant increase in space. The guy who was interviewing him didn't believe it would work and basically threw my friend out of his office. Because he didn't understand the idea behind it or hadn't see something like it or ... whatever. Needless to say, my friend wasn't made an offer -- not that he cared at that point. P.S. The best technical interview _I_ ever had was one where they gave me a written out specification, a computer, a few C / C++ language reference books, a computer with a net connection, and told me to have at. Simple maze world type program. But *shrug* I work well under that sort of pressure.
Mon 17 Mar | Steve C. | Just to be clear, they only gave me one computer, with a net connection. My age-old foe, proof reading, we meet again!
Mon 17 Mar | Katie Lucas | I don't ask people to write code. Every member of my family can write code. They can read the manuals, they can write code that will go through the interpreter or compiler and the program will run. This is from a developer who left the industry in the 70s, a mechanical engineer and an accountant. From that I'm extrapolating ANYONE can write code. Anyone can write a million lines of code. I want to find out if they can ORGANISE those million lines into something useful, because that's the deciding point. So I ask design based questions. And I want to know how coherent the candidate is, so I ask them the questions verbally. If they can't explain the stuff face to face they won't be able to write the documentation. It's the single thing that angers me most about technical interviews. They're usually not about how technically competent one is, they're about 'gotcha!!' questions. Quick, what parameters does OBSCURE_FUNCTION take? The correct reply should be 'I dunno, pass me a manual' It's like the difference between remembering the time in the morning the first shots of Waterloo were fired and having an understanding of the political background behind why it happened...
Mon 17 Mar | T. Norman | 'From that I'm extrapolating ANYONE can write code. Anyone can write a million lines of code.' But in reality, there are many people who call themselves programmers who CAN'T write code in the languages they put on their resume. A coding test can be very effective at filtering out pretenders, as long as you look at their answers with the goal of evaluating whether they have actually worked with the language and understand the common concepts, and you're forgiving about the nitty gritty details of syntax and function names.
Mon 17 Mar | Tj | One thing I wouldn't like is sitting there trying to remember, 'Was it def, defun, define?' (Especially if it were Java... which has nothing like that.) Maybe that means it's good to bring a portfolio of stuff in different languages, to quickly glance at and remember the surface syntax. Or bring a little util on a notebook that launches apps you've written and shows their sourcecode. Sounds important to feel out interviewers on whether they have some macho BS with coding. My normal mode is to work on paper (high bandwidth) and then do data entry. But sometimes it's best to switch modes to one that looks more like LOC is being pumped out.
Mon 17 Mar | Philo | I think I've mentioned before that my preferred method of dealing with 'would you please sit down and take our coding test?' is to reply 'No problem. Would you please sit down and take my management quiz?' 1) Who is Deming? 2) What is 'Code Complete'? 3) Define the Mythical Man Month 4) Why is micromanagement bad? 5) Why is 'lines of code' a poor metric for measuring programming productivity? Philo
Mon 17 Mar | Patrik | Philo, Haha...Mind if I borrow that little quiz to my next interview? Sad thing is I think most managers I've ever had would fail pretty miserably on that quiz.
Mon 17 Mar | Justin | Philo, those would come under the section 'Do you have any questions for us?' Asking difficult questions really depends upon how desperate one is for a job (times is hard, etc). If you want to be a bastard, try asking about the company's strategic medium term business objectives and how they intend to achieve them. What is expected of someone in your potential role to help them attain these objectives? What incentives do they offer someone prepared to exceed the company’s set targets? These are both a take on the standard “where do you see yourself in 2 years time” and “how would you show commitment to the company and produce results” interview questions. If the company intends to float or sell itself and is offering options, find out how the value of the company is to be determined. Ask “how do you intend to improve the P/E ratio prior to IPO?” It is equally important to understand these questions and the answers yourself, or you’ll end up looking stupid. Like I said, do you really want the job?
Mon 17 Mar | Philo | Justin - agreed that it boils down to 'how badly do you want the job' balanced with 'do you feel the need to assert your authority?' And I prefer the 'please take my quiz' method to asking directly because I want to make the point of how silly it is to make me burn my time to take their test, especially if they're not willing to make the same commitment. And this wouldn't apply in a Joel-style interview of 'write a routine on the whiteboard'; just the silly 'what is the value of adVarChar' type quizzes. FWIW, I haven't had an opportunity to try this yet, though I do have the quiz printed out and in my 'interview folder' Philo
Mon 17 Mar | Just me (Sir to you) | Philo, so I guess your answer to the question 'how badly do you want this job' obviously would be 'you can stuff it up your ars for all I care'. While I would even welcome serious questions about the state or direction of the department or even management style, pulling a smartass 'here's my quiz' to me would only indicate poor people skills and arrogance on your part.
Mon 17 Mar | Jimmy Chonga | It all comes down to how one perceives the employer/employee relationship. In days of yore this relationship was akin to a mother/child relationship, where the employer was the employer for life (or a large portion thereof), and the employee was loyal and subservient: Employee churn was virtually unheard of. In today's world though this obsolete impression of employers isn't valid, nor are the trappings that go along with it (such as 'how many hoops will you jump through to work for us?'). Are there people who are willing to submit to a endless barrage of inane technical tests and long winded interviews? Absolutely: They're called the desparate (and this may come as a big surprize to employers, which I am myself, licking their chops eager to take advantage of the down market: Competent employees are as in demand as they ever were, and if you treat them like they need to beg they'll be at my door and you'll get the bottom feeders. Enjoy your demise). Professionals though just find this insulting. I treat empoyees (actually contractors) as little individual businesses, not as children. A technically proficient interviewer can easily gauge the technical abilities and intelligence of a prospective hire via even casual conservation about past projects, how they were implemented, and the technologies used, etc: Trying to trick them with absurd nuances of syntax or obscure SQL extended functions is just ridiculous (especially when the tester is generally clueless, and pulled the questions via a surface glance, not realizing that there are other, often superior, methods of doing the same thing).
Mon 17 Mar | David B. Wildgoose | I have a standard question when asked by an interviewer if there is anything I want to know: 'What is your staff turnover?' - Then watch the reaction, and examine the answer carefully.
Mon 17 Mar | Philo | Sir: 'While I would even welcome serious questions about the state or direction of the department or even management style, pulling a smartass 'here's my quiz' to me would only indicate poor people skills and arrogance on your part. ' Well then you got the message. ;-) Because I think calling me in for an interview then giving me a test and sitting me in a room to take it indicate poor people skills and arrogance on the part of the interviewer. Again, let me reiterate - this isn't a shotgun reply; it depends on the situation. It most definitely would NOT apply in Joel's 'here's a white board, show me how you'd invert a string' interview style. It's only for the case I mentioned above. And I can do it because in that kind of situation I've probably already decided not to take the job. Now I'm just wasting your time as you wasted mine. [grin] Philo
Mon 17 Mar | Pete | If you need the job badly enough, it doesn't matter what the answers to the questions are anyway. You'll go work for a bad manager to cover your mortgage payment until you can find something else. In that case, there's no point in asking. If, however, you are interviewing from a position of strength, and the interviewer has allowed you to keep the confidence you had when you walked in, then I can see how it would be possible to ask whether she's read Mythical Man Month without being confrontational and snotty.
Mon 17 Mar | Vincent Marquez | What I think is funny, is that a lot of people are saying its insulting to be given a programming test, yet I'm pretty sure every one of you would test me just because I look young. Even my current boss said I was the only one he hired that had to take a number of aptitude and programming tests. For one, I dont' think you can judge someone by the way they look or whats on their resume. A 35 year old guy in a nice suite and '8 years j2EE' on their resume might not be able to code near as well as the h1b with 2 years experience.
Mon 17 Mar | -j | I dislike tests. If you need a short-term CYA codemonkey, then tests are requisite, without a doubt. If you need a programmer, I'd say you're probably better off with an XP pair-programming session - it proves that the applicant has skills and that personalities mesh at the same time. Pleeeeeassssse, next time I go on an interview, and you want to give me a 'coding' test, give me a real text editing application or IDE instead of DreamWeaverMX (I believe that a crackhead designed that UI, but that's beyond the point). Right tool for the job, or notpad.exe is my motto. The only thing I knew at that point was 'this project is lost, with or without me'. Remeber, if the applicant is worth a damn, then they will be unit-testing the tester.
Mon 17 Mar | goosbane | I sat a C++ interview test recently for which you had to know the following: - virtual functions called in base class constructors aren't called polymorphically. - const data members can only be initialised in the constructor - static data members can't be initalised in the constructor - sizeof(a virtual derived class) is greater than the sum of its data members - if you don't declare destructors virtual they mightn't all get called. to get an interview you had to get a perfect score on the test. Too obscure, or good questions?
Tue 18 Mar | Julian | This stuff is on my mind, since I'll be inteviewing someone tomorrow, for the first time in months. I have a few programming questions in mind, which are desgined test a person's programming thinking skills instead of their explicit knowledge. Verbal pseudo-code and pictures will be sufficient, since it's so unnatural to write code with pen and paper. It's good to have some objective or semi-objective questions, to fairly evaluate people and compare them to other interviewees. Plus, you can argue your impression more forcefully when you have evidence to back them up.
Tue 18 Mar | -j | The answers you posted should be minimum requirements for anyone who claims to know OOP, whatever the language. I guess it depends how the questions were phrased, and if it was multiple guess or not. Kinda cool that they checked early if you knew about defensive programming techiques for memory leaks too. I guess I should expect security questions in the near future too as MS is getting management on the secure coding bandwagon. On other occasions, I've had 'Architects' question me about OOP, and they don't understand the difference between transitive and polymorphic, much less what reflexive is, thanks to their fine VB upbringing. The only possible 'correct' answer is the only way they know how to expain it, and trying to figure out their limits of OOP to explain it to them in their terms is difficult. Establishing good communication skills is also important (in some cases). Has anyone ever had to take a written communication test? Or is just taken for granted that if you know exactly the order in which a COM object's VTABLE is loaded, you must know how to communicate.
Tue 18 Mar | codito | >Verbal pseudo-code and pictures will be sufficient, since it's so unnatural to write code with pen and paper. Mon dieu, c'est faux pas!!!! Try UML. It accepts everything from cave drawings to pencil sketch to vase painiting to super-mega IDE's from our friends at Rational. Works well with all mediums (except for Inkblot's and vanishing ink). And not only is natural after you get the hang of it, it's pretty much 'universal' and faster than coding or trying anything 'verbal' with code.
Tue 18 Mar | Danil | I suspect all of those C++ questions are answered in Marshall Cline's C++ FAQ. Is it reasonable that a candidate, for that position, be familiar with the FAQ? That said, I'd not be surprised if the questions were unfair; where a candidate, not knowing which answer is expected, cannot work out which question is being asked. (My own personal example: 'What are the three ways a copy constructor can be called?' Doesn't sound too bad, until you realize there are more than three. Oops....)
Tue 18 Mar | | I just had an interview where they asked if I had any questions and I responded, 'I don't have any questions for you pertaining to the position and its responsibilities or about the organization in general as I believe, during the interview process, all of my questions have been answered.' At first the 6 person interview committee was a tad bit quiet, then one programmer piped up and said, 'That's a fair answer.' Then everyone chuckled and nodded and verbally agreed.
Tue 18 Mar | Simon | Danil, it's when passing by value as a parameter, returning by value in a method, and when doing something like- Object a=b;
Tue 18 Mar | Danil | Simon - there are a more than that, if you look for them. Though you are very close to what I remember the 'correct' answer being. One of the keys to reaching that answer is recognizing that pass by value is a candidate, but if it is, there are two others which are similar that also qualify.
Sat 22 Mar | Brad (dotnetguy.techieswithcats.com) | Don't forget explicit instantiation. Class1 c1(...); Class2 c2(c1); // or Class2* c2 = new Class2(c1);
Another "interruption" to programming: email? | Wed 12 Mar | Reginald Braithwaite-Lee
As noted on slashdot and elsewhere, Ole Eichorn has written a provocative essay lambasting email as interruptive and therefore considered harmful to programming. His words are here: http://w-uh.com/index.cgi/articles/030308-tyranny_of_email.html He gives some suggestions for handling email. There was a spirited discussion about telephones and programming in this forum. Do people generally agree with his thesis that being interrupted by email does more harm than good? Does anybody have strategies for getting into and staying in the zone without being interrupted by emails? -- http://www.braithwaite-lee.com/
Sat 22 Mar | Ole Eichhorn | I'm the author of 'Tyranny of Email'. I received tremendous feedback in response to this article (thanks everyone!), and have posted a summary of the most interesting observations and comments as 'Tyranny Revisited' at http://w-uh.com/index.cgi/articles/030316-tyranny_revisited.html in case you are interested...
The Tyranny of Email | Mon 10 Mar | fool for python
Ole Eichhorn: http://www.w-uh.com/articles/030308-tyranny_of_email.html I couldnt agree more. I hate it when someone uses email as a real time communication tool. If you can make a business case (bottom line financial justification) for interrupting me, then by all means, CALL me or WALK ON OVER. DONT send an email. 98% of all interruptions are unjustified. And Ill check my email when Im good and ready thank you. EMail is not a yet another tool for you to poke me everytime a thought pops into your head. Let it grow let it grow Let it blossom let it flow -Clapton Thats LET it flow, not MAKE it flow.
Sat 22 Mar | Ole Eichhorn | I'm the author of 'Tyranny of Email'. I received tremendous feedback in response to this article (thanks everyone!), and have posted a summary of the most interesting observations and comments as 'Tyranny Revisited' at http://w-uh.com/index.cgi/articles/030316-tyranny_revisited.html in case you are interested...
Perl and C# Unit Test Examples | Fri 21 Mar | Alai
Im trying to find nice simple examples of Perl unit tests for testing some existing modules that Ive deleoped and not written unit tests for yet, but I cant find any examples in the Test::Unit download that I can understand how its decising what to test. On another note, can anyone reccomend a good C# unit testing framework? Im going to be learning that soon and would like to start out remembering to write my unit tests.
Fri 21 Mar | K | You can find an assortment of test suites here.
Fri 21 Mar | K | Forgot the link - sorry http://www.xprogramming.com/software.htm
Fri 21 Mar | Alai | Thanks for the link; I'm still confused about the Perl Test::Unit I've downloaded though. I'm just trying to do something like: use eyeMaginationS::Utils; my $emu = new eyeMaginationS::Utils; # test 1 assert($emu->ISALWAYSTRUE == 0); # this test should fail.
Fri 21 Mar | Ian Stallings | For my C# unit tests I use Nunit: http://nunit.org/
Fri 21 Mar | Brent P. Newhall | If it's confusing you, you can always just do it yourself. If you want to test a sub called resolve_contract_bids(), create a sub named test_resolve_contract_bids(). In the test sub: Set up test data, call resolve_contract_bids(), and test the test data to ensure that it's been processed correctly. If it's wrong, return false; otherwise return true. Then create a little script which calls test_resolve_contract_bids(), and prints 'FAIL' if it returns false. Add new calls to the script as you add new tests. And you have an automated unit test suite.
Fri 21 Mar | Chris Winters | Test::Unit work ok but it's far from the most used testing suite in Perl. Take a look at Test::More, which makes setting up and running tests a breeze. See chromatic's intro to testing [1], although keep in mind that it was written in Dec 2001 when you read comments about Test::More being new. [1] http://www.perl.com/pub/a/2001/12/04/testing.html
Finishing a product for equity | Thu 20 Mar | Ted
A friend and I contracted last October-January for a medium size ($40 mill/year) healthcare consulting firm. We built a Windows application to replace an existing product. The old product was used internally and had also been sold to a few clients. The new product was built for internal use and the users like it. 5 weeks after we finished, our manager asked us to come back to commercialize the product for external sale. Weve been back a couple weeks and interviewed a tester last week. Our manager told us today that the company had a bad first quarter and they need to cut costs, so the tester wont be coming, layoffs are impending and our project may be cancelled. He asked if we would take a lower rate, but we wont. We mentioned that we would consider finished the product for a percentage of its sales once it is done. He hasnt taken that to the CEO yet, but he thinks the CEO will consider it. Does anyone have experience with something like this? Im looking for gotchas, advice, warnings, etc. My current list of considerations: 1) They may decide not to bother selling it. Possible solution: If they make no sales in a year, ownership reverts to us and we can try and sell it ourselves. 2) What percentage should we get? And what is it a percentage of? Answering the second question first, we want a percentage of top-line sales (gross revenue, before any costs). 3) If continuing development doesnt cost them anything, how do we know when we are done? Possible solution: There is a healthcare trade show in early May, they are planning on distributing demo cds there, so we can stop development after that if there is no interest. 4) How will support be handled? Once the product starts selling, should we be paid for support? Our manager has been supporting the old project for years and would probably do most of the support for the new project. Thanks, Ted
Thu 20 Mar | Bored Bystander | Development expenses are chump change compared to the many expenses of releasing a new product - QA, packaging, marketing, technical documentation, advertising, etc among them. The point is, a contribution of sweat equity in most product environments would make almost no difference in the expense incurred by the sponsoring company in getting that product out to paying customers. And you have no way of compelling the client to ever do anything with the work you produce. Don't do it, because it's an extremely poor use of your time. It would eat your time up that could be spent on revenue producing activities. You would be wasting your effort on what will probably end up as never released internal 'shelfware' to the client. I could be wrong, but considering that the overheads listed above are probably several times greater than what you'd save the client in development costs - I would say that if they can afford to market the product, they can CERTAINLY afford to pay developers. The reverse would hold true for each such assertion, too. If they can't afford to pay you, they can't afford to market the thing.
Thu 20 Mar | Benji Smith | This is a tricky question. It's almost always a good idea to invest your effort into producing income-generating assets rather than investing your time in just getting a paycheck (if you can get both, by being the owner of an established company, for example), that's especially great. But investing your time in a _potential_ asset is almost always a waste of time, since the potential assets very rarely turn into real assets. Back in the days when I used to do web programming full-time, I got offers three times a week from people who wanted me to do work for them in exchange for stock in their company. Not in a million years would I ever take up such an offer, unless it came from a company that already existed and had at least $1 million in revenue on the books for over five years.
Thu 20 Mar | bdw | If I decided to finish the product. I would let the healthcare company act as a reseller or partner and license the finished product to them. You own everything but they act as your sales rep. Then you can get other resellers just like the big boys.
Thu 20 Mar | Must be a manager | If you go ahead with this, you must completely change your relationshp with them so that you are an independent software developer and exercise all management decisions. If they are to contribute any money, get it as instalments against the product - nothing else. There are all sorts of ways you can get screwed in the situation as it stands. They could just refuse to market it but commission a similar project and claim full ownership. You seriously need to find an experienced business exec to give you advice. Not a lawyer. A business exec with software experience.
Thu 20 Mar | Bored Bystander | Ted: I agree conditionally with the three comments made by others. In order for this to be profitable for you, you must control the relationship and the product, not simply pay in sweat equity and leave the product in someone else's hands to market on an exclusive basis. However, my initial comment - dont' do it - was based upon your statements that you've developed most of this product under contract. My assumption therefore is that the client will most likely assert control over any potential product that results (since they will own 90+% of it), and therefore the leverage that you could hope to exert will be as small as the portion of deferred compensation that you would be contributing (in relation to the overall developmental cost of the product, and not to mention the expenses needed to sell it.) I just don't see how it could be made to work as a profitable venture, unless you redeveloped the product as your own nonderivative work. Or if a miracle occurred and the client 'gave' you rights to the existing code base. And why should they do that?
Thu 20 Mar | Philo | 'Not in a million years would I ever take up such an offer, unless it came from a company that already existed and had at least $1 million in revenue on the books for over five years.' Dear sir: We are a small software company developing a new disk operating system that we like to think will be the Next Big Thing. Our pay rate isn't the greatest, but we anticipate offering you a significant percentage of the company for your efforts. Please respond as soon as possible. Sincerely, B. Gates My point is that working for equity is a gamble. It can pay off big or you can lose. The trick is to hedge your bets: a) make sure it's an informed decision. b) work with a known quantity (try to work on a project for pay with the principals to get a feeling for their abilities) c) Leverage the experience - if the situation folds try to walk away with *something* (resume fodder, new techniques, a new technology under your belt, etc) And never say never. ;-) Philo
Thu 20 Mar | Matthew Lock | Except that MS was already profitable when it 'built' (bought) DOS from all the Basic interpreters it sold, and it actually paid its programmers - admittedly poorly. If a company won't pay you at all, except in equity, it says a lot about the state of that company. Avoid it like the plague.
Thu 20 Mar | Matthew Lock | In fact thanks to the power of Google here's an advert MS put on Usenet in 1984, showing their package at the time: Microsoft needs Wizards ... Like the variety of small startups, Microsoft offers its key technical people stock options. We can offer technical challenges as good as or better than startups, financial packages ditto, and, since we're > 90% owned by ourselves, we have no outside investors to restrict or direct our development efforts. http://groups.google.com/groups?selm=8685%40microsoft.UUCP&oe=UTF-8&output=gplain
Fri 21 Mar | clipart | Did microsoft really pay poorly at the time? People tend to forget that Bill's dad was one of the most successful bankers on the west coast... Bill had more money in his trust fund (about $10M, if you believe the biographers) than most startups raise in their funding stages. He could have easily paid a small team real wages out of his own pocket...
Fri 21 Mar | Eric K | I work for a 'start-up' that has been a start up for 4 years, but it was spun off, so if someone told you that we have had $1 mil in revenue every year for the last 5 (or even 6), that would, from a certain perspective, be true. On the other hand, my paycheck is always late, my staff has dwindled from 2 to 0, the company staff has dwindled from 50 to 5, and I'm only here because when they do pay me, its more than the current going rate in my area, and its hard to find a job without taking a steep paycut. But hey - at my last review (a year and a half ago), I was awarded 30,000 shares (via email, so I can't even use them for toliet paper). If the dot-bust has taught us anything - never assume that revenue means PROFITABILITY. I'd rather work for a company with $100 in net profit than one with $1,000,000,000 in revenue and a (continuous) net loss...
Fri 21 Mar | Ted | Thanks to those who responded relevantly. As Bored Bystander concluded in his second message, I don't think there is any way my partner and I will end up owning this product and having our client sell it as a VAR. They have paid for all development so far, and will need to pay for testing, marketing and sales going forwards. We are just considering doing the rest of development in exchange for a percentage of sales of the finished product. The company, while having a bad quarter, has been around and profitable for years. It is not a dotcom. Giving up 2-3 months pay will not hurt me financially, so the chance for a percentage of sales in the future is tempting. Ted Ted
Fri 21 Mar | Bored Bystander | Ted, not to beat a dead horse... but what would compel your client to release the program as a resalable product? Right now it is an internal application. There's a lot of non development work that has to take place in order to sell a program. My thinking is that worse case, you would be donating free time to polish the client's internal application which never gets marketed. If you can answer these questions to your satisfaction, then go for it. I'd probably seek some kind of agreement that says that if they don't actively market the product outside the company within a defined period of time, then IP rights go to you. That would be a fair exchange for your effort.
Fri 21 Mar | Ted | Thanks for your continuing responses. The client would be motivated to sell the new product by the profit they would make. Even if my partner and I have 25%, that leaves 75% of revenue for them. One external customer has already agreed to buy the new product, and several other external customers who are using the old product are eager to upgrade. I appreciate your responses, and we will definetely try for ownership transfer if they don't sell within a year, but I can't imagine we will get it. Ted
Fri 21 Mar | Philo | Ted - one other option. Instead of looking for ownership transfer, try to get licensing rights to resell it. They still own it, but you have the right to sell it if they haven't made [x] sales within twelve months from the date of contract signing. (Making the number of sales the criteria prevents you from going to court over whether or not giving a few brochures to the CEO's golf buddies counts as 'actively marketing') Philo
Unlearning .Net | Thu 20 Mar | Slumming IT
Ive taken on a job that involves a huge amount of VB back end stuff that will probably need tweaking. Now I get VBScript, but I kind of passed over VB and learned Java and .Net. Are there any good hints/sites/books on whats going on in VB from a C#-ers perspective? Like, I can see the Project is kind of like a namespace and assembly, Modules are a little bit like static methods and class modules are like classes... That sort of thing... (Before you ask, yes, Im only doing it for the money)
Thu 20 Mar | Duncan Smart | VB.NET Books question asked recently on the .NET Questions board: http://discuss.fogcreek.com/dotnetquestions/?cmd=show&ixPost=1273
Thu 20 Mar | Slumming IT | Sorry, I missed out something important: It's VB 6. I guess I could read a VB.Net book from back to front though!
Thu 20 Mar | ODN | You may have some luck with Francesco Balena's 'Programming Visual Basic .NET' book which includes the entire contents of his VB 6 book on CD. He frequently points out the diffferences between VB 6 and VB.NET, with references to content from the VB 6 book. Your best bet is probably to get a book such as Dan Appleman's 'Moving to VB.NET' and read it backwards. :-)
Fri 21 Mar | Chris Tavares | Your best bet is to simply forget .NET, and treat VB6 as it's own thing. You've got programming experience, so picking up the VB6ism's won't be TOO bad. Just grab any number of intro to VB6 books (if you can't find any, try http://www.powells.com ) and go to town.
The language of functional specs | Thu 20 Mar | Robin  Schoener
Hello, Joel, I speak French, Spanish, and Portuguese fluently, and used to speak Hebrew and Arabic fairly, but could never bring myself to become fluent in business or tech jargon. Your article on the way functional specs should be written really made me enthusiastic. Finally - someone else who likes to speak English in a technical setting! Chapter 8 of Talking Power by linguist Robin Lakoff (professor and, I believe, mentor of best-selling author and linguist Deborah Tannen) addresses the same issue in the setting of academe. It drives me crazy when people deliberately use language to prevent comprehension while pretending they are trying to bring it about. I’ve quickly read a couple of other articles - why programmers should not report to program managers, about compensation, etc. I like the way you thinnk! Yours, Robin S.
Thu 20 Mar | Prakash S | ' It drives me crazy when people deliberately use language to prevent comprehension while pretending they are trying to bring it about. ' Most research papers I read are this way, and the funny thing is one of my profs (this guy is one of the guru's of Data Mining - his paper was the basis for Sergey & Larry's course in Stanford) - jokingly/ seriously said that it is done on purpose - to make it look like it has more substance than it really does. It is one of those things with academia...Sigh!
Thu 20 Mar | Mike Swieton | A counterpoint to that: while most of a spec I recently wrote was pretty clear, I had a few things where the wording was rather awkward in an attempt to be exactly correct. My copy of Knuth's TAOCP lapses into this a lot. Much of it is fairly readable (given how much he's covering, at least), but the definitions and math are dense. Sure, they mean exactly and only what is intended, and no other interpretation is possible... but it's still dense as a brick wall 8-}
Thu 20 Mar | Brent P. Newhall | This shows why technical writing is *hard*.
Fri 21 Mar | Andres | Before writing his doctoral thesis, Isaac Asimov wrote a fake research paper about a fictional substance that would disolve before the solvent even touch it. He felt that after a few years trying to write well, he needed some practice on the bad writing required in academia. By the way, it is very funny
Fri 21 Mar | Just me (Sir to you) | Language in specialised areas is often unitelligable to the outsider precisely because it tries to be more clear to the specialist. We make disctictions between HTML jockeys, scripters, programmers, analysts, architects, DBA, administrators, testers, hardware engineers .... while the rest of the world just gives us a blank look talks about 'yeah, guys that do computers'. The same thing holds for academic subjects. It is true however that sometimes in academia language is used for devious obfuscation. This is often not even targetted to the layman, but mostly to the peer group. Very weak and unsubstantial models are served up in inpenetrable formalizations. This sadly works because no reviewer has the time to eat his way through the cloth, and so the work gets accepted, published and forgotten, it's only contribution being that of bulking up the publication record of the author. A second case where I have often met this is to rehash an old subject once more. Rename all the concepts and relations in the models, and suddenly everything old is new again. The main target of this is the funding agencies. 'We can't get money for Good Old Fashioned AI, since someone else has already done it 20 years ago and limitations of this approach have been exposed by others. Hmmm ... let's call it the Semantic Web then ...'
Fri 21 Mar | Deepak Shenoy | For truly obfuscated language, here's a guide: http://www.webenglishteacher.com/text/old&new.txt
Commenting Code | Wed 19 Mar | Dave B.
Ive been working on an application that includes comments such as, This line causes some problems and Theres a bug here... somewhere and Have to come back to this. Suffice it to say that these are the only comments in the code. At any rate, I was wondering if anyone had come across some interesting comments in the code they were working on. I am also interested in hearing peoples - code commenting - habits. Mine arent the greatest, but Im improving. I usually write a whole routine and then go back and comment the portions I feel necessary (which sometimes isnt much). I know, its backwards from textbook, but old habits are hard to break eh?
Wed 19 Mar | Norrick | I always put a header at the top of a function that describes what the function will do in 1), 2) 3) format. Then I add comments before each block of code within the function, starting with a repeat of the 1), 2) or 3) description from the header, plus any additional clarification that is needed. It sounds worse than it really is.
Wed 19 Mar | Nat Ersoz | // drunk now, fix later.
Wed 19 Mar | Nat Ersoz | I only comment parts of code which are not intuitive. Other than that, I neve use function headers, and only use short file headers with a filename (nice for printing) and copyright. Big comments, when they merely state the obvious are incredibly annoying. specially stuff like: /*************************/ * function: foo() * parameters: int x, int y, int z * Description: transforms x, y, z with the foo function /*************************/ int foo( int x, int y, int z ) { ... I come across this kind of crap all the time in our vendor supplied code. 5 lines of wasted space in my editor. --delete--
Wed 19 Mar | Steven C. | My personal favorites: #if HOST==WIN32 /* then you should shoot yourself in the head */ /* diddle things to screw up bandits */ // Ignore failure, it would be too much to deal with
Wed 19 Mar | Steven Tyler | Yeah, I worked on code that had //FIXME blah blah blah... littered throughout the code. Problem is some of the comments were over a year old and problems never fixed! Take the time to fix the problem instead of leaving half done work.
Wed 19 Mar | Mike Swieton | I comment rather sparsely. If something is confusing, I comment it. I try to keep javadocing my current project, though I'm not so great about it. I just like having a linked web page with all my API on it. I use FIXME's, but only on things that are obvious what I should fix. I would like to see a folding mode for vim that can fold comments in and out.
Wed 19 Mar | Natalie Ng | If you program in Java, IntelliJ's IDEA supports folding of javadocs, import statements and functions. I am not a big fan of IDE and tools but once I started using it, I can't go back. (before IDEA, I used EditPlus and the command line to do most of my development).
Wed 19 Mar | Lou Brothers | As a COBOL coder (yikes, and I'm in my early 20s!) I find most comments to be unnecessary, but I still put a header in at the top of every function. When I sit down to code I draft a spec and plan all the functions I'll need, then I put in stubs, document the stubs, and call it a day. The next day I fill in the code, which is relatively trivial at that point considering how most COBOL code follows naturally straight from the comments/stub description. And if my stubs and comments don't make sense to my decaffinated mind at 8am then they aren't sufficient and need to be fleshed out more.
Wed 19 Mar | Joel Goodwin | I tend to be verbose with my comments. Functions are described in terms of purpose, parameter values and descriptions (plus input or output if I can't avoid it) plus return values. Certain variables assignments and declarations are explained because it won't be obvious without knowledge of a great deal of context. Comments are easier to read and more handy than technical documents which never get updated anyhow. I think the better a program is structured, the easier it is comment - so very bad programs tend to have sparse comments. Just thinking about commenting can point out how wrong a certain sequence or arrangement is. Although sometimes I receive a little criticism on the verbosity, I've never got a complaint from anyone who had to pick up my code. Handovers have been smooth, although perhaps I'm just a masterly skilled programmer =) Commenting is an art not a science and the trouble is you rarely get feedback. One of the main reasons they are there is to help out other programmers when you're not there - which is usually when people want to curse you for bad commenting...
Thu 20 Mar | Matt Lee | I once was debugging some code and saw something to this effect. /* Dont touch this code, it is teetering on the edge. */
Thu 20 Mar | Brad (dotnetguy.techieswithcats.com) | The only two types of comments that I use regularly are XML comments for generating documentation (C#) and TODO markers for things that need to be finished (which, shockingly, I do actually get back to). I'm firmly entrenched in the camp that says that 99% of the time, when you're tempted to comment your code, you should be refactoring it instead.
Thu 20 Mar | Joel Goodwin | SQL is in another class altogether. I despair over sparse comments in SQL, which is generally difficult to write neatly. Not helpful: /* get data */ /* update main table */ I'm happier if people can comment and organise sections of join criteria, which are usually the most difficult problem I have faced when reading SQL. I've had a far worse time reading SQL embedded in a series of stored procedures than I've had reading uncommented C code.
Thu 20 Mar | Malcolm | The most useful comments to me are those that capture information that can't be gleaned from the code. Given enough time I can figure out _what_ the code does. I want to know 2 things: 1) Why the code is how it is. 'I used sockets instead of pipes here because...' or 'I considered using a b+ tree here, but chose this instead because....'. 2) What pitfalls should I avoid 'If you extend this function to support multi-mon, be sure to consider...' or 'every time this function is changed, feature foo breaks. Beware!' As a guide, consider what you'd tell someone who's taking over your code. Would you tell them 'This function takes two parameters' or 'wow, this function was a pain to write...I tried this, but then that broke feature X....'? Color commentary is what I want. I can handle the play-by-play.
Thu 20 Mar | Deepak Shenoy | I tend to write complicated functions by writing, in plain english, a set of steps I intend to do. Then I comment each step, and below this comment I write the code necessary for that step. It's quite difficult to manage comments - during maintenance one might change code and not bother about the comments...to the extent that the comment is plain wrong. So I try to make my code readable instead - use Camel case, write descriptive function names, try splitting statements into sub parts that make more sense. Code complete by Steve McConnell (?) has some interesting tips. Commented code is sometimes an issue - you tend to comment code while testing and write working code after it. Commented code looks like it can be removed without any problem - but it can be very helpful to the next person maintaining the code. Rule of thumb: If commented code needs to stay for maintence reasons, surround the code with a plain English comment giving a reason why. For ex. in one place I had to override a procedure and NOT call the inherited one, because the descendant did something funny. So the code went: procedure TagClass.Something; begin // DO NOT DELETE comments below. AND DO NOT DELETE // THIS PROCEDURE // inherited; // do not call inherited. It does end;
Thu 20 Mar | Steve C. | I probably overcomment, but the product I work on is fairly large and I don't have more than a working knowledge of most of it, so when I have to go and fix a bug in code that is currently unowned (and which I probably won't be responsible for) I tend to be verbose in describing what I'm doing etc. Of course, I also make sure to mention the specific bug # that I'm fixing near any code which fixes it, so later maintainers can easily see if something was put there for a reason. In code I own and/or am newly generating, I like to do a comment block ahead of every function, generally with a single line description. Often, my function names would be adequate, but to satisfy my stylistic desires, I prefer to have a comment block in front of every function. I then tend to only comment as necessary -- to explain things which aren't immediately obvious, for instance, so that when I come back in 6 months I can immediately understand the purpose of this complicated string-twiddling loop.
Thu 20 Mar | Juha | Sorry, can't resist the classic http://kerneltrap.org/node.php?id=542
Thu 20 Mar | Joel Goodwin | I'd say my experience is in line with Steve C. I generally work on large projects during which I see lots of code that I am completely unfamiliar with - a bunch of descriptive comments can help you out. Sure I could work out the code eventually, but a few comments which take seconds to write could save me a couple of hours working out how the Zooblargh function actually Zooblarghs. My commenting style is based on what I'd like to see in other people's code. I'd also argue that maintaining comments should be part of maintaining code. They should grow and adapt as the program does.
Thu 20 Mar | Nice | surely the classic is: using namespace std; // so sue me Scott Mayers wasn't it?
Thu 20 Mar | David Burke | My favourite was * Hard coded so I can get home for Christmas * Fix in New Year Needless to say this comment and the code with the hard-coded value stayed untouched for years. I think my second favourite was * Note, this code should never be executed And I did once write a comment myself which said * Sorry this is a kludge But I did eventually tidy up the code and remove the comment, although only after someone asked me what a kludge was.
Thu 20 Mar | only wimps use comments....real programmers remember it all for ever | Ive always found that the comments that are most useful are those that explain why code does what it does, and what else was tried. Code that says *what* the code does is just embarrassing....like the idea of a comment that documents what parameters a function takes...I can *see* what parameters te parameter takes, and what it returns. I like to understand why a copyfile function first clears the current graphport, or why a drawing function ends by writing to a file. this type of code: bool sendPrivateDataHome(char* someCharPointer, int y) { // function takes a char* and an int in that order // and returns a boolean value } drives me mad....comments should assume that the next reader can understand code, but needs to know why things that are slightly different to what may be expected are done that way.
Thu 20 Mar | | Re FIXME 'Take the time to fix the problem instead of leaving half done work.' That's okay if everything else is in place and working that needs to be in place and working in order to fix it. Often however whatever it is you want to fix is actually not possible until someone else has fixed their mistakes. And if you are waiting for Microsoft to fix the MFC for example then you might as well just shoot yourself.
Thu 20 Mar | Ros | I'm used to write a simple description of the part to do before coding. And then it's just 'fill the blanks'
Thu 20 Mar | Stephen Jones | The worst comments appear to be in the 'Learn VB' textbooks. Here are two examples from Sams and Microsoft Press Pr Ready = True ' User pressed OK so return true and ' Open the PaymentHistory form and set its filter. DoCnd.OpenForm 'PaymentHistory', , , 'SubscriberID= ' & Forms!Subscribers!SubscriberID The O'Reilly book on Access programming is a lilttle better in that it tends to use less comments and put the comments for the whole sub at the top so you get a quick overview, but still can produce beauties such as ' Declare Static Boolean Variable Static NotFirstTime As Boolean My Sybex Access VBA manual does not comment any code at all, which if the above examples are anything to go by at least saves paper and ink, but some of you may be getting an inkling as to why so much of the VB code you see is uncommented. Us amataeur VBA programmers aren't naturally brain dead; we've gone through a long process of acclimatization!
Thu 20 Mar | treefrog | I work on a medium sized (70K line) C++ project. We use literate programming to aid us - we automatically generate documentation from doxygen. Our 'house style' is that header files should be commented using doxygen markups in comments as completely as possible. The source (.cpp) files then only contain comments pertinant to the code (not Doxygen markups). Generally this means that within methods, each code block has a praece'd explanation (what it is doing), together with any elucidation of why or how it should be done. The only additional markup we use is // NOTE: ... This is so we can grep the text for any outstanding issues easily. For example: /* Create a set of actions on receiving the measurement report (adds /deletes). Actions will then be added to the lists of pending adds or deletes. We won't start executing deletes until all the adds have been completed, because we want to avoid emptying the active set. NOTE : Jim thinks the standard may have altered - check with the architects. */ It is very true that 'good code documents itself', in that it is clear, well written, and easy to follow. However, not everyone who reads the code is a developer. On our project, we are amixture of simulation specialists (the main developers) and systems engineers (not C++ folks). Putting more general comments in the code means that they can more easily follow the code if they need to look at it, which they do quite regularly. For example there may be some discussion on precisely how some feature should be implemented. They don't need to understand the detail of the sode, but they do need to follow the algorithms that are being used. Hope this helps The reason we use paece'd explanations
Thu 20 Mar | Andy Frennick | I work with one guy who comments just about every line of code he writes. Every single line. It is BEYOND annoying. Oh, and he doesn't put any space between things to make it easier to read. Even things like try/catch blocks get the helpful comments '// TRY.' and '// CATCH.' every single time.
Thu 20 Mar | JP | My favourite comment is probably: # gerbal variables (eek) What I usually do is write comments as a summary for each block of code. That way someone else can get a good feel for what the code does without having to read it. And more importantly, it means they can identify a particular area they're interested in without having to read the entire sodding file....
Thu 20 Mar | Matt H. | //Here be dragons ... and /*Magic*/ and /*Deep Magic*/ regards,
Thu 20 Mar | treefrog | and of course // left of witchcraft
Thu 20 Mar | apw | first day of my first job....browsing through the code and see this // Thou shall not use private variables a little farther down way off page (around col 200) was a note he left to call his girlfriend, phone number and all :) the author of this is no longer an employee.....
Thu 20 Mar | valraven | Comments are to answer and questions has or should have. You can answer many questions via good name selection and clear code, but you can't answer a good portion of them that way. Think to yourself on every line what questions you would have about the code? Why are you doing it this way? What would happen if you did it a different way?
Thu 20 Mar | Bruce Perry | About two years ago, I commented out a block of code while working on a consulting project. I left the following comment along with the code. // They think they don't want this code, but they will! About a year ago, I got an IM from a developer working on the project. He had just uncommented that block of code and was laughing his head off. It's nice to be right. Then there was the English major I worked with back in college. His comments were rather like short stories interspersed with code. Stuff along the lines of // The golden dragon rises on wings of flame to greet the // dawn, and now we proceed to find the next node in the // tree only much much better. I could have read his comments for hours.
Thu 20 Mar | Matt H. | I once stuck the entire 'You're not my father' scene from The Empire Strikes back into some C code. After I left, some folks found it. It was pretty funny ....
Thu 20 Mar | Thomas | Like some others have posted, the 'what' is in the code, but the 'why' is not. I document things like: - design decisions - thoughts and ideas on future changes (added features, refactorings...) - things you should be aware of when calling/using the code (usage idioms, non-obvious implications of calling certain methods) - why I made a certain change If the code is complex enough I'll also put together a brief, high-level 'how it works' comment. -Thomas
Thu 20 Mar | Colin | I guy I used to work with was into his star teck and sci-fi. He used to make the most simple code unreadable by naming variables after characters and the like. Made it almost impossible to know what was going on when you cant remember what intWarpFieldStrength of dblGoblinFactor is really counting. One SQL proc he wrote returned 666 if it tried to do a divide by zero. 'Why?', we asked. 'Becase thats the number of the beast.' hmm
Thu 20 Mar | Paul B | And please, do not put your name or initials in the code without your phone number :-) Actually, this functionality is best left to PVCS,sccs,rcs, cvs or whatever code management system you should have.
Thu 20 Mar | Jimmy Chonga | I was responsible for a large amount of 'legacy' code at one organization, and as new employees were hired some of the new arrivals took issue with my historical commenting style, and I laugh because it was similar to some of the ones given at the beginning of this discussion as 'bad examples' -I never comment what is obvious to any half-competent programmer: Comments that describe the basic constructs of programming are comment-masturbation: They're not for anyone else's good, but rather for someone to say 'look, I comment good don't I!'. >95% of 'good' comments are complete and utter typarrhea. -I _do_ comment things like '// TODO: This is a nasty hack' or '// TODO: This needs to be thoroughly evaluated for completeness'. I laugh when I read people say 'Well then fix it then!', as if programming were so straightforward and trivial, and timelines could be so grandly accommodating. As Joel said in one of his articles: This is anthropological GOLD that you should savour, not criticize, and any firm that thwarts comments of that sort is a firm with its head thoroughly planted in the sand. There was one case where a file transfer routine would abort if a particular set of characters came in, and I wrote in the code '// TODO : What happens if a file just happens to have this particular sequence of characters?'. It came in handy when a particular chance file struct the abort paydirt several months later, and a big lightbulb appeared over the next programmer's head.
Thu 20 Mar | ! | /* Holy Bad coding style Batman! */ Personal favorite found in living code.
Thu 20 Mar | Rob Daugherty | while (something) { ;;;;; ;;;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;;;;; ;;;; ; ; ;;;; ;;;;; ; ; ; ; ; ;;;; ;; ; ; ; ; ; ; ; ;; ; ; ; ; ; ; ; ; ; ;;;;;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;;; ; ;; ; ; ; ; ; ; ; ;; ; ; ; ; ;;;; ; ; ; ; ; ; ;;;; }
Thu 20 Mar | Rob Daugherty | Dang. Life was better before proportional fonts.
Thu 20 Mar | S. Gwizdak | /* * Abandon all hope, ye who enter here */
Thu 20 Mar | Punter | (Sys V source): /* you are not intended to understand this */
Fri 21 Mar | Stephen Jones | Paste Rob's Daugherty's comma message into Notepad
Fri 21 Mar | Christian A. Riis | How not to do it, but still a funny read: http://mindprod.com/unmaindocumentation.html -- Christian
Fri 21 Mar | agnul | Have a look at http://www.cloanto.com/t-shirts/ It doesn't seem they sell those shirts tough.
Fri 21 Mar | Barry Sperling | I've been working on-and-off for 3 years now on a project on which I am the main programmer. I find my comments from 2 and 3 years before absolutely necessary since I've completely forgotten the points of the algorithms, so more than commenting for the 'next' maintainer, I comment for myself, too! One of the best things I include at the top of functions is a list of those that CALL it. If I need to change the parameter list, when updating, it is very helpful and much quicker than going thru large flowcharts. This also suggests which test cases to try.
Fri 21 Mar | Ed the Millwright | Barry, I find that commenting for my future self is very important too. Also, like you I find it helpful to list some sample functions that call a function. I don't keep it comprehensive nor use it as a directory (that's what Batch Search is for), but as a quick reference to the context in which the function is used.
Fri 21 Mar | Steven C. | *cough* Or Barry you could get a debugger than shows you the cross reference information for various symbols (such as procedures, variables, classes, etc) so that you don't have to use grep, flow charts, or possibly-out-of-date comments. But then, I'm biased. :)
Fri 21 Mar | Colonel Angus | /* This is VERY hacky... MUST FIX before alpha! */ Found in code written 10-years ago which is still part of the core libraries for one of today's most popular programs. I better not say which company I work for. :)
API vs .NET | Wed 19 Mar | HeyCoolAid!
Im am currently learning C++, but the class Im taking only deals with console applications. Eventually Ill need to learn about implementation of user interfaces. I went to msdn and starting looking at info about Win32 API (I was advised to steer clear of MFC), but there was so much information there, that I thought a book might help. A search at Amazon brought up tons of stuff but what stood out to me the most was the whole Win32 API vs .NET thing. I guess there is no longer a Win32 API, but .NET has taken its place? There was a whole book dedicated to work-arounds for stuff thats missing from .NET that used to be in Win32 API. Ack... Im confused. Theres simply too much info to try to wade through when you dont know what youre looking for! Can anyone give me a simple explanation of the two, and why/how they are different?
Wed 19 Mar | Philo | The Windows API are the 'handles' that Windows provides which software applications can take hold of to manipulate the things Windows does (display, file system, network, printers, etc) .Net is an application programming language that 'hides' the API's from the application developer, doing the work for the developer. Since the API landscape is so vast, it has missed some spots. [grin]. However I've also found that because .Net has so radically changed the model for developers, often you can't find what's staring you in the face - looking for it in the same old place comes up empty, so 'they must have left it out' Finally, if you want to learn C++ development in Windows you want to look into Templates, ATL, and WTL. However doing so without the fundamentals you're being taught in CLI land may lead to injury. ;-) Philo
Wed 19 Mar | HeyCoolAid! | But can API still be used... or do you have to use .NET?
Wed 19 Mar | Benji Smith | You can definitely still use the win32 API. If they ever disabled it, 95% percent of windows software would suddenly stop working.
Wed 19 Mar | anon | what do you want to do with the stuff you learn?
Wed 19 Mar | HeyCoolAid! | What do I want to do? Well, I'm currently a multimedia programmer (Macromedia Director / Lingo) transitioning to C++. I have written quite an extensive user application in Lingo (by myself... took a long time). Future versions of the software, as well as other apps, will need more flexibility in development... hence a much lower level language. That's why I'm learning C++. Version 3.0 will be built by myself and a very experienced C++ programmer. I don't want to come into the deal with an empty tool box. The more things I know how to implement, the better. I would at least like to speak his same language and make myself understood when it comes time to design and build the system. User interface plays a very important part in the app(s) we're going to build.
Wed 19 Mar | HeyCoolAid! | Oh and... >You can definitely still use the win32 API. ...but for how long? How soon will support for this end? Would I be better off going with .NET since I haven't learned and API stuff yet? Can I avoid going with .NET since I'm programming in Visual C++ .NET?
Wed 19 Mar | Brad (dotnetguy.techieswithcats.com) | If Microsoft were to approach a completely managed operating system, no doubt they would layer Win32 on top of it for backward compatibility. Win32 APIs will be supported for what is essentially the indefinite future.
Wed 19 Mar | Frederik Slijkerman | Isn't Windows NT already a managed operating system, in a way?
Wed 19 Mar | Albert D. Kallal | Is OOP more then just some Fluffy GOOP? While traditional VB is not considered real OOP language, it does offer class objects. I am not convinced that lack of inheritance was a big deal for most applications that I have developed. However, VB.net really will force all us VB developers to jump on the OOP bandwagon. Of course, this really is a requirement due much to the whole .NET framework class library. There is no doubt that this library is the key to the whole .net thing. Without a OOP language, then one cannot really reap the benefits of that framework library. I suppose without inheritance it could be just a real nice starting library, and we could always have been forced to wrap these base library objects into our own objects. However, this would not bode well for future extensions, and not allow us to create our own objects for windows forms etc that properly inherent all the nice .net stuff to come. Ok, so, now one has to jump on this OOP goop. I actually think that the whole frame work thing and getting rid of having to use the *messy* win32 api is really a fabulous idea. So, while one can still use the win32 api, I can’t really see why one would? Does this make sense? Am I missing something big here? Future OOP programmer Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com
Wed 19 Mar | Colin Newell | Attempting to learn to program in win32 initially is not fun. In fact I would describe it as painful. You are far better off learning something like .NET and then picking up peices of Win32 that you might need to improve your programs. Knowing about win32 is still definately advantageous at present - although I'm guessing MS is going to try to move away from it completely, eventually. This does not mean that you want to program complete programs in it. It is the slowest and most complex way to construct a windows program. Of course it does give you the most control, but unless your programs are going to be really inventive with their use of the ui you will find most of this a waste of time. Using .NET on the other hand will allow you to create programs very quickly and a lot more easily by comparison. It is also the intended and supported route Microsoft are providing us so I would suggest you will find it a lot easier.
Wed 19 Mar | HeyCoolAid! | I guess... unless they pull an Apple-like stunt. There was a thread going here a few days ago which contained a link to an article. Can't remember now what the thread was, but that excruciatingly long article was all about M$ and what they are planning for their future. One of the things it implied was that an OSX-non-backwards-compatible type stunt was highly likely.
Wed 19 Mar | HeyCoolAid! | Oops... my comment was in reference to: >Win32 APIs will be supported for what is essentially the indefinite future.
Wed 19 Mar | ODN | Use the best tool for the job. In most cases, this will probably be .NET. The do a good job of wrapping the Win32 API in a way that makes it more accessible than it originally was. I'm a VB.NET guy, but for your purposes I would recommend you stick to C#, not only because the guy you're working with comes from a C++ background, but because C# supports unsafe code which is necessary to use some of the Win32 APIs that aren't wrapped by the .NET Framework. From what I have seen, .NET and native Win32 APIs work together fairly well. For example, GDI+ is the managed wrapper around the GDI API. When you need to do a BitBlt'ing graphics operation (which GDI+ doesn't wrap), you just drop into unmanaged code to do your pointer-based operations (using the 'unsafe' keyword), and then continue in a managed context for the rest. For many API functions you can stay entirely in managed code by using COM Interop. The next version of the .NET Framework will continue to provide managed wrappers for more and more of these APIs, such as DPAPI. Eventually I would assume they could do away with many of the original APIs and implement them entirely through managed code. The safest (and quickest) path is to go with .NET managed libraries and only drop down to raw API calls where absolutely necessary.
Wed 19 Mar | T. Norman | Forget MFC and the Win32 API for user interface work. You can write your low-level non-GUI code in C++, and use another toolkit such as wxWindows or Qt for the GUI. Or even use Delphi or VB, which can both talk to libraries written in C++.
Thu 20 Mar | Brad (dotnetguy.techieswithcats.com) | Frederick, no, NT is not a 'managed' operating system in the sense of the word that describes the .NET platform.
Thu 20 Mar | Frederik Slijkerman | It was more a philosophical question. NT can be seen as managed because it shields applications from hardware in much the same way .NET shields an application from accessing memory directly.
Thu 20 Mar | Mark Hoffman | The Win API isn't going away. It's the core of the operating system. While you will probably never write an application directly with the Win API, it can be quite helpful to understand it since .NET and MFC are both built upon the Win API. Albert, there are still places where using the Win API is still necessary and the 'fluffy goop' just won't cut it. I've been working on a server application written in C++ using Windows IO Completion Ports. No MFC, certainly no .NET, just Windows API calls. And that's really about the only way to do this. That being said....I would heartily recommened someone learning .NET. Just don't be afraid to peek under the hood every so often to learn more about what's really going on.
Thu 20 Mar | Bored Bystander | Marketing rationales aside, I think that MS dumping the Win32 API or making it inaccessible or demoting it to the level of a 'legacy' interface is a horrible idea. It's just never appeared to me to be necessary. I wish someone would flame me with compelling reasons why .Net is The Second Coming Of Computer Languages That Makes Everything We Did Before Look 'Retarded'. The '.Net Everywhere' mentality seems to consist in the notion that a high level P-code is sufficient for all application programming needs. Fine. (UCSD Pascal, anyone? Like .Net is really a new idea.) But if you need to do something not handled directly by .Net, you drop into unmanaged code, and you must still code to Win32 to do that specialized function. So the universality of Win32 in pre-.Net apps is replaced by a higher level language supplemented by a lower level language - like C++ calling assembler... which is never all that much fun. Programmers in the mainstream - which means NOT 'elite' and very sharp product developers as found on this list, rather the people that write VB or ASP code for their vertical market employers, or who develop internal applications - have a hard enough time mastering good, basic programming skills, while overbearing employers who only care about manufacturing grommets or whatever other stupid blue collar crap are hovering over their heads. We don't all work in tech friendly environments and areas with sharp, supportive co-workers. (I don't think I've run into anyone at clients in the last 5 years who watched *any* Star Trek.... :-( ) So .Net churns the programming tools landscape with yet another unnecessary paradigm shift that makes the creation of complete applications just that much more distant from the competencies of 'B' student or non college educated average developers. I recall the first major paradigm shift in Windows development ten or so years ago - Windows 16 bit to Win32. That was painful but was necessary to buy a quantum more stability in delivered products. The concurrent shift in tools taking place at that time from procedural languages to OOP was highly painful as well but brought great productivity gains and allowed bigger and better programs to be structured. The change now occurring from API to .Net appears to be just as universal but with a negative twist - there's NOTHING being created as a new capability that an end user will see, understand and appreciate as a unique accompanying advantage to newer applications. Is there? Someone PLEASE tell me if this is not the case. As far as 'safe' and 'managed' programming, there's always been VB. I see no accompanying advantage to .Net except that it gives MS the license to obsolete everyone's skills and force feed a new OS to the masses. It pisses me off that a skill set in something as rich and flexible as the Win32 API is being defined down as legacy. Yeah, because I know it, so that makes my opinion tainted I guess. But also because it's fast, crisp, can be debugged by a mere mortal w/o a layer of run time crap in the way, and it works already.
Thu 20 Mar | Brad (dotnetguy.techieswithcats.com) | I see more productivity gains from .NET than any other paradigm shift I've ever made. Microsoft will never kill Win32 entirely, so continue on in what you were doing. If you feel like your time is best spent with pointer manipulation and worry about who's going to free something, and how it was created, then you're more than welcome to it. Like MFC killed off most 'pure Win32', so too will .NET kill off most 'unmanaged C++'. And hey, I've used C++ for more than a decade. I'm pleased as punch not to have to write it any more. Anybody who thinks .NET is anything like the old VB environment is clearly not at all familiar with either.
Thu 20 Mar | Bored Bystander | Brad: On productivity gains - fair enough. But I would like to ask you: 1) Do you believe that mastery of .Net only will be sufficient for a commercial software developer? Or will the developer have to not only know .Net but also the legacy languages to which they must interface? 2) Forget the productivity gains and niceness for a second. Most users, and even many clients and employers just dont' care if the programming enviroment is nicer. It's the strong exception that anyone who uses your stuff or pays the bills wants you to have more fun programming. So, will the end user see obvious benefits with .Net based software? 3) Is .Net solid enough to compete with a (theoretically perfect) compiled program in terms of speed and stability? And to eliminate the rare and occasional need to single step through assembler or just above machine language to pin down a problem? The point is, I don't have a problem with .Net if it's all encompassing, reliable, and supports at least the same level of software experience that current tools do. I do have a problem with it if it gets in one's way to give customers what they want. I'm unclear that .Net has been established as a good thing that willl be apparent to unwashed end users. Worst case, .Net runtime gives SW developers yet another (actually good) reason to blame the ghost in the machine for customer's deployment problems...
Thu 20 Mar | Chris Tavares | I'n not Brad, but I'd like to chime in here anyway. And I expect he'll agree with what I say here: 1) Is mastery of just .NET sufficient? I would argue the answer to this question is no. However, I would also argue that only understanding VB, or MFC, or C++ is insufficient. In general, to be a good developer, you need to understand both the tool you work with, and the layer that your tool sits on. 2) Will customers gain from increased productivity for developers? Yes. They'll get software that has fewer bugs in less time. Those bugs that do exist should be fixed faster. .NET eliminates entire CLASSES of hard crashes that happened all the time in C++. 3) Is .NET solid enough to compete with the theoretically perfect compiled program? Theoretically, yes. :-) In practice, it depends on what you're doing. The .NET runtime has been VERY solid in my experience; I've never had it crash on me. As far as dipping into assembly; I've very seldom needed to do that. Usually when I do it's because of either a memory trashing error (doesn't happen in .NET unless you're using unsafe code) or because an API is underdocumented and I don't know what it does. The latter is well handled because most of the class framework is written in .NET, and there are tools that can decompile IL into readable C#. Typically, the only way a user will know that the app was written in .NET is because the installer put the framework on their machine.
Thu 20 Mar | HeyCoolAid! | Ok, so the answer is... everybody has their own opinion, and I'd better just go out and form my own. ;)
Thu 20 Mar | Bored Bystander | Chris - You offer compelling reasons to consider .Net. But.... Here's my further opinion. Everyone seems to compare .Net languages to two somewhat crippled and individually inadequate prior languages - Visual C++, and Visual Basic. This is the argument for the benefits of .Net - that VC++ is too difficult and fussy (no argument there), and VB is not completely well suited to the needs of serious product developers with full OOP support and low level component creation capability. My answer to these strawmen arguments is that one hated, villified, ignored, PHB-managers-all-afraid-of language - Delphi. It offers ease of development similar to VB, it has a much more usable component architecture than VB or C++, and it doesn't require runtimes, either for the application or for most bolt on components. The point that nobody seems willing to understand is that poor, crippled existing tools *aren't*by themselves a good reason to dump a workable API in favor of a bloated framework with acres of new classes to learn. If the tools suck, fix the damned tools. But no, that doesn't sell OSs. Developers embracing .Net languages because the current crop of Win32 MS languages are so poor, is like burning a house down in order to make it easier to remodel the bathroom. Here Mr. Handyman, I will torch my house because you are getting roughed up trying to put in that sink. In a way I'm tilting against a windmill here. I, you, we will all eventually be compelled to learn .Net in order to stay with this industry. That doesn't mean that it's the best use of anyone's time in terms of delivering completed, working applications to users. Far from it, in fact. Knowns are always preferable to unknowns in this game. My $0.02.
Thu 20 Mar | Brad (dotnetguy.techieswithcats.com) | 1. Is mastery of .NET sufficient? I don't hire based on the tools people like, I hire based on their ability to adapt and solve problems. If you come to work for us, that will mean .NET -- right now. What will I be using in 5 years? Whatever lets me get my job done quickly and accurately. 2. Will the end user see benefits? Definitely. The get more feature complete deliverables, which are more stable, and they get them faster. 3. Is .NET solid? Will I single step through assembler? In my experience, it's miles better in terms of performance and stability for web development vs. ASP, and speed competitive with compiled languages. This will become even more true as the JIT gets more advanced, generating code that's CPU specific and hot-spotting. As to whether you'll single-step through assembler, I haven't yet, and I've been using it for more 2 years, though an alpha and multiple betas.
Thu 20 Mar | Brad (dotnetguy.techieswithcats.com) | I don't see the argument of '.NET == more OS sales'. .NET runs on all supported Win32 OSes, which means 98, Me, NT4, 2000, and XP. Can you please clarify what you mean?
Thu 20 Mar | Chris Tavares | Sometimes the new API's are a significant improvement on the old ones, though. For example, have you looked at the Windows crypto API's at all? They're a nightmare from C. However, in the .NET class library it's a simple process to create an object and hand it a string. It's simple and easy to use and I don't need a whole lot of brain power to use it. As far as Delphi - I've heard lots of people say that Delphi is great. For me, I don't use it because I don't like Pascal. I used it back in college. Heck, I used it in high school. The syntax was wordy, and picky, and I never did figure out the semicolon rules. I was very happy to drop Pascal for C. So now we have Object Pascal. From what I can tell, the underlying object model of Object Pascal is fairly similar to what's in C++. If I'm going to do that, I'll just use C++. Yes, the Delphi tools and libraries are supposed to be fantastic; I'll take your word for it. I don't want to deal with Pascal to use them. I don't WANT a better C++. I don't want just better libraries. I want an environment that does more of the heavy lifting for me. For example - does Delphi have code access security? Can I write an app that allows plugins, and lock down plugins from the host so they can't do what I don't allow them to? Does Delphi have built in automatic object serialization, with customization if I want it? Reflection? Contexts? There's a lot to the CLR (common language runtime, the 'virtual machine' that forms the basis of .NET) that you simply can't get without going to some kind of managed environment.
Thu 20 Mar | Brad (dotnetguy.techieswithcats.com) | A lot of the libraries in .NET actually look like Delphi, because they share a common vision. There are certain key technologies that .NET brings that are really hard to understand how valuable they are until you use them. Aside from the obvious garbage collection (elimination of double frees, cycles, some classes of leaks, etc.), it's hard to imagine how valuable things like Object.ToString() and Reflection are until you really leverage them.
Thu 20 Mar | Frederik Slijkerman | Chris, there's also C++ Builder from Borland, which supplies the same libraries, but using C++ instead of Object Pascal. The strength of Delphi/C++ Builder is that you can create user interfaces and database apps quickly with reusable components. Unlike VB, the components are extensible through inheritance, and you can easily write your own. Basically, Delphi offers a component/control framework that resembles the .NET environment in many ways. And about the semicolon rules in Pascal: put a semicolon after each statement, *except* before ELSE. And don't tell me semicolon placement in C++ is straightforward. :-)
Fri 21 Mar | Chris Tavares | As I said above: I don't want a better C++. C++ builder doesn't offer enough. I want reflection. I want transparent proxies. I want code access security. I want an environment which allows me to manipulate types as objects at runtime. I can get all of that with .NET (or Java, or Python) for free. I have to pay for the priviledge of using C++ builder. Maybe my perspective would be different if I mainly wrote database apps. I don't.
Remember "don't give users MS Access"? | Wed 19 Mar | Philo
We had just started requirements analysis on replacing a 20 year old mainframe application when I read the rant on here about the rabbits warren of personal Access applications someone had discovered in a hospital. Prompted by that discussion, I had our project manager put out the call to our users - please forward to us any custom applications or spreadsheets youve developed to help you do your job around the limitations of the current system You have no idea how well this has worked! So far weve gotten about two dozen excel spreadsheets, news of four Access applications, and a ton of Word files that our prospective users are using. Talk about your easy pickins! Requirements served on a silver platter! Id heartily recommend this method for anyone approaching a large-scale project, esp. if youre replacing an existing app. Philo
Wed 19 Mar | ODN | I remember the discussion well. Glad to hear of your success! Not only are your requirements served on a silver platter, but the users are probably more than happy to talk about what they did and why they did it that way. I've found that in these kinds of situations, having in-depth discussions with the users about what they've built is invaluable for clearing up details you might overlook if all you had was their database or spreadsheet. Little semantic things like 'by the way, after we built it we reversed the meaning of that boolean field since the default value is false, and we wanted it to be true.' Their work is a great starting point for discussion because it allows them to speak about requirements in a more technically concrete manner that still feels like their native tongue to them.
Wed 19 Mar | Albert D. Kallal | There is a real nice scene from the classic move “The Great Escape” In that scene, Steve MacQueen explains how to tunnel under the fence and escape from the prison camp: …”you just dig down, and stuff the dirt behind you like a mole”…. Anyway, everyone walked away thinking wow, why did I not think of that. This is so simple as to be too good to be true! Philo, that is a dead simple idea, and a fabulous suggestion. I am filing that suggestion away in my consulting notes!! I also remember that discussion, but I did not really put that idea down into my consulting notes. Having people include word templates is a great idea also! It makes perfect sense, and is almost too easy!!! I am not sure what Yoda would say, but I am sure it would be : …”good ideas come from the good side of the force!!…” Albert D. Kallal Edmonton, Alberta Canada Kallal@msn.com
Thu 20 Mar | crusty admin | Good idea. Find out what they need, build it and then take access away.
Thu 20 Mar | . | > I am not sure what Yoda would say, but I am > sure it would be : > > …”good ideas come from the good side of the force!!…” Good ideas. Mmm. From the good side of the force they come.
Thu 20 Mar | ODN | Here's the original thread: ...another reason not to load access on user wkstn http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=28465&ixReplies=26 At first I couldn't find it and though it had been purged, but then discovered the Search box on the left.
Fri 21 Mar | tapiwa | Having gleamed your requirements from the existing systems, you might want to find out how frequently those access mdb's and templates change structure. You would be amazed how much ongoing development goes on with those babies. If you want to see XP in action, watch these users. The only reason I raise this, is that if you amalgamate all these disparate dbs into one mother-of-all systems, someone is going to have to maintain it and make all these changes that the users would have done themselves. You make this process too difficult/long, and folk with stop using your uber application because it no longer serves their needs, and will return to custom dbs/spreadsheets.
Fri 21 Mar | Stephen Jones | I suggest you must provide some easy way to produce reports. Don't leave it to the IT guys to have to design every report. Let me give you an example. We have attendance sheets where you can never see the surname of the student because they concatenate name, father's name, grandfather's name, and family name into one column so the family name is never printed. On another report the db designer changed the default to name/family name at my suggestion, but this change will have to wait until he's got the time. I'm actually converitinng the reports to XML files, and then putting the names into Access so I can massage it, but the other 140 odd lecturers are going to have to live with defective lists. Also try not to concatenate those fields but create a borderless join between the two columns. There's a guy from a Public Prosecuters departemnt on the Access newsgroups asking exactly how he can split the first name and family name so he can use Access to run a query.
OPML | Wed 19 Mar | The Real PC
Im looking for information about OPML (outline processor markup language). Im searching in google but would appreciate any hints. Im trying to use OPML for an intranet portal, rather than RSS (because RSS is a simpler format than what we need). Thanks.
Fri 21 Mar | dood | http://surfmind.com/lab/hive/about.cfm
Windows' Biggest Enemy Is NT, Not Linux | Wed 19 Mar | Just me (Sir to you)
Some rag jocks are finally waking up to what the real world (including Microsoft) has been saying for years. http://www.internetwk.com/breakingNews/showArticle.jhtml;jsessionid=SRGJLOGH4VRKSQSNDBGCKHSCJUMEKJVN?articleID=7900043 Microsofts biggest enemy is its own shadow. If they think NT4 was a good contender, Win2k must be almost invincible. Look at it this way: here you are sitting there with a few 1000 Win2K licences that are valid indefinetly. They have been paid for and are written off long time ago. You have all the inhouse knowledge for developing for this platform. It is in place and performing well. Thanks to the likes of Intel, Western Digital, ATI and a cohort of others that same Win2K licence is even doubling in performance every single year. So it is free (already paid for), we can do everything we want with it and it gets faster and faster everytime we replace a box. What is going to beat this?
Wed 19 Mar | Mitch & Murray (from downtown) | El-Correcto. Same goes for Office 2000. MS is letting almost the entire world qualify for the less expensive Office XP academic licenses just to move some boxes. Note also that Office 2000 and Windows 2000 are the last in each series that don't 'phone home' to authenticate after installation.
Wed 19 Mar |   | Threats change; so should you. NT just can't be changed as dramatically as the latest Microsoft OS, nor is it as forward-thinking. The .Net CLR is in a way like a complete security rewrite of Windows. Which one has a greater chance of weathering the unknown threats of the future? Definitely not NT... For a more quantifiable comparison of Microsoft OS's from a security standpoint, check out the relative attack surfaces of their OS's 2/3rds of the way down this page: http://msdn.microsoft.com/library/en-us/dncode/html/secure02132003.asp If it were only about cost per non-security feature then yes, Microsoft may have a problem. But the cost of potential damage in the face of constantly changing threats means they'll probably do just fine, thanks to the greater vulnerability of their older OS's.
Wed 19 Mar | Just me (Sir to you) | I agree that security updates is about the only compelling reason to upgrade. Many of these issues (such as the atttack surface etc.) can however be corrected by good management processess and some extra (less expensive since it only has to concentrate on this one issue) software. The big problem is that the current platform has become more than good enough for 99% of the businessess out there, so there is no reason to stay in the upgrade cycle. OS'less PC's, legacy 'unlimited time' licences and high quality of past offerings are the number one enemy of Microsoft. The idea of a business in a situation were they already own a good system switching voluntarily to another platform becomes almost laughable, and the real growth seems out of the market (at least in Europe/US). That is why MS has to spend billions on research to find new killer apps. They have to reinvent new growth markets, since they killed the office software market if they can't get it into a subscription only model.
Wed 19 Mar | Phibian | Incidentally, there are also many good reasons *not* to upgrade. The phoning home is one, but not the most important - it's the bugginess of the XP family that is the real killer for us(especially in Explorer and Word). For instance, moving files in Explorer, if you move your mouse off of the folder to which you are moving it (sometimes inevitable if you are rightclicking and selecting from the menu) - the file ends up going to whichever random folder the pointer is over. (Prompting a copy-only policy after one too many file was 'lost'). If you are accessing files over the Internet, the directory listing starts to refresh like a maniac (once every 2-3 seconds), meaning that you can't click on the directory or do anything. Or how about the fact that Win XP can no longer do WebDAV if authentication is enabled? And don't talk to me about random unexpected behaviours and crashes, both of which are a much greater problem in XP than Win2K for some reason. I don't know if it's just more in your face ('can we send an error report to Microsoft') or what. I'm not sure that previous 'good enough' releases are really the problem as much as the newest release(s) have apparently been slammed out the door too soon. The release cycles have also sped up in the last few years/decade, meaning that the changes between each new version are not as dramatic. Coupled with the need to show continued and increased 'growth', Microsoft is in an unenviable position - and I'm not sure it's one that leads to better quality software.
Wed 19 Mar | Philo | I'm still on Win2k and see no reason to upgrade to XP or Whistler. IMHO Win2k is 'clean' and stable, and does everything I need. Recently a manager at a client I sysadmin for was rumbling about the cost of upgrading to Windows.Net and Exchange 2003. I wrote up a two page point paper that boiled down to 'who said we're going to upgrade, and why would we want to?' Philo
Wed 19 Mar | Brad (dotnetguy.techieswithcats.com) | I disagree that there's no reason to upgrade to XP. There's one HUGE reason for LCD users: ClearType. As a guy with 5 LCD monitors (2 on one PC for me, 2 on one PC for my wife, and 1 laptop), that is reason enough to pay. Plus, there's ongoing hardware issues. As OSes become 'obsoleted', new categories of hardware devices become only supported (or only supported _well_) on new OSes. W2K is still current, so it's not really behind the curve here, but it will be eventually. W2K added things like full USB and UDF support that were missing from NT4. I suppose if your computing world stands still (same PC, no new devices), then your OS can, too. That's not likely to be the case, even with the glacial upgrade speeds of corporations (who will typically lease for 2 or 3 years, giving a 2-3 year turn-around cycle for PCs).
Wed 19 Mar | Jimmy Chonga | While from a home perspective I appreciate a lot of the changes in XP (relating primarily to digital video and imaging), and the startup time is very impressive, I will say with absolute conviction that I have not seen a _single_ user interface change in XP that is for the better, but instead it all seems to be change for the sake of change. From permissions (what the hell is with the 'type in a name without a lookup and we'll verify it for you' BS?) to the control panel, it's all just a giant leap backwards. I say this as someone who embraces change when it's an improvement, not as a crusty 'who moved my cheese?' user, but if one could bring the kernel/subsystem changes from XP to 2000 and can the UI (yes you can go to 'classic' mode, however subtle irritants persist), I would jump no that in a second.
Wed 19 Mar | Just me (Sir to you) | Oh yes, the hardware driver issue. Well, if corporates keep running W2K until 2020, will this not be a huge incentive for any hardware vendor that targets that market to keep fully compatible with W2K?
Wed 19 Mar | Stephen Jones | I run both XP (laptop and work machne)and 2000 (home desktop) and have a spare laptop that runs on W98SE 99% of the time I don't notice which OS I'm using. The 1% I do I must admit I prefer XP slightly, but certainly not enough to go to the trouble of upgradiing, even upgrade if it were free. XP does appear to be a lot more buggy, though it does recover from the application crashes, whilst the only time W2000 crashed on me I had to restore the Ghost Image. I like the fast boot up time but has anybody else found that you are often not able to do much for the first thirty seconds or so after the boot. I suspect that there are plenty of things loading that used to load before the desktop came up.
Wed 19 Mar | Ian Stallings | I feel that Win2k has finally gotten to a point where it is stable so I don't want to change. Unfortuantely they will eventually phase out support for it. But I will run it on the last service pack as far as it can go. I am looking forward to seeing .Net server in action (or whatever they call it this week).
Wed 19 Mar | dh003i | Typical MS behaviour. The simple fact is, their past products are their biggest enemy because they haven't done much of any significance. WinXP offers very little over Win2k. Certainly, in the performance category, it is just more bloat, more gloat, less real performance. The simple fact is, every new version of MS Windows has gotten more bloated than the last, thus performing worse than the last. Win98 was barely an improvement over Win95 -- perhaps a little bit faster, and no real significant UI changes. WinME was a downright slap in the face to consumers by MS: not only does WinME offer nothing over Win98, but it even loses a few things, like real-mode DOS (the only advantage of WinME I've been able to discern is faster boot-time, due to not having real-mode DOS). Then they complain that people aren't upgrading, so they come up with these lame contrited tactics to try to force people to upgrade, such as phasing out support for older products (such as Win2k), which are essentially the same support-wise as newer ones. I suppose I shouldn't be singling MS out, since all software companies try to do this. Adobe's another disgusting example. For the average user, what does acrobat 5.0 offer over acrobat 4.0? Nothing. It just takes a lot longer to load. What about Word2k over Word98? Again, nothing of any significance. Likewise with WordXP. No, take that back. They have added the particularly annoying M&M 'character' to help you out. Another slap in the face to the consumer. Apparently, in MS' mind, consumers are too dumb to go to the HELP menu, so they'll give them a little cartoon, as if they were children. It's a clear and obvious sign that MS has simply made Windows more bloated that companies wont upgrade to WinXP because of hardware-concerns. If WinXP was really 'better' than Win2k, it would run faster, take up less memory, and be more stable on the same hardware. Now, I know some are going to say, 'by that logic, the old CLI interfaces are better than modern GUIs'. Well, for people who only need CLI-interface functionality and the accompanying software, yes, it is. But that's a major exageration of the issue. We're comparing Win2k/NT and WinXP here. What, exactly, does WinXP offer that I need or want, which would justify me paying lots of money to upgrade my hardware, or just accepting inferior performance on the same hardware? I'm just a normal home-user, so I can only answer that from my own POV: the answer is nothing, which is why Win98 is still on my windows partition, not XP. This, of course, is part of the reason why I like FS and OSS software development. They don't feel compelled to add extra 'features' which I don't need just to compel me to upgrade. First concern is usually with fixing bugs, stability, performance, etc. And usually features are only added when they actually provide something that would really help most users get their work done faster. From a technical standpoint, there is ONLY one criteria to consider when asking 'what is the best program' for a particular application type: how fast it allows the user to get the user's task done. So what if MS Word 2k offers a fea new features over (say) Word 95. The vast majority of users don't use those features, for one thing. For another, MS is adding 'features' which actually hinder the user, by fighting his/her decisions. Also, the additional bloat makes programs load slower and take up more RAM, which will be an issue when the user is using several RAM-hungry programs at once. All of this translates into the user not getting his/her task done as quickly, which means less productivity, which means an unhappy user. Oh yea, the enormous amount of security holes that come with new MS products is also a non-plus. Security holes means the possibility for viruses or trojans to destroy your data. That means you have to spend valuable time dealing with the problem: purging the virus, restoring destroyed data, re-installing any programs which may have been damaged, or dealing with other nuisances. All of this means that the user is less productive, and gets less done on all of the tasks (s)he was doing. Summarily, MS had better have some rock-solid reasons for me to upgrade to their newest products, and these reasons better start out with me getting my work done faster and being more productive -- all things considered, including load-time, memory-consumption, security, stability, bugs, and other performance issues, not just the user interface and new features (most of which I probably won't use). Unless MS can show me how upgrading to their latest releases is going to help me get my work done faster overall and be more productive overall, they can go fuck themselves. They can also go fuck themselves if they have the nerve to ask me to upgrade my hardware to run their new bloated software.
Wed 19 Mar |   | potty mouth...
Wed 19 Mar | Prakash S | I wrote up a two page point paper that boiled down to 'who said we're going to upgrade, and why would we want to?' Philo, can you mail that paper to me, would be interested in the why part.
Wed 19 Mar | Benji Smith | dh003i, It's pretty silly to complain about the extra unwanted features in Windows or in MS Office and then turn around and promote OSS software as an alternative. If you take that point of view, your average linux distro is guilty of the most awful kind of bloat. I'm currently running RedHat 8.0, and, as part of the standard distro, I have 2392 files in my /usr/bin directory. There are another 87 files in my /bin directory and 165 files in /usr/bin/X11. And yet another 165 files in my /usr/X11R6/bin directory. Most of the time, I only use 10 or 20 different linux commands, and I know all of these off the top of my head. But sometimes, when I need to do something weird, I have to use apropos to find the right tool, and I have to search through the obscure descriptions of dozens or hundreds of tools. That doesn't make my work faster. Anyone who complains about the 80/20 problem in Microsoft Office and turns to linux solutions as an answer is missing the point. So is the proliferation of unix tools an example of software bloat? Why would such an insane collection of tools grow up in an environment that's purportedly unmotivated by profit, if profit-seeking is the source of all software problems? I don't know. You tell me.
Wed 19 Mar | igor | Microsoft is very much aware of this problem. Heck, they've had to extend NT's end-of-life date a couple of times already. They finally came to understand that users will not upgrade just for the sake of running latest and greatest, but instead need a compelling business reason. For MS Exchange, the penetration rate of Exchange 2000 is less than 50% of servers after 2+ years. In most cases, people running 5.5 didn't see a need to upgrade to 2000 and deal with Active Directory headaches. So for the next release of Exchange MS is putting in feature that make a huge difference to admis in terms of server requirements, managebility and user experience. I'm sure that next release of windows (probably after .NET server) will take similar approach to make sure people have real reasons to upgrade.
Wed 19 Mar | Punter | Actually the same bloat and feature creep tend to happen in OSS too - have you seen Mozilla or emacs lately?
Wed 19 Mar | Li-fan Chen | Is it impossible to get ClearType except when MS bundles it with an OS?
Wed 19 Mar | dh003i | Since I've never used RedHat, I can't really comment on it. However, if it has an option for 'custom install', then your entire bloat argument falls apart, because those thousands of files you complain about could be removed by choosing not to install them. The hundreds of commands you don't use, you can delete (if that is, no other program reliese on them). In regards to invidual program bloat, some programs are adding unnecessary features (e.g., KDE). Others, however, such as GNUMail.app and Dillo, are sticking to the important features, and not implementing trivial rarely-used ones. You cannot claim that the proliferation of apps and software tools if 'bloat'. Bloat refers to a single application, one person or group's responsibility. Many people are using GNU/Linux, and some people have obscure needs, while others are unhappy with the standard app. Naturally, there's going to be a proliferation of apps. RedHat may be responsible for the bloat you claim exists in its distribution, but only if they give you no other choice. If you have the option to 'install this, or not install that,' then it hardly falls on RedHat, but on you. But to answer your question -- how can such bloat proliferate by a group unmotivated by profit -- the answer is that your question is false ;-). RedHat is a corporation, motivated by (at least partially) profit. It should also be noted that most distribution (don't know about RedHat and the other one's targetted for Joe-consumer), but one's like Debian, Slackware, Gentoo, and other purist distributions, give the user complete choice over what's installed and what's not, and can still be run on a 386, if the users needs are that minimal. Also, I wasn't complaining about MS adding extra useless features (most of the features can be chosen not to be installed anyways). I was complaining about them having the gall to add extra useless, rarely used features and create a product with inferior performance (load-time, memory-consumption, etc) and ask me to pay them for it. No, try to force me -- by phasing out support on older products -- to pay for it. That's what I'm upset about. In the FS/OSS world, it's very rare in practicality that you have to pay for upgrades (though it is certainly possible and allowed by the GPL, see Real-Time GNU/Linux). Let's take MS' real flag-ship money-maker product: Office. I have used Office 95, Office 98, and (currently), Office 2k, which came with my new computer. Let's just skip 98, and compare 95 with 2k. Office 2k literally offers nothing for me over Office 95. I do not get things done faster in 2k, but in fact slower, because 2k insists on fighting me (if you don't know about how Office 2k fights what the user wants, you haven't been using it long enough). So, how, exactly, is it that MS has the nerve to ask me to pay extra for Office 2k, when it's offering nothing for me, but actually hindering me? Now, just for document-creation in GNU/Linux, let's look at my alternative: LyX. It does not fight me, and allows me to focus on content rather than formatting. The result? Professional-quality documents that are properly formatted given their document type, without me having a headache. They even use rational intentations -- 1.5 to 2 inches -- so that documents are easier to read. 1' margins all the way around may 'look' nice, but documents aren't meant to be hung on walls; they're meant to be read, and it is alot easier to read a short-lined than a long-lined document). To prove my point, look at this web-page. Notice how the text doesn't scale to fit the entire browser, no matter how large you make the browser? That's for readability. Summarily, what bothers me is that MS has the nerve to ask me for my money to upgrade to what is an inferior product for my purposes. Not only do they have the gall to ask me to do that, but they have the arrogance to try to force me to do that, and everyone else as well, by preventing OEM's from allowing consumers the choice between Office XP and any other version on their computers, and by phasing out support for older versions. Won't work for me, because I have no need to ever upgrade my windows software. I basically use it only for entertainment (read games), and I won't be buying any games in the future aside from Tomb Raider 6. I also have no use for technical support, as I almost invariably know more than the tech-support guys I call, who's solutions to problems are obviously read from a cook-book, and ultimately boil down to 'reinstall everything' if all their little cook-book steps fail.
Wed 19 Mar | Benji Smith | Perhaps, if you think Office 2000 is making it more difficult for you to work, you should RTFM. Features like AutoCorrect can be customized to a very fine-grained degree, and you can make your work go much faster.
Wed 19 Mar | dh003i | Don't you remember what Joel said? User's don't -- no, can't -- read the manual. Especially power users. Especially in GUI environmnents. I quickly figured out how to customize auto-correct to my liking.. There are many other very annoying irritating 'features' of Word which fight the user, many of which CAN NOT be turned off. The most annoying one for me is whenever you insert an image, and try to place it somwhere. Often times Word will fight you and put it elsewhere. When you finally have it where you want it, it can be screwed up by every little enter you press. Oh yea, if you group objects together and move-them, sometimes word will mess up the relative distances between them. My favorite is (on a Mac), when I tried to insert a phylogeny into word from a Canvas file. If you know nothing of phylogenies, they usually employ perfectly straight lines (0, 90, 180, or 270 degrees). I past the file into word, and it makes some of the lines at slightly off angles, resulting in a very unprofessional phylogeny: crap which is unpublishable.
Wed 19 Mar | Ben Combee | I disagree that XP provides no UI improvements. I prefer the start menu UI on XP over Win2K. There are little improvements like having the start button go all the way to the corner -- this removes a little irritation with previous Start menus where clicking in the extreme corner of the screen wouldn't open the menu. Anyone who's read 'Tog on Interface' will see this as an advantage. I also like the frequently used program list in the start menu and the ease at which you can 'peg' apps to stay in this list. I like the drab green Luna look better than the mid-90's 3D look of Win2K. I like the integrated 802.11b roaming support. I like the way Explorer has integrated new columns to let you manage multimedia files -- it can read MP3 ID3 tags and WMA attributes and sort files by title or album, or it can show version and copyright info from app/dll resources when you're looking through the system folders. XP isn't perfect... the whole hiding items thing it does is annoying, but can be turned off, and some of the changes are pretty minor. If I was upgrading business systems, I'd probably not think it was worthwhile, but on my personal machines and new equipment, I find it worthwhile.
Thu 20 Mar | Just me (Sir to you) | With a few exeptions most of the OSS software does not have the concept of separating the 'new features' from the 'patches'. Yes, there are a few 'profesional' OSS shops that maintain old branches over some time, but not unlimited as you imply, and probably not longer than a typical MS support lifetime.
Thu 20 Mar | Stephen Jones | Dear dh003i, While you are right to say that the incremental changes MS has been making in its software since 1995 often are not reason enough for people to go to the hassle and expense of an upgrade, most of your detalied examples are contentious, or just plain wrong. First let's cut out the MS/Linux flame war. You can't complain a power user doesn't RTFM in Word and expect him to go through all the /man files in Linux. A full scale Linux distro is huge; it does has the advantage of being customizable but that is a double-edged sword. There are in fact considerable changes from W95 A to Win 98 SE (Win ME was a lemon, although Windows file protection was a signiificant new feature). Most of the changes were behind the hood, in increasing stability, more stuff becoming 32 bit, and better utilities. True MS didn't market them but marketed all the irritating features instead . I always advided people that if they had W95C there was no reason to upgrade, but if they had the earlier versions then they should do so when they did their periodic format and uninstall. Now of course, with W2000 the yearly or six-monthly reinstall is a thing of the past; in fact you probably only boot the machine that often (which considering how long it takes is probably a good thing). This is the problem MS are facing on the OS front. They have produced something nearly everybody likes (if they hadn't we wouldn't have bought it) but are now finding that people don't want to push their luck and risk something else, particulary when XP is basicially NT5b. Originally W2000 was going to replace both NT and W9*, hence the name, but MS couldn't get the backward compatibility with W9* ready in time. They issued ME (W98 + new name) as a stopgap, and then reissued W2000 as WinXP when they'd sorted out the problems. With regard to Office 95 compared to Office 2000 you are plain wrong. First of all there is the question of Unicode support, which is in itself reason to buy it for half the world's population, though obvioulsy at present a much smaller proportion of the world's computer users. With W97 on Win 98 I would regulary find that 10% of my Word documents would not open on Arab enabled windows if written on non Arabic enabled Word, and vice-versa- remember I am talking about documents produced in English on both programs. Secondly Word 2000 bought iin an HTML converter that worked (even if it seemed to do so by producing a style sheet with more entries than the book of Leviticus); if you needed to convert your Word resume in HTML on the fly tnen it was great. Table support was also better. Now in general MS revamps one of its programs for an ugrade (I believe the main work in 2000 was done on Access), leaving much of the rest of the Office suite with cosmetic changes only, but one thing that is happening is increasingly smooth automation between apps. If I need to print out an attendance sheet or other tabular data I keep in Access I simply convert it to Excel because for printing tables easily Excel , well it excels. I do agree with you that the default settings for Word can be incredibly irritating, and one of the main problems people ask me is why Word keeps on doing what it does even if they haven't told it to. I find out that tabbling and entering numbered lists manually to be much quicker than wasting hours trying to work out what combination of keys I need to press to keep the list numbered but to have a second paragraph wihin the same number indented as it should be. I suspect that some of this is a case of MS listening to what the customer says it wants ('Carol really has no idea about punctuation - can you get the program to put in the capital letters for her?'). MS does carry out fairly thorough testing on these kind of things, so it can't piss off everybody (just nearly everybody!).
Thu 20 Mar | dh003i | Dear Stephen Jones, Your point are interesting, so let me look at them one-by-one. In regards to RTFMing, I was referring to GUI environments. Because an environment is a GUI, everyone's first assumption is that you don't have to RTFM. People who write GUI programs should assume that (on the other hand, people who write CLI programs should assume just the opposite, and build in good manpages). There are some GUI programs which you might actually need to read the manual for, but I haven't encountered many of those outside of the scientific area (e.g., definately have to read the manual for ClustalX, if you want to generate good alignments). For most GUI programs, you should be able to figure out how to do something just by looking around. If you can't, something's wrong with the program. Also, let's draw a distinction between a criticism and scorn. I will criticize any FS / OSS program which isn't easy to use, doesn't have good defaults, not enough customizeability, or too much bloat, and make constructive suggestions accordingly to the authors. However, since I am getting the program for free -- usually as in freedom and as in price -- I have no grounds on which to be contemptuous. Someone gives you a gift, you don't say 'well, that's not good enough for me'. As for proprietary providers, hwoever, the story is different beause their programs are neither free as in price nor free as in freedom. So, I'll give constructive criticism to any FS / OSS program-author on things which are wrong with the program and ways to improve them. But I won't be contemptuous if they put out an upgrade on the web which doesn't offer much over the old version. However, if MS is going to ask me to pay money for a new program -- worse, if they're going to try to force me to buy their new programs through various tactics -- I am very well going to scorn them if these new products don't offer anything of significance for me. Of course, I'm analyzing all of this from my own point of view, which is really the only pov I can concretely analyze anything from. For reference, I place myself as a home-user who's needs include web-browsing, e-mail, file-sharing, music, movies, document-creation, spreadsheet/graph-creation, database-creation, newsgroup-reading, FTP-uploading, gaming, and various biological scientific needs. I all of those needs, except for gaming, using GNU/Linux; WindowsME, for me, is for games. I also have the typical productivity applications on my Windows partition. So, let's address the first thing. Why did I even need WinME? The answer is, I don't. It provides nothing over Win98, except for booting faster because it doesn't have real-mode DOS, which is a disadvantage. But, WinME came with my computer and I don't feel like uninstalling it and re-installing Win98 just because it's a little bit harder to get TombRaider1 and Prince of Persia 1 & 2 to work. So, as far as my current needs, WinME basically is fine for them. Why, exactly, would I upgrade to 2k or XP? 2k is a stable environment, though still frought with MS security holes, but I use GNU/Linux for all of my productivity, so why upgrade to 2k when it's likely all of my games won't work? There' also XP, under which many, but not all, of my games will work. Again, why upgrade, when many of the things won't work? Why shell out money (what is it, $100 bucks for a home edition?) for XP, when ME suites my current needs fine? Though I use Win9x only for gaming, that's the same question everyone else should be asking themselves, even if they use it for productivity. Now, for MS to continue being successful, what they have to do is somehow convince people that -- despite getting along fine as they are -- they *need* to upgrade. In hard terms, what they need to do is convince people that the extra money they spend on WinXP -- and probably the extra money they spend on new hardware to make WinXP run decently -- is going to be made up for considering the TCO. For the home user, I find that extremely hard to believe. As hard as it is to believe that for the home user, it's even harder to believe it for the business user. Now, some people will claim that WinXP has a better user interface, and I assume they're speaking about defaults. Regarding the start-menu, I partially agree. Placing it all the way in the screen-corner is better. However, does it matter for any experienced user? No. People who use Windows regularly will use the Windows start-menu key, not the mouse to access the start-menu. And of course, the way the start-menu has been de-logicalified in the default is not good. So, the user interface issues are non-starters. What about other areas? Stability? XP offers nothing over 2k. Why should a corporation switch to something new and unproven, when what they have works fine? Security? XP is as weak as the rest of the products. There was just a newspaper article discussing a bug in MS' IE and Outlook/Outlook Express which allows a web-site or e-mail to execute malicious code. It's true that these aren't parts of the OS, but MS is selling an entire integrated solution with no choices, so they should be judged by that integrated solution. Ok, now lets focus in on the Office products. I believe that Office 98 also had the ability to copy & paste between tables and Excel. Also, fyi, excel is a terrible place to print out tables from...for example, no super-scripts or sub-scripts in Excel are allowed. For printing out tables, Excel just isn't as good or flexible as tables in Word. Excel is just good for making graphs from tables (also, can't merge cells in Excel, but can merge them in word-tables, etc etc). MS' HTML-converter is garbage and a half-completed idea at that. Documents converted to HTML will still not display appropriately. HTML was not meant to have such complicated document formatting, and any attempts to do so will result in poorly designed web-pages (any web-page where you can't resize the text is poorly designed). If you need to share a word document with the world, it'd be better to put it on the web as a PDF-file. Foreign character support is useless to the average user in the US, so, again, what does Word 2k offer over Word 98 that justifies all that money MS wants? I would argue that maybe every four MS 'upgrades' is actually worth the extra hundred bucks over one four issues back; but each sequential upgrade is a complete rip for the money they want. Most of the improvements you spoke of in 2k over 98 were and 98 over 95 were just fixing things that were broken (table/spreadsheet integration between Word and Excel, for example). Most of the upgrades MS offers over previous installments of their products are nothing more than insults to the consumer, becuase they are asking the consumer to spend an extra hundred bucks on something with new features that aren't usseful to the consumer, and worse this new product will perform worse than old ones -- take up more RAM, more HD-space, more CPU-time, etc. MS and other corporations are going to run into these problems more and more -- program UI's and functionality eventually reach plateaus. Word processors are pretty much at the optimum right now, and so are UIs. MS realizes this, which is why they are now trying to switch over to a rent-a-ware business model. This is, of course, putting most businesses off. This is the practical reason why I'm sticking with GNU/Linux for my productivity needs. They don't feel the need to add new features to convince users to upgrade; they just deal with what's most important, and if there is a UI problem or functionality hole, they fix it. But they don't try to invent new 'user needs' to try to convince the user to upgrade. The entire software business model for the proprietary world seems to be convincing people that they need to pay for upgrades when they don't, and that these upgrades will actually save them money in the long-run, which they won't. Because these new more hardware-hungry programs are pushed on the end-user, it fits in nicely with hard-ware companies trying to convince home users that they really do *need* those 4GHz CPUs.
Thu 20 Mar | dh003i | Just me, Why would FS / OSS shops maintain a distinction between new versions and 'patches' to old ones? Almost all of them are offering their software online for no cost, so there's no point. The only reason why businesses have to maintain patches for old version of software is because otherwise customers would be pretty upset with them -- 'What! You're asking me to upgrade to your newest product and spend an extra $100 just to get a security patch!?' In short, consumers would see it -- rightly -- as a scam for force upgrades. I wouldn't be surprised if corporations start doing that, in fact. FS / OSS projects usually do not charge money for new versions (though they can), so they integrate patches / fixes and upgrades. Since upgrades -- at least for the apps I use -- don't add bloat and detract from performance, that's fine. If there are some programs -- like KDE -- where upgrades seem to be always adding more bloat and making the product slower, in addition to providing new functionality and fixes, then people can choose differents apps. How would maintaining and patching old versions help anything on the overall scale? It would simply mean more documentation work for the programmer (because he'd have to separately document various versions, or add 'X for 2.1, Y for 2.3' in manuals, which would take away from programming to get real work done.
Fri 21 Mar | Just me (Sir to you) | dhoo3i, In a business setting the maintainance and support costs often far outweigh the aquisition cost of a piece of software. Patches are not supposed to break applications, new versions often require adaptations. Even the most backward compatible focussed companies, such as MS, often have breaking changes in new releases. Microsoft was rightly critisized in the past for exactly the problems it caused to administrators when they did not separate the new functionality out of the service releases. They are now better at this than they used to be. I have seen problems in shops using certain OSS package, where upgrades to the latest and greates release was not an option because too much code would have to be rewritten, and yet they could not support the current product any longer for lack of essetial security updates. They decided to quit the product rather than starting their own infrastructure maintnance effort. Let me try to give an example that hopefully flies below your ABM radar. If tomorrow the 2.6 kernel is released, how do you think the Linux community would feel if 2.4 support would be dropped at the same time? How many 2.2 kernels are still out there? Should they all be forced to accept 2.6? We move the technology forward, and sometimes that means breaking with the past. A responsible company has a clear lifecycle roadmap for its products. Especialy for critical security issues, 'that issue is solved in the new version' just does not cut it.
Do employers ever say "No Thank You"? | Tue 18 Mar | anon
Doing rounds of interviews currently, do employers get back to you in a cetain time frame, if you dont get the job, or assume you take the hint? I have heard nothing from employers after interviews given more than 3-4 weeks back, and I am kind of left lurching in the dark.
Tue 18 Mar | Ran | In my experience it is rare for them to call you unless they want to hire or reinterview you. I have gotten very few 'No Thank you's' in my career. Some people say you should follow up with an is-there-anything-else-you-need type letter after a few weeks, but just as many people say you shouldn't. Your call. Don't let it get you down. Keep at it. It will happen. Good luck.
Tue 18 Mar | apw | The only 'No Thank You' I've received is from a company that actually offered my a job but then had to eliminate the posistion because the company went bankrupt.... my luck
Tue 18 Mar | Patrik | It happened once that I didnt hear back for weeks and weeks, and then I called back I got the BS about people in charge of hiring is out of the office and such. I took the hint, and accepted another job offer I had (this was back in the day when job hunting was as easy). When the first company finally got back to me I declined their offer, and said they had taken too long getting back to me. When thinking about it, I would never accept employment at a company that showed such lack of intrest in their would-be staff. Chances are they handle their staff with the same lack of intrest.
Tue 18 Mar | Mike Swieton | My gut tells me (though I have little experience to back it up with) that taking the initiative yourself wouldn't be bad. You have nothing to lose by trying. Give em a call. Don't nag them, of course, but you give them 3 or 4 weeks, call them.
Tue 18 Mar | Ian Stallings | Usually it's just a don't call us we'll call you. But I have received letters stating that they chose not to hire me. I always thought it was to cover their ass on some obscure hiring law.
Tue 18 Mar | Mike Swieton | Ian: It is my understanding that nearly all companies say that they will call the interviewee, and as you say, it's usually a 'we''ll call you' policy. But: is this actually the case? Or is there a gulf between the stated and followed policies?
Tue 18 Mar | anon | I have tried calling up one place, can never reach them, so left a message, but no responses.
Tue 18 Mar | Stephen Jones | I deal with about a hundred job appliccations a month (all teaching jobs). I reply to every single candidate, parlty because it creates a good impression which might be conveyed to another more sutable candidate, and parlty because it will sayve the time of dealing with a follow up query. It does appear I am in a small minority though. If you've been interviewed they should get back to you, but many don't; lack of common courtesy is ofteh the reason, but it could be that they are either waiting for your hiring to be approved, waiting for the job position to be approved, or, the most likely scenario. they have offered the job to somebody else but he hasn't decided. I would definitely get back to them. In most secnarios it won't make any difference, but in the last one it will remind them you're stilll around and may clinch the job.
Tue 18 Mar | Joel Spolsky | Although the norm seems to be NOT to tell people when they didn't get the job, my feeling is that it is good etiquette to send them at least a form letter telling them you're not interested. On the other hand, given that the current employment situation means that there are many people out there who send out hundreds of resumes, and many companies receive hundreds of resumes a day, I think it's fair for companies not to respond to unsolicited resumes. On the third hand... it's very important for job candidates to remember that the people who are interviewing them are busy people for whom hiring is a distraction. It is VERY VERY common for these people to simply be too busy to respond to a candidate, negatively OR positively, and in these situations the candidate really SHOULD call back. There's nothing wrong with calling back once or even twice if you haven't gotten a definitive answer. There's a VERY good chance that they liked you, but they have been too busy putting out fires to get you hired. Many people are like GUI applications: event-driven. They only do things in response to external events. So if you call them, this might be all it takes to get them off their duff and get you hired. And fourth... I'm very tempted to implement a policy that candidates for Sales and Marketing positions do not get hired UNLESS they call us back to try and sell themselves, on the theory that if they can't sell themselves, they can't sell our products. Every experienced sales guy knows that persistence really works, and until you get told explicitly to buzz off, you should keep pinging politely. In practice this policy would work like this: we interview all the good people, tell them we'll be in touch, make our decisions, and only hire the people that call us back to ask for the job. (It's called 'asking for the sale' in sales and it's salesmanship 101). This would not apply nor would it be appropriate for programmers or techies, of course, and in fact, it's not like we have any openings for sales and marketing, so this is all just my random dreaming.
Tue 18 Mar | Bored Bystander | >> Or is there a gulf between the stated and followed policies? There is a *vast* gulf between stated intentions of companies and what they actually do in real life. This is a good time for a pointless rant... It's always seemed to me that HR departments are really into hazing candidates and treating them like s*it just because the talentless HR hacks working in many companies get off on exercizing power over others. The emotionally correct (but unconstructive) attitude to take is to be pissed and resentful, because they do mean to put you down with a smirking 'we hire for excellence so if we didn't contact you, you must not be excellent'. In real life the way HR people treat candidates would be as though the person in front of you entering a store just let the door slam in your face even though they know you're right behind them. I hate HR departments and I hate personnel people, or at least their operational role and they way most treat candidates. In fact, I hate anyone in business who covers their ass with 'higher authority' negotiating stalls. Business excels at exalting haughty human pieces of excrement. I guess, accept the reality that rudeness is designed into the system, don't let it get you down overly (even though it truly is someone else's negative value judgement of the correctness of not dealing with you) and press on.
Tue 18 Mar | Matt H. | >You have nothing to lose by trying. Give em a call. Sometimes, it's better than that: The guy they picked just turned them down. They feel sad. The phone rings, it's you asking for the job. They say 'hey, yeah, Bob - let me give your resume another look. Do you know VC++? You do? How long have you been coding in it ... three years? When can you come in to interview?' I actually had an offer like this, when I was in college, for a chinese food delivery job. Granted, the difference in selection for those two jobs is vastly different, but you get the point ...
Tue 18 Mar | Prakash S | My experience has been that, employers do: 1.) Send you an email saying you were good but yada yada yada.. 2.) Call and let you know within the specific time frame mentioned by them. 3.) Send a letter. Generally, the HR/ Recruiting co-ordintaors do this.
Tue 18 Mar | anon | How does one go about doing it if the contact in the company never answers the phone?All you get is voicemail.
Tue 18 Mar | Patrik | Anon, If all you get is voicemail, chances are all their customers get voicemail too; which means soon enough the company will not have customers, which makes it a bad company to work for anyways. Im sorry; I dont mean to add insult to injury here, but if they behave like this, chances are they dont treat their staff well either. If I were you, I would try to find another place to work for.
Tue 18 Mar | | I got a 'No thank you' call from a great firm (trading; not IT) , but they do not interview many people so it must have been their culture. I think a good company that actually does a face to face interview will respond with a 'No thanks' call,email, or letter. Even in this market talent is scarce if the company is doing something creative.
Tue 18 Mar | T. Norman | If a company interviews you, but doesn't have the decency to tell you within a reasonable time frame that you didn't get the job, be glad you aren't working for them. Companies will receive 100s of resumes, but none of them will interview 100s of people unless they are rapidly expanding (which is rare in this economy). So they can bloody well afford to take the 2 seconds to put your name on a form letter or email. Having you spend the time and energy to be interviewed, then rejecting you without acknowledging you afterwards is a blatant disrespect of people's time, and if you were hired they would continue to treat you like crap.
Tue 18 Mar | Kyralessa | If I were in charge of hiring at a company, I wouldn't send a 'No Thanks' letter to every yahoo who sends me a resume either; zero effort deserves a zero-effort reply. However, I think ignoring those who carefully craft their cover letter as if they're really interested, who call or otherwise follow up, and in general who go above and beyond just sending a resume, is poor manners to say the least. And if ABC Corp. doesn't consider manners important, at least it ought to consider that those job seekers may one day have other jobs where they'll be in a position to recommend for or against dealing with ABC Corp. and its products/services, and they may well base that recommendation at least partly on how ABC Corp. treated them in the past.
Wed 19 Mar | GersonK | Actually, today's Onion tackles this very question: http://www.theonion.com/onion3910/job-hunting_tips.html ' Be aggressive: Don't be afraid to call a potential employer every few hours and say, 'Is there an opening yet? How 'bout now? How 'bout now? Now?' ' But seriously, when I was looking for a job right after college, I ended up in a game of phone tag - potential employer leaves an enthusiastic message after job fair, I get their voicemail and leave a message. Like an idiot, I let them take a week to get back to me - which they did, and I ended up getting the job. And yes, their reaction time was a real sign of a disorganized company, but I certainly could've done worse. But I suppose, if I had called them back earlier, the only difference would've been that I'd have started work a few days earlier.
Wed 19 Mar | Justin | I'm sorry I don't agree. Aggressiveness is a swift way to having unreturned calls. Let's face it, who wants to take a call from an axe wielding homicidal maniac (to continue the jocular theme of the article – and yes, I did spot it was in fact satirical). It is quite important to differentiate between aggressiveness (“WHY HAVEN’T YOU CALLED ME?”) and assertiveness (“I appreciate you have been busy, but I *need* a response about x”). Obviously you can be increasingly more assertive dependent on the situation.
Wed 19 Mar | Joe AA. | Things have changed over the last ten years or so... my personal opinion that this lack on the part of potential employers is merely the backlash of the political correctness movement - the concept that it is OK to lie, or be rude, or even ignore someone completely because the ultimate goal is not to hurt someone's 'feelings'. Being a wimp is the in thing.
Wed 19 Mar | Fernanda Stickpot | Hmmm... backlash... A lot of what is called 'political correctness' is simply common decency. A lot of people who whinge about 'political correctness' are simply chafing against any restraints being placed on their rudeness. It is *impossible* to turn a polite person into a rude person by asking them to conform to a set of 'politically correct' expectations. A polite person, confronted with a set of 'politically correct' expectations, will at least stop and ask themselves: 'Could it be that I have blind spots in my concepts of common decency? I say my aim is to respect others' feelings, but could it be that I've been unconsciously picking and choosing whose feelings I will respect?' If, having done this, there are still expectations with which the polite person disagrees, they will respond by complying anyway, or else by challenging those expectations. No polite person will respond to these expectations by abandoning the concept of politeness altogether and adopting rudeness because they decide that politeness is just too 'wimpy'. Anyone who responds that way was rude all along, and was just looking for an excuse to let their id off the leash.
Wed 19 Mar | | I'd be more impressed if they even said 'Thank you' once in a while. Expecting them to write a letter is a pretty forlorn hope.
Wed 19 Mar | Artist | I think the time has changed. A decade ago, I had recevied a lots of thank you 'love letters' from companies. Now not many are there who bothers. Could be few reasons, including teaching what is the practical world and do not show or promote unnecessary sympathy and reflect the world as materialistic.
Wed 19 Mar | Alex Chernavsky | On the subject of saying 'thank you': In the past two years, I've interviewed five local high school seniors who had applied for admission to Yale. Not one sent me a thank-you note afterwards. I've been letting it slide, but I'm changing my policy. From now on, I'm going to wait ten days before I file my evaluation. The presence or absence of a thank-you note will have an effect on my recommendation.
Thu 20 Mar | Stephen Jones | Dear Alex, Why should they say 'Thank you'. As far as they're concerned you're only doing your job. In general it is the person interviewing who thanks the person who comes to the interview for giving up his time. And on another note, who would be a better student at Yale. The person whose opinion of his ability was so low that he felt really grateful that Yale even thought of him, or the person who reckoned that it was Yale who ought to be thankful he thought of them? The latter might be the more obnoxious socially, but he's a lot more likely to be the better student.
Thu 20 Mar | Joe AA. | When I use the term Politically Correct, I am not talking the difference between politeness and rudeness. I am addressing the mandate that sets me (read you) as having total responsibility for the 'feelings' of others, and exempting people... either individually, collectively or those belonging to some arbitrary group as needing to be protected from this basic responsibility for themselves. It is a childish and not an adult view of social relationships.
Thu 20 Mar | Alex Chernavsky | Stephen, Regarding your first point: I did some Google searches, and I confirmed what I already knew -- namely, that it's considered standard practice for an _interviewee_ to send a thank-you note to the _interviewer_. This is true not just for college applications but for job interviews, as well. As for your second point: I'd like to see my alma maters populated by students who are not just gifted academically, but are also gentlemen and gentlewomen -- people who respect and live by the rules of polite society. (Incidentally, I don't mean to imply that a thank-you note is a 'make or break' item, but I will certainly take it into account when writing my evaluation.)
Thu 20 Mar | Fernanda Stickpot | Joe AA, sorry for the misunderstanding. There also seems to be a mindset that giving a 'No' answer where a 'Yes/No' answer is expected, is somehow 'rude'. E.g. some people say they have no intention of following through on a commitment, but they said yes 'just to be polite' and will cancel at the last minute. The rationale being that they'll upset someone by telling them something they don't want to hear. What these people are really afraid of, of course, is upsetting themselves. Not that that's got anything to do with HR departments' behaviour, of course. I think they just don't give a toss.
Thu 20 Mar | Stephen Jones | Dear Alex, I have attended dozens of jobinterviews in my life, and on the other side of the table, interviewed dozens of people. I have never sent a thank you letter when the interviewee, nor received one when the interviewer. Possibly I should interview more Americans, or may be your interviewing style gives people more to be thankful about :) In my opinion a Google Search will turn up a skewed set of data. Any site that thinks it unnecessary won't show up. Sending a thankyou letter doesn't show someone is a gentleman; it merely shows he has been told he's supposed to send one. And thinking back to the time when I was applying to university there simply wasn't time to waste on non-essential tasks.
Thu 20 Mar | T. Norman | It's not merely about 'Thank You', but about having enough respect to not keep people hanging. As an interviewee you don't necessarily have to give a 'Thank You' note just for having the interview, but if an offer was made and you didn't accept it, you would at least reply to the employer that you are not taking the job - not just leave them guessing. Similarly, employers should have enough respect to inform rejected interviewees that they didn't get the job, whether they do so on the spot or via phone, email or snail mail.
Thu 20 Mar | Kyralessa | So maybe that's the answer. If an employer calls with a job which, for whatever reason, we have no intention of taking, we should say, 'Thanks, let me think about it and I'll call you back.' And then we never call back. And after every employer gets its fill of this, maybe they'll clue in to how rude it is to interview, say they'll call, and never call.
Thu 20 Mar | anon | Well I'm still waiting to hear something back from the employers where I had given interviews, just leaves me very very frustrated in the job hunt.
Fri 21 Mar | Fernanda Stickpot | 'And after every employer gets its fill of this, maybe they'll clue in to how rude it is to interview, say they'll call, and never call.' What would probably happen, is that they'll realize it's not necessary to call back in situations like these, because after all interviewees don't call back. And hey, just calling back wouldn't make them good employers, it would just mean someone told them it was 'polite' to call back. And if the interviewees don't have time to waste on nonessential tasks, and they're unemployed, why should the employers? ;-P I say this with my tongue firmly in my cheek, of course; but the unfortunate fact remains that responding to rudeness with rudeness never converts the rude. It just makes them think they have an excuse to be even more rude.
Fri 21 Mar | Kyralessa | You're right, of course, but it's still nice to think about.
Any JoelOnSoftware readers in Bangalore, India? | Tue 18 Mar | Yogi
Hi, Was wondering if like-minded people would want to meet up in Bangalore over some beers?
Tue 18 Mar | Prakash S | I will be in B'lore for a week in June, let me know if you want to meet up! And make it JavaCity instead of the bars/ pubs (Can't hear myself think in those places) Cheers!
Wed 19 Mar | Walter Rumsby | I'm in Mumbai at the moment - should be here at least another 4 weeks.
Wed 19 Mar | Deepak Shenoy | I'm in Bangalore, email's shenoy at agnisoft dot com. Would love to catch up sometime!
Wed 19 Mar | Stephen Jones | Walter, Didn't you promise to let us know how your Mumbai experience was going. Steve
Wed 19 Mar | Walter Rumsby | It's still going! I'll let you know.
Wed 19 Mar | Walter Rumsby | Actually, I sent an email to the IT editor of the New Zealand Herald today. He was heralding the fact that the New Zealand government provided EDS with $NZ 1.5 million in funding which lead to EDS outsourcing some operations to NZ. In his piece (http://www.nzherald.co.nz/storydisplay.cfm?storyID=3250453&thesection=technology&thesubsection=comment) he suggested that NZ had the benefit over India of: * better weather * airconditioning (???) * spacious offices I told him that I was sending an email to him from a spacious office in Mumbai with good airconditioning (certainly better airconditioning than the Sydney office I normally work in - the aircon does not shut off around 6.30pm here like it does in Sydney - and the large cupboard I once worked in in Auckland). In fact, the weather is so 'good' airconditioning is compulsory here - the temperature has been consistently warmer than Sydney (where it is/was summer when I left). I'll write a full summary when I get back to Sydney - very briefly I imagine the average Western programmer might initially be shocked by India - Mumbai is full of very sharp contrasts (extraordinary poverty and extraordinary wealth).
Wed 19 Mar | | 'the weather is so 'good' airconditioning is compulsory' That's what he meant when he said better weather in NZ :) 'I imagine the average Western programmer might initially be shocked by India - Mumbai is full of very sharp contrasts (extraordinary poverty and extraordinary wealth).' You've never lived in the Docklands in London then? Maybe Mumbai is where they took the model from. One thing I will say for the poor bit round the corner from where I lived - I felt safer there than anywhere else I ever went in the UK.
Wed 19 Mar | Sunish | I didn't know Deepak Shenoy lurks around JOS
Wed 19 Mar | Deepak Shenoy | I didn't know Sunish knew Deepak Shenoy :)
Thu 20 Mar | braid_ged | Anyone who makes flippant comments about the poverty you see in the slums of London being in any way equivalent to the poverty you see on the streets of India needs to see more of the world.
Thu 20 Mar | Madhu "MadMan" Menon | Yep, I live in Bangalore. I'm a usability dude. (for now anyway) You can click my name to send me an email. Why do you ask?
Thu 20 Mar | Stephen Jones | Dear Walter, Remember you can get computer books at 25% of US prices in Mumbai, so even after paying shipping you will make a considerable saving.
Thu 20 Mar | Sunish | Deepak, what I meant was I never saw any postings on JOS before.
Fri 21 Mar | Walter Rumsby | Stephen, I'm aware of that - I bought the South Asian Edition of 'Code Complete' the other week for around $AU 20 (it would be close to $AU 100 in Sydney), a work mate bought Kernighan and Ritchie for close to $AU 7. These are legitimate editions too. Imagine if there was an Amazon India (although these editions state 'only for sale in India, Sri Lanaka and Bangladesh').
Fri 21 Mar | Yogi | Madhu, Just to meetup and chat about software! I am moving to Bangalore in April and wanted to sample some of the great pubs and enjoy some great conversation.
Fri 21 Mar | Stephen Jones | Walter, Who is the Indian publisher of 'Code Complete'? Also do you know of the publishers of any of the other standards, Petzold and Brooks and Cooper, Nielson and Togliani (basically all that Joel recommends). I have never seen the American editions in Saudi - it's all specific to the program stuff - and the importers I buy from in Colombo doesn't have any of those books. If I could get the lot on Joel's list it would make for a nice beginning to the summer vacation.
Fri 21 Mar | Walter Rumsby | Stephen, I'm working in Navi Mumbai and just went to a bookstore in Vashi (the nearest town). Code Complete is Wiley/Microsoft Press (I think). I noticed South Asian Editions of titles like Design Patters, UML Distilled (Addison-Wesley), O'Reilly, Wrox, Sams, etc books. I noticed some New Riders books (publishers of the most recent Neilsen books) but I wasn't looking for usability/design books at the time. I also noticed 'The Deviant's Advantage' (business book) in the window of the store when I was leaving, which is a title I'd be surprised/delighted to find in Sydney. I'll find the name of the store for you and post it here tonight/tomorrow.
Fri 21 Mar | Stephen Jones | Thanks Walter, What actually happens is that books for the South Asian market are normally published by a local partner. so O'Reilly books are published by SPD of Mumbai, Sams by Techmedia of New Dehli, Sybex by BPB of Connaught Place New Dehli etc. I really need to know the Indian publishers names so I can write to them to ask them who their Sri Lankan agent it, but any help would be appreciated.
Fri 21 Mar | Deepak Shenoy | Sunish, Was just kidding...I do visit JOS, found the link to the discussion only recently...very interesting stuff!
Fri 21 Mar | Walter Rumsby | Stephen, I sent you an email with the Indian publishers details.
Fri 21 Mar | Prakash S | Indian Books websites. http://www.fabmall.com/ http://www.landmarkonthenet.com/home.html http://shopping.rediff.com/shopping/index.html HTH,
Fri 21 Mar | Deepak Shenoy | http://www.firstandsecond.com http://www.fabmart.com
Fri 21 Mar | Prakash S | Fabmart is Fabmall these days, don't know why...
O'Reilly Safari | Wed 12 Mar | Bill Tomlinson
Does anyone have any experiences with OReillys Safari online bookshelf service? I was looking at it and it seemed like a good idea and deal. At this point, however, Id like to make a plea for people to skip all the I cant read books on a screen posts that you were planning. Thats a religious war level issue that can have no true resolution and well just take it for granted that if you cant read books on a screen then you also wont like Safari. But for those of us who can (or plan to use the service primarily for reference books), do you have any experiences, or what do you think.
Fri 21 Mar | Stephen Jones | Rexguo, to change text size use Netscape or Miozilla. The tabbed browsing is fabulous too. IE at present is way behind just because of these two features.
What's your opinion.NET? | Mon 10 Mar | Walt
.NET has been around for about a year now and from the beginning our company has thought about the advantages that .NET has to offer. We have been reluctant to make a big jump to it for a few reasons: Were worried that the platform will fail. We dont have any idea on what percentage of people have it yet. We havent seen anything that runs on it yet. Were worried about the number of Win95 users still in existence. We dont know how IT departments will react to a new software requiring it. We dont know how well ports like the Mono project will catch on in the Linux world, considering the strong anti-MS sentiment. We are developing a small scale application that we will distribute as a free beta in which we hope to guage our own users reactions to installing the .NET framework. Id like to hear some opinions on some of the issues Ive named. (Please refrain from .NET/MS bashing, and post useful comments only)
Fri 21 Mar | twotbox | trollbooth: we know you're only trying to look clever, but you could at least write your trolls by hand rather than use a random crap generator.
Automated testing tools? | Thu 20 Mar | Glade Warner
What tools and books would you recommend to get started with automated testing? Our code is C++ on the back end, with VB for the GUI, if that helps focus replies. Joel started a thread on GUI testing tools in 2001: http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=274 At the bottom of that thread Chris asked Joel, What did you go with? How do you like it? I hope I did not miss any follow-up discussions.
Thu 20 Mar | Deepak Shenoy | TestComplete from http://www.automatedqa.com helps with building test suites. There's also unit testing frameworks (NUnit for .NET, but there must be something like that for C++)
Thu 20 Mar | Brent P. Newhall | http://cppunit.sourceforge.net/ for all your automated C++ testing needs. You can also write your own test framework; it's what I did for my online game.
Thu 20 Mar | Steven Tyler | Segue SilkTest works with VB GUI's, be it traditional windows programs or ActiveX in an IE browser. It also supports loading a DLL and testing exported functions, and has ODBC capability to perform backend database queries. This way you can write functional tests that drive / validate at GUI level and validate log files or database tables. I've used it the past 4 years testing everything from MFC based Windows apps to Java applets in browsers with no major compatibility problems.
Converting a .HTML to a .MHT file  | Thu 20 Mar | Tarek Demiati
Is there any way to convert an HTML file into a MHT file the nice thing with MHT is that if you send a report via HTML which contains pictures, everything is packed into one singlefile, so its a very convenient file format. Basically I am looking for any tool such as OCX, Automation controller, .EXE Which can convert an HTML file into a MHT file Is there any 3rd party tool or FreeWare out there which can does the job ?
Thu 20 Mar | Just me (Sir to you) | http://www.chilkatsoft.com/ChilkatMht.asp but also have a look at http://www.codeproject.com/shell/IESaveAs.asp
Thu 20 Mar | Stephen Jones | There are very many limitations with .mht files. I used to save all my IE files that way after I found out how neat it was. I found that I lost over 20% of the files. If you want to transfer the file over the web .mht is useless (at least in the IE version). The path to the miages is the path on the local machine and once you put the file on the other machine it is broken. I found this out after hand-coding a 70 page html handbook to send by email. I ended up sending the html document and associated graphic files as a self-extracting zipped file that extracted to the default temp directory which it opened in explorer showing the folder and a shortcut that you could click on and open everything.
Thu 20 Mar | Ori Berger | MHT files can include their references inline. Either you or Explorer was doing something wrong. MHT is a just mime encoding, the same that is used when sending images + html embedded within email. Nothing more, nothing less.
Thu 20 Mar | Jim McCarty | Another possible solution is offered by a software company in Australia: http:// www.eztools-software.com These folks have developed an IE plug-in DLL that acts as a server, either displaying your HTML pages as-is or on the fly via ASP. The plug-in is not free, but alternatively they allow you to download something called Flashbook that is simpler to use, employs the same technology, and costs nothing. In both cases the HTML or ASP pages (as well as linked graphics, etc.) are contained in a single file. I am using Flashbook for CBT to be deployed on CD-ROM. I had planned earlier to do this with a so-called HTML compiler, but Flashbook is free and works much better (I do advise Javascript error-trapping, though).
Thu 20 Mar | Stephen Jones | ----'Either you or Explorer was doing something wrong.'----- Congratulations! That line hasn't just made my day. It's made my month!
masters GPA cutoffs? | Wed 19 Mar | anon
Having failed to land a dev position last 6 months, i have applied to various cs masters programs, actually got my first reject letter today.This has me worried, as think the bar has gone up, as many people are now going back to school because of the economy.Any people have ideas about cutoff GPAs? My undergrad is a cs degree with 3.55 gpa, is this generally enough to get into a decent masters program?How about other poeples experiences?
Wed 19 Mar | bdw | Good Grad schools don't have GPA cut-offs or cut-offs of any kind. Where have you been.
Wed 19 Mar | big bob | It's all about who you know. The good master's programs usually require good recommendations from people that they know. That usually involves having done some research for a professor (with contacts) as an undergrad. Highly recommend a book called 'Getting What You Came For'.
Wed 19 Mar | Philo | Read this thread: http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=28818&ixReplies=19 Philo
Wed 19 Mar | Nick | What do people do for recommendations when they got undergraduate degree a long time ago? I've been pondering this lately since I'm planning to go back for a Masters but I got my BS 12 years ago. I did a guest lecture at my old school several years ago, and at that time there were only 2 profs still there from back in the day. I had taken only one class from each of them and so I never established a repoire with either. Would it be worth it to take a few non-matriculated classes just to earn some recommendations?
Wed 19 Mar | Prakash S | Getting into a MS program depends on GPA . GRE scores, Subject GRE Scores, Refernce, if you have done any research, and most importantly size and talent of the applicant pool.
Wed 19 Mar | Prakash S | Nick, why don't you try tracing your old Profs?
Wed 19 Mar | anon | Prakash, I know that GRE and prof recommendations count, but forgetting all that is 3.55 enough for a middle tier school as a range?
Thu 20 Mar | Prakash S | yeah, sounds decent enough.
Thu 20 Mar | anon | Actually I am finding my gpa with advanced 3rd and 4th year cs courses are around 3.7, I really messed up some 2ooo courses which kind of screwed it up!
Thu 20 Mar | Prakash S | even better.
Thu 20 Mar | Matt H. | With a 3.55, a good score on the GRE, and two letters of rec, I'd think you could get into a very good school. One key is years of progressive work experience. If you got a 2.7 when you were a 20-year-old-punk, that has much less to do with who you are as a 30-year-old coder. regards,
Thu 20 Mar |       | What is 'middle-tier' to you? Schools ranked 10-20 in USNews? Who rejected you? Did they tell you why? If not, you might consider calling them up and asking how you could improve your chances for next year. Whether or not you wait til next year is another matter, but at least it might give you an idea where your app is weak. Your best bet would be to see what each individual department requires. Some may weigh recommendations heavily. Some may weigh GPA. It all depends. As for being out of school and not having any recs, the best bet would be to either take some classes (you can usually take a certain # of grad classes even if the school hasn't accepted you to that particular program) or apply to a program that values 'real-world' experience as much as academic experience HTH
Looking for a CodeGuru replacement. | Wed 19 Mar | agnul
Hi, does anyone know of any online resources for windows GUI programming using good old fashioned C and win32 API calls ? Or is everyone doing it the MFC/Visual Basic way ? Sorry if this is kind of a FAQ...
Wed 19 Mar | Chris Tavares | Other than MSDN? My personal favorite site for programming tips is http://www.codeproject.com But there's not a lot of 'to-the-api' stuff on there. This stuff hasn't really changed in years. A recent copy of Petzold's probably the best you'll be able to find.
Wed 19 Mar | William C | Yeah, I was going to chime in with MSDN, also. I'm using MSDN Library - October 2001, right now (because we are still using Visual Studio 6.0). If you go to the contents tab, you can select Platform SDK Documentation/Windows API, for example. Or try to find one of those 'cheap book' places -- where they are selling older books -- and grab a couple of Win32 books.
Wed 19 Mar | Deepak Shenoy | Charles Petzold's Programming Windows, 5th Edition. Good book for pure C API stuff.
Wed 19 Mar |      | codeguru used to be about doing stuff that wasn't covered in Petzold. 'Secret' APIs and stuff that's possible but not documented. Now it's just kind of a tutorial wasteland. Unfortunately, no, I don't know of any other sites like it.
Wed 19 Mar | tommyhl | I use C++, but I find MSDN a valuable resource. What do you need to do that is not covered there? I have yet to find a problem that isn't somewhere solved either via MSDN or Google, though it's not beyond the realms of possibility that I have only encountered problems that are much simpler than yours.
Wed 19 Mar | tommyhl | Hummm, I forget to say: I too use Win32 API by preference, though it is not unknown for me to suffer MFC.
Wed 19 Mar | tommyhl | And a 3rd post, how about that! What use do people have for undocumented APIs? Maybe it is just my upbringing, but I would run a mile from anything on the PC that isn't in MSDN somewhere. To do otherwise would in my view be asking for trouble. If you have a fixed platform that is another issue; for a PC running Windows, however, no such guarantees apply, and with good reason.
Wed 19 Mar |       | sometimes you must do that which has not been done before.
Thu 20 Mar | agnul | Thanks everyone for the suggestions.. I already have Petzold's book (maybe a little old, 3rd ed IIRC) but the problem is that on certain subjects it justs covers the basics. Guess I'll have to dig deeper in the MSDN :-)
Thu 20 Mar | RocketJeff | >>What use do people have for undocumented APIs? Because you want to do something in your applications that Microsoft does in theirs, and they use undocumented API calls to do it?
Thu 20 Mar | A Software Build Guy | I actually have an example where I need to use an undocumented API. I need to add a user programatically to the system whos name == computername. But the NetAddUser call refuses to except this. Reading MSDN I find that they enforce computername$ for ActiveDirectory purposes. The kicker is that I can use the GUI interface to create this user with out adding the $. I need to use the 'native' or 'hidden' security API to create this user but I can find NO Reference on the Internet to the Win 2Ks Native Security API (and I doubt MS will Cough it up)
Thu 20 Mar | A Software Build Guy | I'm asleep still...NetUserAdd is what I meant
Ovum: Offshore services hit the IT mainstream | Wed 19 Mar | Just me (Sir to you)
Ovum Holway forecasts that offshore sector revenues generated in the UK are set to more than double by 2006 to over £1bn – and that’s against the backdrop of a UK software and IT services market that’s currently struggling to grow at all. We’re not just talking about offshore software development here. These companies are already into systems integration, remote managed services and even BPO. Ovum Holway warns that the leading offshore players should not be underestimated. We are in no doubt that one of today’s leading offshore players will make it into the global IT Top Ten by the end of the decade. They will get there by a combination of organic growth and acquisition – and European companies will certainly be in their sights. This new research also forecasts that perhaps 20,000-25,000 jobs in the UK IT industry will be lost over the next few years as a direct result of work moving offshore. The effects will be felt most by the UK’s 300,000 software professionals. If things can be done more cheaply in other countries, the work will inevitably migrate. This is a long-term trend, and governments and unions will find it difficult to stem the tide. http://www.ovum.com/go/content/017398.htm
Wed 19 Mar | Tj | One thing I think that everyone misses is that 'offshore' companies don't have to be foreign. They can be in any place with a low cost of living. A lot of people in college experiment with low cost co-op living, which turn out to be very efficient for basic living expenses (and even shared luxuries like cable.) Some even go on to experiment with ecovillages, which are just places that attempt to be self-sustainable. People who do this tell me that technology can lower costs of living. The resources of wealthy countries can be used to lower costs. One big problem has always been that you cut yourself off from culture, because often ecovillages are in remote regions. However, technology is improving communication with the outside, and deals with Amtrak and fuel technologies can make travel sustainable and common. Obviously, this doesn't help the person with 2 children, whose entire social structure depends on a big city. Even I'd go nuts, since I live in the heart of a lovely city and like 'big culture.' But this can become a good choice for people who can do this, and they'll be easily competitive with places like India.
Wed 19 Mar | Prakash S | Oh come on, don't tell me you guys are goinf to belive another one of those gartner type companies,....
Wed 19 Mar | Li-fan Chen | I think island countries and special economic zones would be the best way to harness the benefits of 'best programmer wins' with the full benefits of having everyone in the same city where all that brain share works together. I am not sure if Sealand and a few VPNs is the way to do it though. Because all in all existing governments have been pretty resistant to such ideas. Their way of making this a policy is to insist that if you do business with their nationals.. you are expected to follow all of their national's original government's rules. So let's say you set up a server in Sealand, does that mean you can have 60 people work and pay no income and corporate tax by logging into that server? No. You would have to make sure these 60 move to countries that won't collect income tax or have high living costs. This goes for the company owner and all employees. Your best bet is to open an out-sourced programming shop in places like in the caribbean while ensuring that your programming and support service is sold in a way into a taxable country in a way that prevents corporate or personal income taxes. But in the end your trouble will almost certainly be less beneficial than to just open shop in the States as RedHat or Microsoft would--no matter how ideal you are. Because most governments are reasonable conductive to suggestions to reduce corporate or personal taxes when you are out to keep their citizens employed. I bet it is a very very rare case where you can actually assert to yourself that the trouble you go to will actually enable your wealth to grow faster and stronger. -- David
Wed 19 Mar | 3 | Ovum, Gartner and all the rest derive substantial revenue from offshore outsourcers. It's in their interests to talk it up. Second point, most of those analyst companies are full of dead-beat 2nd-raters with connections to big vendor companies. I've never seen anything original from them.
Wed 19 Mar | one programmer's opinion | This is nothing new. Although I am sure there are some American developers who feel that these issues, such as, offshoring and foreign labor replacement programs are only happening in their country. Multi-national corporations are evil. They are systematically taking over industry after industry: farming, fishing, retail, and the list goes on and on and on... Until more people get involved in the political process within their countries (i.e. strikes, protests, voting, etc.) this trend will continue. Why? Because multi-national firms have bought many of the government officials who make the rules. For those of you who live in the U.S. -- remember ABSCAM? Several Congressman were caught on video taking cash payments. None this guys were convicted and I believe all of them got re-elected!
Thu 20 Mar | Just me (Sir to you) | Even if you believe (and rightly so IMHO) that these types of outfits are usualy just churing out overpriced and not too expertly concocted lulabies, still sometimes the blind monkey hits the tree. The report sounds quite in line with current trends and observations. The extrapolations do not strike me as unreasonable. But hey what do I know. Maybe europe is safe from the Offshore wave since their programmers are 'so much superior' than the rest of the worlds'. Lucky for the continentals, the have their national languages that are not so common as English in the offshore scene, but UK ...
Thu 20 Mar | Stephen Jones | ---'Multi-national corporations are evil'----- No, they are no more evil than any other corporation or individual employer. The first problem is that they manage to escape control. They are large enough to blackmail governments whereas your Mom and Pop organization has to do what it's told. Secondly because of their size and geographical spread they aren't even stimulated to be socially responsible (remember that Adam Smith in the 'Wealth of Nations' stated that acting morally was necessary for the magic of individual self-interest to produce general prosperity). The old lady collecting her pension in a holiday home in Florida doesn't consciously kill hundreds of children in Africa by cutting off their water in order to get a few more cents to send her grandaughter through college. She probably hasn't the least idea that she even has shares in the water company through her pension fund, or that the water company has taken over the contract to supply water to some African state or shanty town. When the exploiter had his mansion next to the factory at least he could see the misery, and there would be a fair chance he would do something about it, if only out of enlightened self-interest. To move a little closer to topic it does seem a little hypocritcal for programmers working in shrink-wrapped software to complain about their jobs going abroad when for the last 15 years the applications they have been producing have been taking away jobs regardless of frontiers.
Call for special software lifecycle models. | Wed 19 Mar | Vladimir Chladny
Hello, Im trying to collect number of different software lifecycle models that were really applied on some projects. No more theoretical models! ;-) Im trying to do some research with it. Im very interested in some unusuall and specific models. Can anyone share such models with me? Thak you. Vladimir.
Wed 19 Mar | Matt H. | http://www.csis.gvsu.edu/~heusserm/GuestLectures/SoftwareModels.ppt http://www.csis.gvsu.edu/~heusserm/CS/CS642/XtremeProgramming.ppt http://www.csis.gvsu.edu/~heusserm/CS/CS641/FinalSpiralModel97.ppt Regards,
Wed 19 Mar | Just me (Sir to you) | http://www.microsoft.com/technet/treeview/default.asp?url=/technet/itsolutions/tandp/opex/default.asp
Wed 19 Mar | Bill Tomlinson | I'll point out Chapter 7 of 'Rapid Development' as a starting point, if you haven't read it already.
Wed 19 Mar | one programmer's opinion | Vladimir Chladny wrote, 'I'm trying to collect number of different software lifecycle models that were really applied on some projects.' There are literally thousands of different SDLC models for you to collect. Some are OO specific others are not. The most popular SDLC by far is: Code and Fix Commericial Methodologies (you have to pay for them) * RUP * Most large consulting firms have rolled their own You can buy a book or a website membership to obtain * DSDM * Microsoft Soultions Framework Free SDLCs * Agile (Extreme Programming, Scrum, Crystal, FDD, etc.) * OPEN * CxOne Methodology from construx.com * Book authors - many have created their own and documented them in books they have written. 'No more theoretical models! ;-)'' What does that mean? The biggest problem with most methodologies is that they assume your project team has worked together for years. In the U.S. there aren't that many places that can make that claim anymore.
Thu 20 Mar | Karel | Try to see Ralph Hodgson X model. I have Object Development methods Edited by Andy Carmicheal just for a record of the methodology madness.
DB schema updates in daily builds | Wed 19 Mar | na
Every day I need to release a website with an MSSQL DB in the backend to a test site. The problem comes when I need to move the new DB schema to another server. The problem is that client checks the website every day and enters a lot of test data. He do not want to loose the test data every day. So I need a solution which automatically transfers the updated schema but leaves the data intact. Of course its not always possible (eg. a new mandatory field in the DB). In that case the best would be to receive a message to enter default values or autoclean those data which cannot be updated. Do you guys know any solutions to similar problems?
Wed 19 Mar | Justin | I solved this problem a couple of weeks ago. Basically I built a 4 stage process: 1 extract the schema from an MSSQL 2k Db and write to text file (rawschema.sql) - use 'Generate SQL' script. 2 replace specific elements of the rawschema.sql file e.g database name with tokenised string ($DatabaseName) 3 extract data (from the same db) and create a dataload.sql script. I built a tool that does this using SQL-DMO. You just logon and it does the rest 4. (The main tool) allows you to create a site specific installation script (myinstall.sql) by replacing the tokenised strings in rawschema.sql with values from a template file, which you can change on the fly. Take myinstall.sql and run it on target database, followed by dataload.sql Its not perfect; its not a process for end users, but it does turn a repetitive hours long task into something that takes minutes, with the added bonus that you can easily create release schema, or build demo systems quickly. I did consider making it more automated; a single stage process, but time is money. I also considered using DTS, but discarded the idea as inappropriate. For further details, including VB code, mail me.
Wed 19 Mar | Deepak Shenoy | We maintain a schema SQL and an 'update.sql' which contains only updates to the current schema. On new sites we run the schema SQL, and for current testing sites we run only the update sql (if one exists). This works on a daily build scenario. (I'd have to commit hara-kiri if I had to delete all my test data for each build) For mandatory fields here's the thing - there usually is a default value (or some value you can use for a default for existing records). Create the new field but don't have it mandatory. Then populate it with the new default value, then alter the table to make it non-null. Some databases allow you to create the new field with a 'Default' value and NOT NULL, which solves the problem, but I'm talking about generic cases, and cases where you want current records populated with a certain value, but not for NEW records created after the build. Also some databases have a problem with altering tables to make NULLABLE fields Non-Null - you must then create a temporary table with the same structure, copy data to the temp table, drop and recreate the old table with the non-null fields, and then copy back from the temp table. Remember to drop the temp table also, and to recreate any indexes and keys.
Wed 19 Mar | Herbert Sitz | I don't think it covers exactly what you're talking about, but this article by Martin Fowler should be of interest to you: http://martinfowler.com/articles/evodb.html
Thu 20 Mar | Justin | Thanks Herbert. I knew about Martin Fowler already having read some of the things on the site and having owned (and sadly left on a colleague's desk at a company far, far away) a copy of the refactoring book. This was a new article for me though. I wish I had seen it about 6 weeks ago. It is a re