last updated:06 Aug 2003 15:02 UK time
Joel On Software Discussion Forum
JOS Statistics - Recent Comments
(Comments added for week ending Sun 23 Feb 2003) | View Other Weeks
Printers that Scan, Scanners that Print | Sun 23 Feb | Edward
Hello, Im specing out a glorified document management system for a local government office. Part of their process of taking in documents involves stamping the first & last pages and filling in some information. My boss wants to eliminate the physical stamping and filling in of the information. We also plan to scan the documents into the system and save them as PDFs. My boss wants to combine these steps and have a device that scans the entire document (~20 pages usually) and prints the stamps & information in one fell swoop. Does such a device exists that can manage this? Ive searched, but have only come across the standard office machines that scan & print, but using two different paper paths. Any help would be appreciated.
Sun 23 Feb | dmooney | Pitney Bowes might be able to help you. They do all sorts of odd, automated things with paper.
Sun 23 Feb | Mike | Yes, please go high end. Do not I repeat do not try to get by with some $400 dollar multifunction peice of junk. A decent system is going to cost $$$ especially if you want something you can shove documents in and walk away.
Palm handles Office Documents better than PocketPC | Sat 22 Feb | Matthew Lock
A bit off-topic but I found this page eye opening. Apparently the Palm and Documents to go handles Word and Excel files better than MSs own Pocket Word and Excel http://www.brighthand.com/article/Office_comparison
Sun 23 Feb | Joel Spolsky | I completely agree.
Sun 23 Feb | GiorgioG | I don't think it's that shocking. There are plenty of Flash tools that kick Flash's butt - such as Swish 2.0 I think this is a good thing. It will push Microsoft to do better (or buy them out). Competition - this is exactly what we all want!
Sun 23 Feb | Matthew Lock | I think it's actually a great example of 'Fire and Motion' from one of Joel's articles http://www.joelonsoftware.com/articles/fog0000000339.html The makers of 'Documents to go' had time on their side and stuck at it, now they are ahead of MS. I actually find that concept of Fire and Motion quite inspiring for software development. It means if I stick at something one day it will be better than my competitor's product. (Assuming they stand still ;) )
Sun 23 Feb | Albert D. Kallal | Actually when I see problems like this I wonder. Microsoft has such a large and good talent pool. However, sometimes they seem to drop the ball what is obviously needed. When the company drops the balls on too many small details, then it is a sign of lost product direction. Some products are thus loosing their direction. The reason why the documents to go seems better (and I have not used the product) is not due to technical superiority in the coding department. Where the product wins is that someone had to decide what features MAKES SENSE to duplicate in the palm unit. We are talking about making the right choice for features, not HOW GOOD the underlying code is. It is this decision-making process that seems to get lost in these large companies. Another really good example of this is that I recently test drove a copy of Alpha 5 a few months ago. Alpha 5 is a ms-access like product. It is a database RAD tool and a direct competitor to ms-access. The first thing I noticed about Alpha 5 was that a some screens and layouts were not consistent (this is very bad). It was like a new developer came in later on and changed the styles. (in fact, the the pc-world review at http://www.pcmag.com/article2/0,4149,760886,00.asp said exactly the same thing). Thus, the alpha 5 folks don’t have the same level of consistency that Microsoft has. I only bring this up because it is obvious that a company like Microsoft definitely does have a first rate formalized design process. It is obvious that a company like Microsoft has first rate developers. However, for some reason Microsoft has failed to identify a number of dead obvious tasks that most developers do all the time in ms-access. Alpha 5 does several of them substantially better then ms-access. The first good example is how well alpha 5 integrates with ms-word. Virtually everyone I know wants to bring up a record in a form. When looking at the record, you then want whack a button that launches ms Word via a template for a mail merge. We are talking about a single record here. I doubt I need to point out how obvious and useful this task is to write a single letter to particular client. Alpha 5 does this in a PERFECT and common sense fashion. Ms-access does a extremely rotten job. Of course you can come up with a code solution in ms-access, but you should not have to. So, for some reason, Microsoft often seems unable to figure out to what detail is important here. I am not tring to make a rant here, but something in the corporate culture is causing this problem at Microsoft. It does worry me. They certainly see the forest, but often they're not seeing the trees. Albert D. Kallal Edmonton, Alberta Canada kallal@msn.com
Sun 23 Feb | Matthew Lock | Ditto MS FrontPage, they had a huge lead on most other We Development tools but seemed to totally neglect FrontPage. Almost everyone I know makes little dbs in Access, but no-one I know uses FrontPage.
Sun 23 Feb | Matthew Lock | that's 'most other Web Development tools'
outage... cont. | Sat 22 Feb | web service developer/admin
What I think is ironic here is Joels desire to not return to the site for a very long time. Joel take some advice here. Do something about your configuration. It is ruining your credibility. That switch is going to cause you grief at the very least. BTW the slammer virus was the result of configs like this. One wrong move and youve got 1433 sitting wide open, and a worm on your server is bringing down your ISP. Well see how long free web hostings last after than happens. I co manage something like 50 servers -- none of which are in the same state I am. I had to learn some lessons the hard way. One thing Ive learned is Linux is your friend in the colo. Also not using a secure connection for administration is asking for trouble. You are in the fortunate situation that your users are sophisticated enough to warn you of impending gloom. Take their advice.
Sun 23 Feb | Mike | Yup, I'd say access borked. Look at the count of posts on the topic and then count them. I don't think Linux is an option with an access backend.
Sun 23 Feb | Jeff | From reading about the previous outage, Joel or anyone who collocates a box at a remote site would be wise to invest in a remote presence device, like Replicom's Proxyview, before investing in a redundant switch. This will let you remotely view video and control keyboard/mouse. The Proxyview is nice as the client runs in a web browser: http://www.replicom.com/products.html Do you use any of these devices 'web service developer/admin'? We've used this device for the past year to administrate a mission-critical cluster of servers in the Middle East from California. Remote presence is much more useful then a redundant switch. Jeff
Best ScreenCam software | Sat 22 Feb | Yaniv
I am preparing some training materials for one of my clients. Something similar to Joels CityDesk flash demo. What is the best screen cam software to use? I have looked into Lotus ScreenCam. Any of you have experience with any other software? Any recommendations? Thanks for all your inputs.
Sat 22 Feb | Troy King | Earlier topic here: http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=26145&ixReplies=5 .
Sat 22 Feb | Joel Spolsky | The two I keep hearing about are camtasia and qarbon. I'm planning to do a couple of demos in Camtasia and write a review of it for an upcoming Programmer's Paradise piece...
Sun 23 Feb | Yaniv | Thanks for your inputs. I thought we discussed this before. But couldn't find the right thread.
"SQL Server Developers Face Huge Royalties?" | Sat 22 Feb | Bored Bystander
I saw this article on Slashdot yesterday: http://slashdot.org/article.pl?sid=03/02/21/1323237&mode=nested&tid=155 Apparently some proprietary, patented algorithms are embedded in SQL Server. I chased down the link to the company that claims the patent, and the language was utterly indepherable to me. Message traffic on Slashdot (all legal experts, natch :-) ) seemed to indicate that only users that use data warehousing features are liable. I think this is a real can of worms because its saying that the purchaser of a shrink wrapped software product faces potentially unlimited liability due to the vendors unauthorized use of technologies from other parties. Somehow, this seems very wrong and severely lopsided, since the buyer is relying on a vendors reputation as an assurance that the product is bona fide and most users dont have the means to reverse engineer or do patent or copyright searches on products they propose to buy in order to determine their own potential liability. Does anyone have an opinion or facts on this?
Sat 22 Feb | Nat Ersoz | I seriously doubt it. A large company like MSFT has many tools at its disposal to resolve this. It is common practice for a supplier of potentially patented technology to indemnify its customers (including developers) from problems exactly like this. Expect MSFT to step up to the plate in timely fashion. They will make the problem go away - period.
Sat 22 Feb | RocketJeff | Look at the press release put out by Timeline - Microsoft could have bought the rights so it's customers wouldn't have to pay royalties, but they turned down the offer. Microsoft seems to be trying to throw around its weight in this matter - including tying it uop in the court system.
Sat 22 Feb | Alex Russell | Nat, it seems that MSFT _had_ the chance to indemnify it's customers against liability and flatly turned it down. In fact, the court proceedings seem to indicate that MSFT was aware of the liability it was exposing it's customers to and yet assured them that it didn't exist. If MSFT is going to do right by customers, it's most likey going to come in the form of customer's suing for compensation for damages related to false representation once Timeline takes them to task. I doubt very much it's something that MSFT is going to do on their own. -- Alex Russell alex@netWindows.org http://www.netWindows.org
Sat 22 Feb | Mike S. | Most software licenses explicitly do not limit liability or hold harmless for copyright or patent infringement. That's why the large financial services company that I work for always makes vendors add this to a contract. Otherwise, some little company could sue us for infringing based on use of Microsoft's technology just because we have deep pockets.
Sat 22 Feb | Cedric | If MS doesn't step up to the plate. Their credibility will plummet. Although as of late they haven't been hitting them out of the park, so they could strike out.
Sun 23 Feb | Nat Ersoz | Exactly. Something/somebody ran off ni the weeds on this one, misjudged the severity... They will reel it in, or lose more busniess to the open source world. And this is a fundamental they cannot ignore. They will get it together (not that I'm pulling for them or anything, I'm not. But I know behavior, they won't screw this up - too much).
Sun 23 Feb | mb | Except (at least according to excerpts on /.) this only is an issue for a certain small class of SQL server developers, those who develop some particular form of tool (I forget what). Not regular database development. Of course this is also a typical large corp strategy: take someone's 'IP' and threaten them if they don't license it to you for free. That's what patent cross licensing is all about.
Sun 23 Feb | Philip Janus | I'm still foggy on the whole 'users are liable' thing - does anyone know if that has *ever* happened before? It makes no sense to me whatsoever - am I now responsible for researching patents on every tool in my workshop and every piece of software I buy? Do I have to pay an attorney to do a patent search on 'creating animations with predefined shapes using a timeline' before buying Flash? I think it's an exceptionally bad holding from the judge, and should be overturned on appeal. Microsoft should be liable for the infringement of incorporating the tech as well as the subsequent infringement by those who bought the product - indemnification on a shrink-wrapped package should be a nonwaiverable warranty. Philo
Sun 23 Feb | andrew m | 'I'm still foggy on the whole 'users are liable' thing - does anyone know if that has *ever* happened before? It makes no sense to me whatsoever - am I now responsible for researching patents on every tool in my workshop and every piece of software I buy? Do I have to pay an attorney to do a patent search on 'creating animations with predefined shapes using a timeline' before buying Flash?' And now you realise that this is a requirement, you should understand why software patents are a bad idea. It should also be obvious why many companies like them - this will make a lot of money for Timeline. (While there is an allegation that Microsoft mislead its customers as to their obligations, the end result is that you need to pay a patent lawyer to investigate all patents related to every aspect of the software you use or create. While Microsoft made claims that all patent issues had been dealt with, it appears they either lied or were mistaken.) The thing that amuses me the most is that, apparantly, people who listened to Microsoft's claim that SQL Server developers didn't owe money to Timeline may suffer larger penalties than people who actually did consult a lawyer, even if they came to the same conclusion. Acting in 'good faith' means 'paying a lawyer'. Without the lawyers receipt, you're screwed. Btw, the GIF patent issue a few years back was similar: the GIF format (or at least part of it) was patented, but not widely known to be patented. As a result, large numbers of people had an unexpected bill, because they had failed to do an exhaustive patent search. You should, obviously, do a patent search on every algorithm you use or create, because there's no telling who already own it.
Sun 23 Feb | Alyosha` | 'You should, obviously, do a patent search on every algorithm you use or create, because there's no telling who already own it.' I wonder if anyone holds a patent for quicksort ... '... the State of Washington finds the defendant Alyosha` in violation of patent #75162736, 'Iterative Manipulation of Array Members Using An Incrementing Loop Variable' ...' *sigh*. Weren't patents meant to ENCOURAGE innovation?
Sun 23 Feb | Philo | 'Btw, the GIF patent issue a few years back was similar: the GIF format (or at least part of it) was patented, but not widely known to be patented. As a result, large numbers of people had an unexpected bill, because they had failed to do an exhaustive patent search. You should, obviously, do a patent search on every algorithm you use or create, because there's no telling who already own it. ' But you see - those who used the LZW algorithm had a reason to research it (BTW, I opposed Unisys' 'wait and see' approach - the court should've disallowed the case because they just sat on their rights so long). Nevertheless, the software developer, being so much closer to the problem, can be expected to be more aware of the legal issues. And I don't believe at any time that the *purchaser* of a GIF program/toolkit/etc was liable for the programmer's infringement. But when you buy a shrink-wrapped box off the shelf, by all means you should be indemnified from any potential infringements stemming from the contents of the box. I'd like to stop that judge on the street and ask if he's done a copyright search on the patterns on his clothing, or should he be liable for infringement everytime someone takes a photo of him with that pattern in it? Philo
Sun 23 Feb | let's use another name this time | And I don't believe at any time that the *purchaser* of a GIF program/toolkit/etc was liable for the programmer's infringement. You're wrong. If your web site contains 1 single gif created with software that has no license from Unisys you have to pay them $5000. http://www.unisys.com/about__unisys/lzw/lzw__license__english.htm
Sun 23 Feb | Cedric | One thing I will gurantee. There will be meetings a happening this week in Redmond!
Unloading COM objects from IIS? | Sat 22 Feb | Josh
In the article Lord Palmerston on Programming, Joel mentions learning how to unload COM objects from memory without restarting IIS. Does anyone know how to do this?
Sat 22 Feb | Jasper Kaizer | Make sure the application protection is set to High (Isolated). Then a unload of the applation is sufficient for unloading your COM objects and your other websites keep on running.
Sat 22 Feb | Philip Janus | Use MTS. [I suspect that's why 50% of MTS users have it installed at all] Philo
Sat 22 Feb | Joel Spolsky | there's an 'unload' button in Internet Services Manager, in the site properties. I never noticed it before.
Sat 22 Feb | Josh | Wow! You'd think that that would be more widely known, since it's such a pain to take the whole web service down to update a DLL. Thanks, Joel!
Sun 23 Feb | John Ridout | It only works when the isolation level is 'high' which means that the whole thing runs out of process. I discussed this with MS technical support a while back and they recommended against it, the unloading that is. I store the name of my component in an application level variable and change it after installing my new component. I uninstall the old one later after a restart. This is one of those problems which is resolved in .NOT
Portals | Sat 22 Feb | The Real PC
Have you developed any web portals? What software do you recommend and why?
Sat 22 Feb | Prakash S | http://www.plumtree.com They get my vote.
Sat 22 Feb | Philip Janus | http://www.asp.net/ A bunch of guys at MS have developed a 'best practices' portal in asp.net. The source code is available for free. It's a very nice design - completely modular. Philo
Sun 23 Feb | Thats the way the money goes | www.rainbowportal.net - an extension of the original Microsoft I Buy Spy portal to support a host of cool things.
GPA | Sat 22 Feb | The Real PC
My GPA was 3.89. I have a job. If you delete this without an explanation I will assume that means you dont want me at this forum.
Sat 22 Feb | GiorgioG | My GPA was 3.2 and I am also employed. Never asked about my GPA in interviews, even with no experience. Companies know that GPAs aren't a true indicator. Out of school, they want to see that you have a passion for software development (hell, I think using 'programming is a passion for me') struck a cord with my boss during the interview. He didn't care that I didn't know the platform (Lotus Notes/Domino) or that my GPA was under 3.50.
Sat 22 Feb | The Real PC | A person's GPA doesn't tell you everything about them. There is no number that can summarize a person. On the other hand, along with everything else, it provides evidence. I don't want to be mistaken for the guy with a low GPA who is asking advice (and using my name) about how important GPA is. Some replies said a high GPA shows you're a moron who just does what you're told. Really smart people are too good for that. Well that's bullshit. If you're really smart you can easily figure out how to get A's with minimal effort. So why not do it? Why get low grades on purpose, to prove how smart you are? I like proving to myself that I can do something. How would I know I'm smart if I didn't get good grades and test scores, and learn enough about programming to get jobs? Anyone can say they're so smart and so special they shouldn't have to prove anything to anyone. Every immature person thinks they are the most special person on earth. The reality is you are no more special than anyone else. If you want your wonderfulness to be appreciated you will have to make an effort, and you will have to prove that you can do the things you claim you can do. If you were too lazy to study in school, then there are plenty of other ways to demonstrate competence. The best programmer where I work never went to college, and has easily proven his abilities.
Sat 22 Feb | Bella | You want people with the lowest GPA's working for you. They are the ones who feel dumb, and therefore feel lucky to have a job. People with 4.0 GPA's have been brainwashed into thinking 'the world is their oyster' and will always have nagging thoughts in their heads that they should be doing something bigger and better, perhaps not even in the tech field.. Of course, this bigger and better rarely exists, but they don't know that. So the 4.0 Ivy graduate will never be a content worker, b/c he always will feel that 'he could have done anything', and whatever job he is doing probably is not it. Some may want to 'reach for the stars' and run off to get an MBA or Law degree, b/c, well, b/c they have to ability to obtain one. Yes, you are better off hiring a Community College graduate who is happier than a pig in shit to be working for you. At the end of the day, that is 100x more valuable than someone who was able to evaluate Turing machines in his 'Theory of Computing' class back at MIT.
Sat 22 Feb | The Real PC | That depends Bella. Not everyone wants to be a lawyer or business administrator, etc. There are smart people, like myself for example, who actually like programming. It's the most intellectually challenging and satisfying work I have done, even more fun than getting a Ph.D. in linguistics. Many or most programmers, or most at this forum anyway, got into this field because they couldn't think of anything better to do. Yourself included, probably. So naturally you can't imagine anyone actually liking it.
Sat 22 Feb | Patrik | I dont even have a GPA. Im employed too :)
Sat 22 Feb | raindog | I know that GPA is used in US and Canada... Are the any other countries that use the same grade system (i.e. 4.0 is the highest) ? I just went through an interview and was asked about my GPA for the first time in my life (and after 10+ years after graduation). The problem is that I've got my degrees from a foreign univercity that had the grade of 5 as 'excellent', 4 as 'good' and 3 as 'satisfactory'. On the application form, I put GPA = 4.75... Now I think, it looks weird to HR manager; perhaps it was better to leave it blank.
Sat 22 Feb | Prakash S | Some US Unvis have their GPA on scale of 5 too.
Sat 22 Feb | Vincent Marquez | I'm going to say that GPA has absolutly nothing to do with someone's productivity. Both of my last two bosses (who were outstanding programmers and examples for me) both exceled in school, (one at MIT, the other University of Moscow). Now, they both have a decent amount of respect for me, even though my GPA was well, not so great in high school, and I haven't even graduated college. Another one of the top programmers I know actually flunked out of high school, and is now doing outstanding. Just goes to show that it doesn't seem to matter either way.
Sat 22 Feb | The Real PC | Vincent, You might want to take a statistics course. Your conclusion that GPA doesn't matter at all is based on a ridiculously small sample. It's always possible to find an example of someone who is a great programmer (or whatever) yet never finished school. I gave an example myself -- the best programmer where I work never went to college. There are people who know how to learn and don't have to be guided by teachers who are often third-rate anyway. But programmers at least have to know how to read and learn. A good GPA is evidence for that. A low GPA is not a good sign and if I were trying to hire someone I would ask their GPA if they were a recent graduate.
Sat 22 Feb | Philip Janus | I think the real problem with using GPA as some kind of measuring stick is that manymany people simply haven't finished maturing by 21, especially if they've been pampered (read: Parental lifeline followed by collegiate paternalism) the whole time. Don't get me wrong - there are people who *do* mature, do well in college, and go on to excel in life. But others are still coming to grips with life between 18 and 22, but then go on to be brilliant performers. Add in that (IMHO) a lot of undiagnosed ADD types fumble around in college but then get their act together, as well as (IMHO, again) ADD and IQ being directly related and anyone who looks solely at GPA is cutting off a valuable resource. Bottom line - after two years out of college, a wise employer will be 100x more interested in work performance than GPA. Philo
Sat 22 Feb | Prakash S | It is a question of assumptions. If a person has not completed High school - most people assume he/she is a bum, and when you find out that they have been programming for some years and they are good - you are suprised 'cos you always assumed something else. If a person has graduated with whatever BS/MS/PhD - you assume that a person knows so much, and can do so much; which is again not true. Of course there are always exceptions.
Sat 22 Feb | The Real PC | I'm not in love with the education system here in the US and for the most part I think it's a waste of money. I have taught myself how to learn from books and most of what I know did not come from university professors. Even while I was going through formal education, anything of value that I learned, in general, came from independent reading. A person can certainly be smart and educated without a degree or a GPA. On the other hand, a person can certainly be stupid and lazy without formal education.
Sat 22 Feb | The Real PC | Oh, I forgot the last sentence. A degree improves the odds that a person will know something or at least be motivated and capable of learning. It's some kind of evidence, although you never really know until you have known and worked with the person for a while.
Sat 22 Feb | Alex Russell | I strongly dissagree. A degree proves that you have a pulse and can play a university's little game for 4 years without getting so sick of it you go do your own thing. An ADVANCED degree proves you have some level of interest and motivation (or something similar). Neither degree nor GPA are strongly correlative with personal motivation, just the ability to focus on externally specified tasks. Disclaimer: I got fed up with university bullshit and dropped out. And I'm happily employed. -- Alex Russell alex@netWindows.org http://www.netWindows.org
Sat 22 Feb | The Real PC | There are people who are unable to concentrate or remember what they read. A degree indicates that you don't have a serious learning disability, and that you have enough discipline to concentrate on subjects that may not always be riveting. And knowing how to play games sometimes doesn't hurt. Wherever there are human beings there you will find stupid games. I found myself in the middle of graduate school seriously disagreeing with some of my professors about a certain researcher who happened to be a close friend of theirs. They were incapable of seeing anything illogical in anything he ever said or wrote. My thesis was at odds with his ideas and I had to get it accepted somehow in spite of that. I could have told them all to go to hell, I was smarter than all of them, they were nothing but politicians, etc. But I decided to calm down and go ahead with my research without making a big deal out of the areas of disagreement. I didn't change my ideas at all or pretend to agree when I didn't. But I made sure to get along with the professors and not to act like some kind of rebellious nut. I felt like I was playing a game, sort of. I bet everyone in every career runs into situations like that, where you have to supress your anger and smile in order to get your way. Knowing how to get along with authorities and show them respect is a useful, even essential, game to know. Not that all authorities deserve respect, and not that every degreed person is a game-player. But in general, knowing how to fit in reasonably well is necessary if you want to be successful. Having a degree shows you have at least a minimal ability to fit in with some kind of organization. I would be interested in hearing stories that disprove this idea, though.
Sat 22 Feb | Vincent Marquez | Ok, maybe the question/topic needs to be changed. Once someone has proven themselves to be productive in a real working enviorment, is GPA still important. Of course, when interviewing kids comming right out of school with no work experience for low level positions, all you have is GPA. But someone interviewing for a mid level position, with solid experience, does it still matter?
Sat 22 Feb | The Real PC | Whatever we have done in our lives stays with us to some extent. A low GPA means less and less as time goes by, if your work is good. A high GPA means less and less if your work is bad. It's like anything in life. If you committed a crime once but have been a good citizen for many years, people forget about the crime eventually. If you were the valedictarian of your high school but later became a drug addict, people forget that you were once smart. A good GPA won't guarantee a successful life, and a bad one won't prevent a successful life. It's just one more thing among many.
Sat 22 Feb | Philip Janus | 'Once someone has proven themselves to be productive in a real working enviorment, is GPA still important.' If you're interviewing a .Net developer with eight years experience, how much time are you going to spend asking him/her about that Access 1.0 project that's first on his resume? Do you care about it? Then why would you care about the binge/purge education that preceded it (and may not have even been on relevant information)? Philo
Sat 22 Feb | Bella | Skills and experience are all that matter in this field. I have never been asked my GPA. I don't even think I know it, to be honest. Quite frankly, I don't even think anyone ever even asked what college I attended, nevermind my GPA.
Sun 23 Feb | annonymous | To the RealPC, sorry for using your name,anyway my gpa is 3.52 if it makes any difference at all.......
Sun 23 Feb | Bored Bystander | Bella has an interesting theory about the relationship between high GPA and snobbish tendencies. Speaking as a former high - SAT kid with a good GPA, he's pretty much right. :-) It did take me awhile to unlearn the entitlement thinking and arrogance that toadying parents and school administrators habitually courting the smart kid tended to breed. (The problem with being a smart kid is that everyone *loves* you when you're 19 because they're flattered by association, but when you're 35+ and smart, everyone utterly despises you because you're almost always right, but not politically aware enough to shut up about it... ) Having said that... I do find a high correllation between the ability to work at a professional level in this industry, and the possession of *some* college degree in a hard science or engineering. The most aggravatingly hackish and disorganized programmers I've known tend to not have college degrees. They also scorn or disregard basic communication skills such as technical writing, and they don't seem to be able to grasp certain concepts such as the interlocking features of an object oriented language. Lastly, they get INCREDIBLY defensive when they're caught in an error that is caused by the lack of formal methods. I generally don't like working with non college educated people in this field because head butting against ignorance ensues. Not always, but generally. College basically teaches you how to learn, but I think that the exact GPA is a somewhat immaterial measure of productivity and correctness of code. I do think GPA is a rough character and judgement indicator when placed in the context of the person's intellect and motivation. Straight A's or the equivalent (IE, not one 'B' or lesser mark) indicate anality about the appearance of perfection and indicate slavish adherence to standards. The most absolutely boring and methodically unimaginative people I've known have had mathematically perfect GPA's. A smart and pragmatic person who has a properly cynical attitude toward life (such as believing that appearance is not everything) should generally earn close to (but not exactly) a 4.00 (A) GPA. Significantly less than a 4.00 GPA for a highly intelligent, high SAT/admission test person indicates lazy genius syndrome, self esteem issues, etc. - contrary to some declarations I would hesitate to hire someone with great gifts who 'slummed'. Relatively high GPA coupled with an average IQ indicates high motivation, and is probably a really good indicator of later success in life. It's rather telling to me that one highly dysfunctional company - Big Blue - was (in the early 90's) so anally concerned with GPA that an interviewer asked me my college GPA. And I was out of college, what, 13-14 years. I smirked and said '3.6' (true) which I knew was good enough. But at Big Blue it was a sort of country club 'good breeding' mentality, and had nothing to do with assessing capacity to actually learn or produce.
Sun 23 Feb | Jonathan A. | Well I must be dumb as a rock considering that I got a 980 on my SATs and graduated college with a 2.7 GPA. Could be that I spent more time doing software development and running businesses than I did with school. Since I just graduated recently, I'm not sure what effect it will have on me. I doubt it will have much effect at all.
Sun 23 Feb | Vincent Marquez | Bored Bystander, a high GPA may show that somone has a high level of 'anality', but I fail to see how that relates to pure productivity. Sure, if i'm hiring some bum right outta college and I need him to wade through thousands of lines of code and fix syntax errors, add some whitespace, and rename variables thats fine and dandy. It says nothing on pure intelligence, much less creativity (which is very important beyond a junior programmer position). Your comment about non-collegiates having trouble with Object Oriented programming...i'm going to say that you have it reversed. I've worked with a number of people with both BS's and MS 's from some very good CS schools, and by far they are the ones that don't 'get it'. Its true that this is a small sampling, and maybe it just says something about california's educational system, but most graduates are clueless. Does anyone else feel like this is the old 'college vs no-college' debate in disguise?
Sun 23 Feb | Bella | I will say this. People without college degrees are incredible insecure, even if they are billionairres, and even if they do not consciously know it.. No amount of money and success can overcome that nagging little voice in the back of their head that they just got 'lucky', and are'nt that 'smart' afterall.
Sun 23 Feb | Bella | > A degree indicates that you don't have a serious learning disability, and that you have enough discipline to concentrate on subjects that may not always be riveting. I disagree. Retarded people (literally) routinely get college degrees now. Didn't Hellen Keller get a degree? I would classify her as having a 'serious learning disability'
Sun 23 Feb | Bored Bystander | Jonathon: >> Well I must be dumb as a rock considering that I got a 980 on my SATs and graduated college with a 2.7 GPA. Could be that I spent more time doing software development and running businesses than I did with school. Usually it means that the individual doesn't have a good worth ethic or otherwise can't apply themselves; they have the smarts, they just don't use them. But obviously I'm generalizing. One of the biggest potheads I knew from high school flunked out of college (mommy & daddy paid tuition, natch) but had mid 600 SAT's. No self esteem there, no work ethic, defeatist attitude. I knew a few others that dropped out of college because they basically wouldn't apply themselves to it. Your story is different. Vincent: >> Your comment about non-collegiates having trouble with Object Oriented programming...i'm going to say that you have it reversed. I've worked with a number of people with both BS's and MS 's from some very good CS schools, and by far they are the ones that don't 'get it'. Its true that this is a small sampling, and maybe it just says something about california's educational system, but most graduates are clueless. New graduates are clueless, as is anyone at the entry level. Here is an order of precedence in whom I'd consider for a software development job that involves design and implementation as well as possible leadership. - College educated + demonstrated track record of completed, successful projects. (IE, over 5 years experience in SW dev) - No college degree + demonstrated track record (> 5 yrs). - College educated + some experience with a few independent or team projects (2-5 yrs). - Non college educated with intermediate experience (2-5 years. - MIGHT consider but skeptical. - College educated with less than 2 years experience - MIGHT consider but very skeptical. - No college degree with < 2 yr experience - would not consider. Bella: >> I will say this. People without college degrees are incredible insecure, even if they are billionairres, and even if they do not consciously know it.. Some of the biggest arguments I've witnessed or gotten into have been workplace conflicts involving a non college educated 'engineer' or programmer who is simultaneously incredibly defensive about their lack of pedigree but also adamant that their self training indicates that the are *right*. The common problem I've found with non college educated types is that they haven't learned how to reason at a professional level, and they mistake reasoning for a personality and style based contest.
Sun 23 Feb | The Real PC | There is an awful lot wrong with the education system here (US). I could write a book on that. We could get rid of education altogether and go back to hunting buffalo with arrows, or we can try to improve the system and help it evolve. I learned a lot by reading on my own, and I also learned a lot from formal education, in spite of its deficiencies. You can't make a simple statement that formal education is either good or bad -- it is both good and bad and it's a complex subject.
Sun 23 Feb | sumit | I have a 3.5 gpa, 2 years experience ,can anybody offer me a job or at least an interview?
Sun 23 Feb | Tj | I've never been particularly concerned about having left college before getting a degree. (I had more important things to do.) After all, getting some job is just another puzzle, and if someone is arrogant enough to consider college a waste of time, he/she can solve this one. Of course, I do regret that I'm not living the college lifestyle for all it's worth. But I'm living another life, so who knows. Fortunately, a lot of college resources are moving online. For example, some lectures: http://www.swiss.ai.mit.edu/classes/6.001/abelson-sussman-lectures/ and you can just look at online courseguides to see what books many classes use. Finding the best math books is harder since they haven't caught onto the web, but the Amazon recommendations aren't so bad and jibe with the books I'm acquainted with. And plus, us computer people are often a lot more rigorous with our symbols than math people are, so math is no big deal.
Sun 23 Feb | The Real PC | The only reason for going to college is the lifestyle, since now so much informaton is available online. Eventually people will wake up to the fact that $100k or more is a lot to pay for a chance to live in a dorm and go to parties. I think traditional colleges and universities will die out and most learning will be through the internet. The main reason universities exist is so tenured professors can have a nice life. I spent 4 years in the academic system and found a lot wrong with it. But I am 100% in favor of education in general, and I believe it will improve.
Sun 23 Feb | Vincent Marquez | Real PC, you said it. Bored Bystander, i'm going to say this. I'm going out on the limb, but i'm going to say that the majority from each group would be 'no-hires', but over all, your probably right in order of competance. I can tell you though, I've had 3 years experience, and i've been picked for jobs over people in all of the categories, (and not because i'm cheaper either). I think the type of experience is very important too. I got invovled with start ups early on, so I had to learn an incredible ammount very quickly, and I was exposed to a multitude of techologies. The average college graduate may get a job debugging code or writting pieces of classes, and it may be two years before he sees another languge, gets to design something, learn a new platform, etc. To reduce people to categories is good way to miss out on some talented competent people. Also, i've been involved in the hiring process (got to make recommendations and screen resumes). When going through hundreds of resumes, we didn't have TIME to even look at schooling, unless people put it at the top. All we wanted to see was 2+ years of [x technology] and some details on that.
Sun 23 Feb | Bored Bystander | Vincent, I've got no argument with anything you say. Your points are excellent. The specific type of experience, the pace of work performed, and the prevailing standards used by the past employer's organization counts for a lot. I guess to bottom line it - I've found subtle differences in the general way that formally educated people think, reason, collaborate professionally, and produce designs, compared to non formally educated individuals. These differences, in my experience, have been consistently in favor of the college grad. But on the subject of GPA, I've found that GPA alone is pretty unimportant as an indicator either of later financial and business success or of ability to do good work. Poor GPA may indicate a very sharp individual bored with the futility of jumping through hoops. The problem is 'chicken and egg', though, for a newly graduated entry level person. Lacking proven experience, a hiring org has to use *SOME* metric that is consistent and repeatable....I just have a real phobia about 'perfect 4-0' because it can indicate obsessive attention to meeting arbitrary standards of perfection - which is usually counterproductive to getting something done & shipped in real non college life.
Sun 23 Feb | | >Poor GPA may indicate a very sharp individual bored with the futility of jumping through hoops. But that's what work is. I have made more money doing boring mundane programming contracts than if I ever did anything creative or challenging. A person who cannot get at least above a 3.0 on a 4 point scale is either lazy or incompetent. Colleges usually curve there grades or inflate them so you only have to do better than the majority of your class. The excuse of I am smart and school bores me is BS.
Sun 23 Feb | The Real PC | That's right, it's BS. If you're so smart it's easy to get high grades. Getting poor grades to demonstrate how smart you are is self-destructive and pointless. If you got low grades don't brag about it and try to claim good grades are a sign of stupidity. Just make up for it now by working harder. School is more interesting if you approach it as a challenge and do your best, and almost any subject is interesting if your attitude is positive. Almost any subject is boring if your mind is closed in advance. School isn't necessary for learning, but if you are in school you might as well learn something, since you're paying for it anyway. Once you start learning, you will get good grades effortlessly. Simply going to class and doing the reading is enough to get A's most of the time. That's why I do not accept the idea that 'A' students are mindless idiots who compulsively obey orders.
Sun 23 Feb | Vincent Marquez | Yeah, the last two points are very important. I've had to learn in the job market what most learn in school. Oops. I always considered school 'stupid', because it was easy and mostly busy work. I quickly learned if you want to get ANYwhere in life, you better be prepared to do a lot of crap work to prove yourself. Smarts doesn't mean as much as I used to think. I would hire somone who had a high work ethic and enjoyed programming before I hired someone who is super intelligent.
Sun 23 Feb | Tj | Looking at previous threads (like the unis vs. msft one) it seems that the industry looks at college as a breeding ground of codemonkeys and paradigms. That's self-defeating, since college is also a place to make mistakes, be countercultural, and otherwise go off the deep end. To do it all for the cold eye of The Industry is missing the point. A smart interviewer, if GPA mattered, would ask about the classes and activities that went into it. Fact of the matter is, GPA is /totally meaningless/. It varies across colleges, classes, and even years. A can of worms. I'm glad I didn't take a single CS course -- that would have been a waste of money. One does not go to an place like college without taking interesting courses and risks. Now maybe it's best to have employees with the caution that comes from maintaining good grades. Maybe this is an empirical debate, and I've noticed that college people are certainly methodical and reliable. But I just don't see colleges going, 'Oh yes, Norm was promoted to VP of human resources at Broadvision, he'll make a great researcher here!'
software to dsp work | Sat 22 Feb | programmer
My background is totally in software, I dont know much about FFT and various transforms to do DSP work.If I want to change fields, should I get a masters in computer engineering? How difficult is it to pick up filtering and FFTs?
Sat 22 Feb | Bored Bystander | >> If I want to change fields, should I get a masters in computer engineering? >> How difficult is it to pick up filtering and FFT's? Fast fourier transforms are just one specific method out of many of signal processing, so that's the area you're really asking about. 'How difficult?': signal processing has traditionally been taught in EE programs and is calculus and differential equation heavy. If you like calculus you'll do well in signal processing; if you don't you won't. I don't know what the career path is exactly like for a programmer who wants to work with signal processing, but my guess is that an additional degree (such a master's in EE) would basically prepare you for an entry level development job in a company that has use for signal processing skills. Think military, avionics and DOD applications, and applications such as radar, not consumer level stuff, since the latter moved offshore years ago.
Sat 22 Feb | Myron Semack | I'm a recent comp sci grad who has recently been doing DSP development for TI and TriMedia DSP's. The kind of education you'd want really depends on the field where you're going to use the DSP (audio, video, general number-crunching, etc). You'll want some kind of training/literature that compliments the area where you want to get involved. Consumer-grade DSP stuff is pretty rare in the US anymore. There is a huge market for military/industrial DSP work, though. I really suggest you check out TI's web site. A large portion of their website is dedicated to teaching people how to develop DSP applications. Analog Devices is another good place to look.
Sat 22 Feb | Nat Ersoz | I suggest R.W. Hamming's 'Digital Filters'. A very intense intro to sampled systems and filters. Do not expect a light read, although the book is barely over 100 pages. Prerequisite is understanding complex variables. The linear algebra and probability (noise analysis) required is handled in the book. It contains no code examples. It is not a 'howto' book. Just pure practical math. If you don't think that math is practical, find something else - not filters.
Sun 23 Feb | programmer | Myron, I am also a recent grad, but did very little coursework pertaining to FFT's etc. My Math is pretty strong.I was working with computational geometry in my last job, so it won't be a problem.My question is how to find an entry level job in the field? do I need an MS in EE? Can somebody be self taught, though I doubt it.
Sun 23 Feb | Myron Semack | I have no Master's degree. I'm sure it's not required, but it can't hurt. My company has been making single board computers for years, and we've been recently expanding our DSP product lineup. I just happened to be one of the software guys, and so I got moved over to DSP work. If you want to get a job doing DSP work, look for a good embedded systems company that focuses on the industrial/military/COTS market. There are a lot of embedded companies looking to break into DSP. The thing to remember about DSPs is that they're used in all kinds of different applications: Audio, video, radio, avionics, automotive, cell phones, data aquisiton, etc. What kind of training, and how much, depends on the application you want to speicalize in.
Favorite telnet client for Win32 | Sat 22 Feb | Jeff
Whats the best telnet client for Win32?
Sat 22 Feb | Dan Maas | My two favorites are Tera Term and PuTTY. Tera Term looks more 'polished' but PuTTY has better support for class UNIX control characters. Both have add-ons that can do SSH also.
Sat 22 Feb | T | dtelnet, very small and simple. http://dtelnet.sourceforge.net/
Sat 22 Feb | Jan Derk | My vote goes to putty, especially because it supports ssh and ssh2.
Sat 22 Feb | Patrik | PuTTY is what I use. I wouldnt go back. Its small, efficient, one EXE @ 350K, supports ssh, and telnet, and even rlogin, so it pretty much covers your needs in the area.
Sat 22 Feb | Damian | Yep, can't really go past PuTTy
Sat 22 Feb | Bella | I've used PuTTY for ssh (secure shell), but I've used eXceed for everything else.
Sat 22 Feb | Joel Spolsky | Nobody uses WinCRT any more? For a long time that was the gold standard...
Sat 22 Feb | Daniel Shchyokin | secureCRT
Sat 22 Feb | Ros | Putty. Definitely.
Sat 22 Feb | Alex Russell | rxvt/OpenSSH from cygwin. There's no excuse (or good reason) to be using telnet in the year 2003. Unencrypted network logins suck. -- Alex Russell alex@netWindows.org http://www.netWindows.org
Sun 23 Feb | Vincent Marquez | putty is great, but WinCVS needs a COMMAND LINE ssh, which putty doesn't support (not that I know of). I am forced to use TWO terminal clients, putty and SecureCRT.
Sun 23 Feb | Neil E | You could set Putty to forward the CVS port from the remote machine to localhost and point WinCVS at that. That works for me with TortoiseCVS anyway.
Sun 23 Feb | Jan Derk | Yep port forwarding is great. It makes anything (ftp, http, pop, etc) secure. I don't use it myself, but if you want a command line interface to Putty use PLink. The Putty manual even contains a topic about how to use PLink with WinCVS: http://the.earth.li/~sgtatham/putty/0.53b/htmldoc/Chapter7.html#7.5
Sun 23 Feb | Bella | Don't forget all the Macros you can create with eXceed. auto-login, etc
Sun 23 Feb | Rodger Donaldson | Another vote for putty and the related goodies (pscp, etc). Very slick.
Sun 23 Feb | Chris Blaise | Vincent, Have you looked at plink from the putty distribution?
Sun 23 Feb | Cedric | Microsoft Telnet Just kidding. Putty. We build great Operating systems, database servers, development tools, etc. Give you a decent telnet client. Hell No!
Indian company phone interview | Fri 21 Feb | sumit
Having been out of work for sometime in Canada, have been applying for jobs in India, my home country.I sent out the e-mails throught my Dads e-mail in India, and gave my address in India.Now one of the companies have sent an e-mail asking for general info, and phone number to schedule a telephone screening. They also ask for my salary at current/last employer.Converting my salary from CDN$ to Rupees would look to be exorbitant, so I left that part out. Regarding phone numbers, should I give my current phone number, or the number in India? I dont know how the Indian company would react if I gave them a phone number outside India. Any suggestions?
Sat 22 Feb | Prakash S | >'Regarding phone numbers, should I give my current >phone number, or the number in India? ' - Give your current canada phone number, unless you plan to go to India and work there - anytime soon. >I don't know how the Indian company would react if I >gave them a phone number outside India. Well you don't, that might not neccesarily be bad. For all you know they might have a client 10 miles from where you live , who is looking for a person with your kind of skillset. (Wishful thinking, maybe)....but you never know. Looks like you are not sure about leaving Canada and going to India, that my friend you have to answer for yourself - that is the million $$$$$$ question?
Sat 22 Feb | sumit | Prakash, no the job is in India, I would have to relocate anyway.I am basically looking for a job, does not matter where, willing to relocate, job situation looks better in India then Canada currently, can always come back to Canada
Sat 22 Feb | indian programmer | as an indian s/w engineer in india i can assure you that you should sell your foreign experience instead of trying to hide it. honesty is the best policy anyways.
Sat 22 Feb | sumit | Indian Programmer, from my experience most of the Indian companies think twice before doing a phone interview overseas.....
Sat 22 Feb | Walter Rumsby | This seems like a weird question. You're in Canda and you're asking what number to give for phone interviews. We'll I'd say give the one the can contact you on - the Canadian number. I understand that you're worried they'll see a non-Indian number and disregard your resume, but eventually, the fact that you're currently in Canada will be an issue that has to be dealt with. Give the Canadian number. Good luck!
Sat 22 Feb | Prakash S | Give them the Canada number, tell them you will be there till a certain date, after that date they can contact you in India. Give them both the numbers.
Sat 22 Feb | Dieter | Can't you schedule the phone interview by mail and propose to call them?
Sun 23 Feb | John C. | The way you are approaching this makes it seem like you are trying to hide something. Why not be up-front about your situation: You are from India, have worked in Canada for a while, want to move back. Give your previous salary in Can$ but make it clear you recognize that's an unrealistic target due to cost-of-living differences etc. Give your Canadian phone number and offer to initiate the call to spare the company the expensive and inconvenience. Sell your overseas experience as an ASSET rather than a liability. Sooner or later the company is going to find out the truth anyway -- like when they check your references or your previous employment history. Or when they call (in the middle of the night, your time) and ask you to come in for an in-person interview tomorrow and you have to tell them, well, even if you caught the next flight out it would be 24+ hours before you could be there. Alternately, if you definitely intend to move back to India, why not just do it now? Not only would it be easier to look for a job while you're there, but your day-to-day living expenses would undoubtedly be much lower than in Canada.
Sun 23 Feb | sumit | John C, There are a few issues involved here, as I have become a Canadian citizen. no longer have my Indian citizenship, so would actually need a work permit.I am still not 100% sure on the move back, am still looking in Canada, basically exploring the waters.
Don't let your wife do usability testing... | Fri 21 Feb | I wish I had been born rich
I did, and she exposed all these flaws in the design of the screens, the assumptions I had made about my users, and the lack of good help content. Now I have to take her out to dinner, which blows my entire marketing budget for my website. Anybody know the winning lotto numbers in advance?
Fri 21 Feb | Robert Chevallier | LOL!!
Fri 21 Feb | Joe Blandy | 4 17 24 39 42 49
Sat 22 Feb | tapiwa | 42
Sat 22 Feb | Craig | OK, so 42 is the answer, but what's the question?
Sat 22 Feb | Metric Tons | How much wood could a woodchuck chuck, if a woodchuck could chuck wood? The answer is obviously 42, but the tough part of the question is what unit of measurement is it in?
Sat 22 Feb | Lotto | Hehe. Sounds like someone has'nt played the lottery. Take for example the Powerball, I believe there are 6 numbers. The first five range from like 1 - 49 and the 6'th (i.e. the powerball) ranges from 1 - 51. (Don't quote me on that.) So when the poster posted that list of numbers, he was guessing all six. The odds are like 1:120,000,000. Now if there were only six choices, which i'm assuming the 42 was picked from the previous posts list then yea the odds would be a tad too easy 1:6. I've written a program that takes all the previous PB picks and does some crazy stuff with 'em, but it still does'nt help me win hehe. Although it was kinda fun making it.
Sat 22 Feb | Another PC | 42 or 6 is ALWAYS the answer contingent upon whether you believe Douglas Adams or George Carlin
Sun 23 Feb | 14 year contractor | 42 is how many times you would need to fold a piece of paper .1mm thick so that it was 384,000 kilometers thick (the average distance to the moon).
Why are you still employed? | Fri 21 Feb | Li-fan Chen
I am sure people have asked this before many times. So heres the question again: What kind of company are you at and why are they (still?) making money? What is your feeling about the growth possibilities? What is it that they do or how they do it that allows them to survive the dot com (and keep you around)... Do you think they have a really good idea? Why? And how do you plan to take advantage or contribute a big part of that?
Fri 21 Feb | Ian Stallings | [What kind of company are you at and why are they (still?) making money? What is your feeling about the growth possibilities?] I subcontract for SAIC under TekSystems (AeroTek). They do mostly government contracting which is increasing spending. They will continue to grow with the new money allocated for the Dept of Homeland Security. [What is it that they do or how they do it that allows them to survive the dot com (and keep you around)...] see above [Do you think they have a really good idea? Why? And how do you plan to take advantage or contribute a big part of that?] Its a good idea, buit it's not my idea. I don't plan to do anything but give them solid work in exchange for solid pay. I see no future inside SAIC and If i stayed it would be temporary until I found another job. My parent company Tek Systems is really just a body shop like many others I have worked for. Although I hope that I will be able to shift to another project after this they might just as likely get rid of me. That's the contracting business. I will put the money aside for my own small software business.
Fri 21 Feb |        | I work for a billing company. It's a super idea as long as people still need to get billed. My plan is to do just a little more than what is expected of me and keep on getting a paycheck.
Fri 21 Feb | Benji Smith | I also work for a company that does government contracting (as well as commercial projects). In fact, the company produces natural language processing software, and we're starting to get recognized as a respected contractor of intelligence agencies. The amount of work that we do has skyrocketed in the last two years.
Fri 21 Feb | Vincent Marquez | I'm working at a small company that does 'advertising' for companies. I'm almost positive we make most of our money of software development, but I guess after the dotcom crash, no one wants to own a 'software' company. Since we're small, and only have one big client, there isn't really any where for me to go. Hopefully if we get another big client, we'll have to grow our division a little. There is always plenty of side contract work for me, if I didn't want a steady pay check I could probably take a chance doing that.
Fri 21 Feb | Li-fan Chen | I just want to learn a bit about everyone here; thank you guys for your feedbacks. The company I work at has transformed over time to meet customer needs. We currently offer permission-based html-basd email combined with web landing webpages to grow relationships between our customers and their customer base. Although some of the content we have created saves customers lots of money compare to their traditional method of growing relationships (soft-sale mags, events and television shows), it plays a support role rather than steals the whole show. Everything's measured and there's fun technology at work (I do some programming and data work). The key thing to me is I have a chance to living in a great city (Toronto!) while paying the bills. -- David
Fri 21 Feb | Ian Stallings | [We currently offer permission-based html-basd email] I've got a great idea on the drawing board for an email system to do just that. I have written mail software for the past few years so I wanted to capitalize on that. It's actually one of the ways my small business intends to make money, as a service provided to customers using our products and custom in house software. Technically it was the most intriguing app I've worked on in quite a while, a distributed email system that could be scaled up quickly when the need arises by simply plugging in another node to a cluster. I know this could be misconstrued as a spam system but I am highly opposed to spam and anything that smells like it. Permission based marketing is more like getting an email from JoelOnSoftware because you signed up for it, the service has a legit market, some clients need to send out massive amounts email for legit reasons. For instance - large retailers that need to send million+ emails in a short time period to mail list subscribers and handle the responses in a variety of ways. We would have to screen all customers very carefully and also watch them very carefully. Being labled as a spammer is the kiss of death in that industry.
Fri 21 Feb | Li-fan Chen | DartMail (a part of DoubleClick) is one of several major email deployment engines. Yeah I think it's hard to stay in this business with any good will left if one doesn't do it properly. DartMail has clusters that track clickthroughs other important stats as well as basic deployment clusters. I think Microsoft is coming up with something too calll bCentral. Sorry, ,a little off topic here :D
Fri 21 Feb | | I'm not employed, I'm the owner.
Fri 21 Feb |   | I just finished writing an installer and configuration setup for a POS system. I have my own company for tax purposes but am mainly a programmer for hire (not perm unless alot of $$$).
Fri 21 Feb | doobius | a startup. they're not.
Sat 22 Feb | Myron Semack | I work for an embedded systems company. We specialize in PC/104 systems, and are pioneering a new form factor. We make single boards, and complete systems. The COTS market is always growing, and PC/104 grows with it. Our business is split about 50% military/national security and about 40% industiral. Our customers are very diverse. We don't have any one customer that accounts for the majority of our sales. Military spending is up right now, so we're doing pretty well.
Sat 22 Feb | raindog | At the moment, I'm unemployed and looking for job... Had 4 interviews and here's an interesting pattern: all these 4 companies are profitable. At the same time, none of the 5 companies I've been working with for the latest 10 years was profitable. The dot-com time is over ;)
Sun 23 Feb | Rodger Donaldson | I'm self employed. My principle client is a bank. Banks, like other big companies, can be a pain in the arse (all the silly things associated with big companies). But they can always pay the bills. More specifically, mine. As for why they still want me - I get the job done, and my rate, while high enough to keep me happy, is low enough that they're happy for me to stick around. Plus, I'm not a precious kind of guy - I'm not the contractor who swans in and declares himself to improtant to be doing boring support/documentation/training type work, who only wants to do interesting things. Want me to do an architecture? Fine. Want me to document something I've built? Fine. Want me to train people so they can take over from me? Fine. As long as it pays, it's my job.
Sun 23 Feb | Rodger Donaldson | Now that I think about it, there's one other factor: I'm multiskilled. I can turn my hand to most things, so there's always something that needs doing that I can do.
Sun 23 Feb | Hiding behind the water dispenser | I work for a huge multi-national, they just haven't got around to sacking me yet. I'm sure they will.
Commoditizing your compliments (part IV) | Fri 21 Feb | Just me (Sir to you)
I guess hardware vendors might not be cheering the acquisition of Connectix VM technology by Microsoft. http://www.microsoft.com/presspass/press/2003/Feb03/02-19PartitionPR.asp
Fri 21 Feb | Li-fan Chen | Why do you say that?
Fri 21 Feb | Just me (Sir to you) | As a sofware vendor hardware is a natural complement. Eliminating the need for more boxes by utilizing them more efficiently gives you more playroom in your margins at the same customer solution pricepoint. Cynics might want to look at it as allowing one Dell crunching away to run 10 Win2k server licences, instead of 10 Dells ideling away at 1 licence each. Dell -, MS +. Unlike VMWare, MS could give this stuff away for free with every box of breakfast cerial and still make a handsome profit on it. Another lesson: Never count on longterm profits from selling someone elses 'Commoditize your Compliments' enabeler?
Fri 21 Feb | Li-fan Chen | Ahh, dood.. sorry for the spoon-feeding request.. it's too early still.
Fri 21 Feb | Kevin | It may be true that 10 smaller Machines could be replaced with 1 large machine but that one machine will have much better margins for the vendor. (Does M Dell want to sell 10 machines with a $25 dollar margin or 1 8 way box with a $2500 dollar margin?)
Fri 21 Feb | Just me (Sir to you) | It only works for mostly idle or not symultaniously spiking machines of course.
Sun 23 Feb | John Ridout | It's important for Microsoft because MS software doesn't scale vertically. All that faffing with federated SQL Servers is because you are tied to IA32 and the IBM PC clone.
Database Platform Independence | Fri 21 Feb | Justin
I am working on a suite of software that needs to be made database independent. Currently, the existing software is ASP/VB based and all the database interaction is achieved using ADO. The system currently runs against SQL Server 2000. Some parts of the system run on PDAs using embedded VB with wireless/GSM links. The SQL is all inline and parameters are passed as ‘?’ using objCommand.Parameters, e.g. Select * from tblExample where RecordId = ?. No stored procedures are currently used. Constraints: Need to keep code rewriting/refactoring to a minimum; Need to script schema/demo data and provide easy install. This doesn’t need to be idiot proof or client friendly. No budget for tools – keep suggestions free/cheap (sub $250). Don’t have implementation deadline (yet). Future migration of system to .Net DB Platform is currently SQL Server, but I need to support Oracle and possibly MS Access. I have no details of any others, yet. I’m not a DBA, but am quite competent with creation of scripts for all tables, triggers, stored procs, views etc. I have 20+ years coding experience. Key skills are VB, ASP, XML/XSL, COM+. I know very little about ADO.Net and VB.Net. I have previously worked on systems that were platform independent, where the SQL was all inline and used ‘SQL Helper’ functions to ensure that joins, date functions, aggregate functions etc all conformed to the selected database target. The schema was built by the installer from generic scripts – I don’t remember how the differences were catered for. I have some ideas, based on my existing experience, but would welcome any suggestions/comments.
Fri 21 Feb | Patrik | Could you please elaborate on exactly why you would database independence for a niche app? ... I take it since it requires SQL servers (of some sort) and has PDA devices using GSM links, I take it its nothing that I can pick up at CompUSA. In my experience, when you write niche-apps that solves a business problem, for a company they will buy it regardless of database plattform. If it runs on MS-SQL server and I have Oracle DBs, but the application does something that would save me $100K anually, I would take the investment and be done with it. We had a niche applications for hospitals at a place I used to work, we decided to go with Oracle databases since if you standardize on one DB you can use the specific features of that DB to make your application more effective. Supporting multiple databases always, always leads to least-common-denomination problems, like ineffective storage of datatypes, handling all data as text, for portability and no referential integrity checking in the database, because its all implemented differently. In my oppinion going with one DB (Im not going to be religious about which one) will give your application a competetive edge compared to the applications that fall into the platform-independence trap.
Fri 21 Feb | tapiwa | I agree with Patrick. More often than not, there really is no compelling reason to be database platform independent. Beware of the lowest common denominator syndrome. Having said that though, you can start by looking on hotscripts and freshmeat http://www.hotscripts.com/ASP/Scripts_and_Components/Database_Tools/ http://freshmeat.net/browse/67/?topic_id=67 There are a few data abstraction tools and libs
Fri 21 Feb | Justin | I agree with Patrik, too. For preference, I would choose SQL Server 2k as that's what has been used already (plus I'm much more competent with it than Oracle). However, this is what I have to implement. I'm sure there are sound commercial reasons for doing it (and when I learn what they are, I shall share them with you). Perhaps I overstated the PDA aspect of it. Most clients will be connected using conventional browsers. I should imagine most of these will be IE on a Windows client.
Fri 21 Feb | FDWhitlark | Just write a class from scratch that works as an abstraction layer. You are probably well aware that every DB vendor has its small (and sometimes large) deviation from the ansi SQL standards. So all you have to do is create a class that abstracts those differences. Your class might be called DBAdapter and feature methods like: Connect(host, username, password, vendor) StartTransaction() EndTransaction() RollBack() ExecStoredProc(spname) DoSelect(table, columns, where) DoDelete(table, where) DoUpdate() yadda yadda yadda, you know what you need DoSelect's 'where' argument could be a strings containing the full clause, a list object containing key value pairs, or perhaps just an array. I like to use strings as it provides a lot of flexibility and is easy to implement. For eample 'id>= 200 and category=4'. These kinds of structures are more difficult to implement as lists or arrays. If you are worried about a particular DB will handle this kind of argument, you can always do simple string replacement in the adapter to modify the clause to work properly. Be careful in designing your methods. Look closely and specifically at all the DB needs of your application. As always, use polymophismic techiniques such as method overloading to make the methods flexible to the code that uses your class. Avoid using stored procedures for your application as they will have to be completely rewritten for each DB you support (and in my experience, T-SQL works nothing like PL/SQL). Also, try to limit the amount of specialized vendor-specific functionality. Examples might be MySQL's LIMIT clause of or SQL Server's SELECT TOP functionality. Where things can get hairy is in the implementation of enforcement of foreign key relationships transactions and primary keys (auto incrementing identifiers) as every vendor seems to have its own way of handling things. The simple SELECTs, UPDATEs, and DROPs should be pretty straightforward, though. If your class is designed correctly, it will be easy to slide in unique SQL syntax handling adaptions for any modern SQL-based DB vendor. I do work on a content management system and we are quite happy with the way our DB abstraction layer turned out. We can port our entire application to a new DB vendor in about 30 minutes. Don't be dissuaded from creating this adapter. The wider DB vendor support you have, the greater the market for your product. This comes at a cost of extended functionality unique to particular vendors, but OTOH how great is it to approach your client and say that your software runs on SQL Server, Oracle, DB/2, Sybase, PervasiveSQL, PostgreSQL, MySQL or whatever else they might have lying around. This can save the client thousands of dollars and make your solution much pallatable even if it costs more or lacks other features that your competitors solution's offer. Final note, if your application is of a particularly sensitive matter, like banking or other mission critical data where data integrity is of pinnacle importance, you may want to forego this endeavour. Use one DB and take full advantage of it's specific tools to ensure reliable data. DB vendor independence is not worth a borked table containing financial records because your particular implementation of transactions on one of your 10 supported database failed. Beware the leaky abstractions.
Fri 21 Feb | Philip Dickerson | Regarding the reasons for needing to support more than one database for a custom/niche (non-shrink-wrap) application - this is usually driven by customer insistence. If you are selling the application to more than one customer, then some customers have 'standardized' on Oracle, some on SQL Server, some on DB2, etc. Most of these customers are not willing to install one copy of a different database, such as one copy of SQL Server in an all-Oracle environment. Therefore, you need to be able to use the customer's choice of database server. We currently support multiple databases with our intranet application sold to a variety of customers. The approach you are taking (use ADO with inline SQL and no stored procedures, etc) should work well. You can certainly use a variety of datatypes quite successfully when supporting multiple databases (integer, char, varchar, nchar, date, text, image, real, float, etc), provided you allow for some differences. The database creation scripts can still be relatively generic, with relatively minor changes for datatypes and slightly different syntaxes for creating tables, indexes, etc between SQL Server and Oracle. A few things to be aware of: - For text and image fields, use LONG and LONG RAW in Oracle, not the newer CLOB and BLOB datatypes, because ADO does not support CLOB and BLOB. (There are some limitations with LONG and LONG RAW, such as difficulties transferring them between tables if you ever need to do that). - Date formats are very restrictive in Oracle; SQL Server allows you to insert a date in almost any format, Oracle requires it in the specific format '21-FEB-2003' for inserts, and in where clauses you may often need to use the 'TO_DATE' function in Oracle. - Functions such as 'ISNULL' are different in Oracle. - Numeric fields returned by ADO from Oracle must be converted to numeric before they can be used as numbers; ADO returns Oracle numeric fields as 'adNumeric' or 'adDecimal' and for these IsNumeric returns false, and statements like 'If fieldvalue < 10' will cause an error, you need to convert the value (with CLng, CDec, etc) before using it as a number - If you are using the 'JOIN' keyword in SQL queries, you will need to change the queries to the 'older' syntax (comma-separated table names) that is recognized by Oracle (and also SQL Server) - Oracle has more restrictions on sub-queries than SQL Server. - If you are using the 'IN (a,b,...)' condition, Oracle has a limit of 1000 items in the IN list. - If you are using 'autonumber' columns in SQL Server, these need to be simulated in Oracle with a sequence and trigger. - etc.
Fri 21 Feb | Patrik | >DoSelect(table, columns, where) >DoDelete(table, where) >DoUpdate() >yadda yadda yadda, you know what you need This is what happens when you abstract the specific database SQL out of an application and wrap it in generic classses. How would you handle multiple table outer and inner joins, for example? How about subselects? Oracle specific tree-walker SQL, ie. CONNECT BY and such. You don't. Or you have 10K lines of code in your DB abstraction class to handle all this. Leave SQL parsing to the SQL parser :-) SQL related least common denominator problems, because the poor developer will be fed up about all this and have a very limited DB fuctionality. And we havent even got to the datatypes yet.
Fri 21 Feb | Li-fan Chen | I don't think there are any tools out there that will be of much help--it doesn't matter the price--it's a matter of the solution. If you try to keep to a specific database access interface.. like ODBC/OLEDB/ADO/ADO.NET or JDBC--you still can't access your database in the most efficient manner without serious code changes when the vendor of the interface updates it. (ADO is not the same as ADO.NET).. Sometimes your vendor also bundles the interface with the language.. so you end up having to upgrade both because if you don't.. you have one part of the solution supported and the other part orphaned. There's a few not so elegant ways to go about this: Learn the nature of your data access..and partition them. Then find a plan for these actions. 0) How do you import/export/transform data in bulk. These actions are speed-critical. 1) Anything you can't do on a simple server like MySQL is probably vendor specific and vendors like to differenciate themselves.. But let's isolate the basic DML and DDLs....for data reporting/manipulation/setting up triggers/stored procedures... One common tip you'll here for these basic DML/DDL calls: Most of these follow some kind of standard if you keep to the very basic options. You can write thin wrappers.. small functions and subroutines that call these DDL and DMLs using a naming convention that stays the same even if you change databases. So imagine a few vbscript calls that are named in english for what they do.. and beneath that they do their call in ADO or whatever. Yes.. you have twice the work when you recode.. but the high point of the day would be trying to figure out what the old code is trying to do verses the newer.. and allowing you to change one at a time knowing what's affecting what. 2) For the fancy stuff.. again.. place them into thin wrappers.. and clearly group them together in a way you know they are vendor specific.. and once you isolate these you might find that you don't use that many vendor specific features.. and you can start finding the new vendor's version of doing this. Regular exprsession.. data translation.. bulk export and imports.. ability to access OLE, locking options.. they go into this group. You'll have to rewrite all of these regard less of which technology you use (JDBC/ADO.. etc etc) 3) Translating things optimized: It's never fun to discover how elaborate it can be to write a ADO.Command structure just to write a call some stupid stored procedure...and naturally the thought of translating 20 or 30 of these into the NEW LANGUAGE just drives people insane. First, your client shoudl be paying for this, and the cost should be transparent.. but Secondly... have a plan to write these code automatically if possible. Use the Factory pattern. Create a plan that will code for you... and then hand tune in minor ways to do what it really should do. I have found generators on the net (http://www.vbrad.com/'s ADO Stored Procedure Generator add-in comes to mind in the Free Component section)that will generate the ADO.Command calling code. Your responsibility is then to find such generators or write your own. And have a system where you can take the latest spec and generate either vendor's crap interface. Sometimes it's as manual as substituting variable tags with the actual fields you want to access or write to in a programmer's text editor.. but once you have verified it works.. it just works. This at least half the development time for something that you CAN'T seriously automate due to the how vendors differ so much with performance critical features like stored procdures.. cursors..and so on. I don't know.. these are the best solutions... but do check out a real project's solution: OpenACS.com has a really large piece of open source software that does CRM and such.. it uses Tcl (server side scripting language) and AOLServer (web server) and Oracle and PostgreSQL (open source DB).. the way the project abstracts calls to both postgresql and oracle is an useful example of partitioning your database accesses. Check out how they do it. Just search for Oracle or PostgresQL keywords in their tcl and sql source files.
Fri 21 Feb | Patrik | Philip, >If you are selling the application to more than one >customer, then some customers have 'standardized' on >Oracle, some on SQL Server, some on DB2, etc. OK, I appreciate customer demand. But then again, as in our example we had an application doing very vertical market stuff. You had the choice of giving us $20,000 and go with Oracle, or roll your own for a lot more. This may sound like stupidityness on my part but I believe, if you have say 50 customers, and in selling to the 51st you give in to porting it to work on another DB, you have not made 1 customer a favour, but 50 a disfavour, because you will from then on be limited in which functionallity you can easily implement. It is sometimes cheaper to let one customer of the hook, than to give in to customization of a software package.
Fri 21 Feb | FDWhitlark | How would you handle multiple table outer and inner joins, for example? How about subselects? Oracle specific tree-walker SQL, ie. CONNECT BY and such. You don't. Or you have 10K lines of code in your DB abstraction class to handle all this. Leave SQL parsing to the SQL parser :-) I agree with you entirely, but much of what you talk about can be achived programatically. For complex joins, you can certainly work to make the DoSelect() method tolerate such input. The abstraction is necessary because even joins work differently among vendors. Furthermore, many applications can be written without using joins. Now I know some of you may balk at that and cite religious and philisophical arguments, but it is true, particularly of smaller applications. And please, don't try to explain why subqueries can't be emulated in code. Return the first data set, put it in a temp table, and then do another query against it. Is it as easy as doing it all in the same query? No. Is it possible? Yes. Can it provide you even more functionality in the long run? Yes. It is just an abstraction. So this solution is two trips to the DB instead of one. Big deal. For MOST applications, this is probably fine. Oracle tree functions? I've not actually used this but I assume it is some sort of hierarchical data model. If so, make your own tree class and avoid using Oracle's specific functionality. It really isn't hard. Just a table with and ID and a ParentID column. If the intent is to provide DB independence, then vendor specific functionality must be avoided. Connect By? I've not used this and I've written applications, therefore I can probably assume that it is not necessary for every application. Again, making your application independent from a specific DB vendor is not impossible, but it may require you to change your approach to certain problems. Don't use specific DB functionality that you are accustomed to as a cruch. Much of it can be programmed around in the application. Trust me, with varying degrees of success I've implemented refrential integrity and transactions at the application (dang you MySQL). Not pretty, but doable under certain circumstances. Finally, if your application needs to provide compeletly faultless data (or close to it), then by all means, take advantage of the data integrity functionality of one DB vendor and expolit it to the very end.
Fri 21 Feb | Paul Brinkley | You know, some of you are making some fairly decent arguments here, but is this really the way to go in the long term? Lashing your customers to a single vendor? It would seem to me that over time, a customer (even a tech-savvy one) may find a competing DBMS they like better, but are now so locked in to the previous platform that they can't afford the energy requirement to switch. 'Like better' could include nice-to-haves like extra features, but could also include some potential killers like security holes in their current DB, bad scalability, deteriorating tech support, etc. Wouldn't a contractor that could relieve the customer from this problem would be better than one that commits to one vendor, and provides a short-term performance boost?
Fri 21 Feb | Li-fan Chen | I agree with Patrik here.. you really need to look at what you are doing to figure out whether it's justifiable. If the customer knows the extras cost and is paying for the compatibility all the best. You are billing this 'stupid work'. Otherwise the people authorizing (marketing drones, catbert, Asok, dbas, etc) this extra level of abstraction really gotta understand whether it's just a checkbox on the feature list in the magazine reviews or something that will actually help them expand the market in a way they think it would.
Fri 21 Feb | Patrik | fdwhitlark, >Finally, if your application needs to provide compeletly >faultless data (or close to it), then by all means, take >advantage of the data integrity functionality of one DB >vendor and expolit it to the very end. Im currently doing bank work. Your account balance is correct, or close to it will not cut it. The niche application I worked at earlier kept track of patient treatment data, which is another place where 'close to correct' is not really good enough.
Fri 21 Feb | FDWhitlark | Patrik, Then you completely made the right choice. However for a website content management system, an e-commerce catalog system, a CRM system, or some other program that is a little more tolerant of data flubs, then providing database platform independence might be in order. I'm not sure about all the specifics of Justin's scenario, but writing an adapter looks as if it falls out of the boundaries of his project constraints (but maybe not, you can achive a lot when you don't have a deadline, or can you? a differet topic entirely). I am simply offering my thoughts on how to achieve independence ONLY WHEN it is appropriate.
Fri 21 Feb | Patrik | >Lashing your customers to a single vendor? This is a very common missunderstanding. If you are in the business of providing DB centric apps, the customer you sell to is YOUR client. Not Oracles, not Microsofts, but YOURS. You will get the call, cause the database listener is down. Because your application does not work. I would want to see if you hang up on that call saying 'Call your DB vendor'. Disallowing customizations for DB related stuff, (and really even for the 'we need an extra field on this tab' customizations, will help you serve your client better.
Fri 21 Feb | Chris Tavares | >DoSelect(table, columns, where) >DoDelete(table, where) >DoUpdate() This is exactly the *wrong* way to write a DB abstraction layer. Your code doesn't want to do a select - it wants a list of customers. It doesn't want to do a delete - it wants to close an account. It doesn't want to do an update - it wants to enter a deposit. Write your DB abstration layer to support the operations your app needs to perform. This way, you're not only insulated from database vendor changes, you've also got flexibilty when your DB schema changes.
Fri 21 Feb | Li-fan Chen | Yeah Chris, if you do it any other way you are just working for Microsoft--for free--creating framework stuff.
Fri 21 Feb | FDWhitlark | > This is exactly the *wrong* way to write a DB > abstraction layer. Your code doesn't want to do a select - > it wants a list of customers. It doesn't want to do a > delete - it wants to close an account. It doesn't want to > do an update - it wants to enter a deposit. -1 Offtopic Oh please, we are talking about database vendor independence, not application design. It goes without saying that you should have a customer class that has processing methods, and you should have an employee class, and an address class, and a whole slew of other more peripherial factory and iterator design pattern classes.
Fri 21 Feb | FDWhitlark | > Yeah Chris, if you do it any other way you are just working for Microsoft--for free--creating framework stuff. This is exactly what I'm addressing when I said the following: > Again, making your application independent from a specific DB vendor is not impossible, but it may require you to change your approach to certain problems. Don't use specific DB functionality that you are accustomed to as a crutch. Hello, world! Maybe the vendor-lock in approach isn't always the best route to go. And if your only excuse is not wanting to put forth the effort to invesitgate and develop ways around it, then shame on you. I don't buy it. Do you ever consider, for example, that it might be better in certain circumstances to write a new framework (that better fits the requirements of a application) than to go with the one that is given to you? I personally find it a lot easier, quicker, and more fulfilling to create my own abstractions for a particular problem then to go with a one size fits all approach. I know of plenty of applications used by large firms (Fortune 500) that support multiple database vendors and some that even go so far as to maintain referential integrity in the application, not the database. Ooooh, can you hear Fabian Pascal's (www.dbdebunk.com) hair coming unrooted and hitting the floor in large clumps?
Fri 21 Feb | Patrik | fdwhitlark, >I personally find it a lot easier, quicker, and more fulfilling >to create my own abstractions for a particular problem >then to go with a one size fits all approach. I guess fullfilling is the key word here isnt it? I on the other hand try to reuse what others have made when it comes to DBs, you may call me naïve but I have a hard time justifying for myself why I should spend time re-implementing functionality, that would doubtless be mine, but probably alot slower/unstable/more hackish/hairy and I dont know what, since most databases from major vendors are mature products. Oracle and IBM engineers and others have been working on the most efficient way to store stuff in a database since about when I was born. Shame on me for not trying to implement my own. I can find better things to do with my time, spending time on implementing value adding functionality to my program is one of these things I come to think of. Have fun,
Fri 21 Feb | Patrik | Shame on me for not trying to implement my own. My own application enforced referential integrity system and application controlled transaction handling, that is.
Fri 21 Feb | FDWhitlark | > Oracle and IBM engineers and others have been working on the most efficient way to store stuff in a database since about when I was born. Shame on me for not trying to implement my own. You are certainly correct and I don't expect anybody to really do it better than them, but consider also that they are a big corporation and are about the business of making money (aren't we all?) and they have intentionally deviated from industry standard in such a way that it makes DB vendor swaps a daunting task. What I want to tell people is that it is not impossible to be independent of a vendor platform, but it does require some sacrifices. Every situation should be evaluated individually. In some circumstances, the costs of DB vendor independence will outweigh the benefits, other times it won't. I've already attempted to make the case for both sides of the argument. I after some cost-benefit analysis and some ROI analysis following an implementation, I'm sure we could draw some lines in the sand and say DB vendor dependence works well here but doesn't work well there. Case by case evaluation with an open mind to all courses of action will produce desireable results. Solid experience in all the various routes is priceless. Procedural or OO? relational or hierarchal? DB vendor abstration or no DB vendor abstration? There will never be an 'always right' answer. The correct solution will be established case by case. Die, horsie! Die.
Fri 21 Feb | FDWhitlark | > Shame on me for not trying to implement my own. > My own application enforced referential integrity system and application controlled transaction handling, that is. This is hard nasty code. I wouldn't recommend it and it is not necessarily a necessity in a DB abstraction layer. It can be avoided if you exclude Access and MySQL from your list of DBs to support. Also, I know I can get flammed for saying this, but fkey integrity and transactions are not ALWAYS neccesary meet the requirements of a software specification. Take FogBUGZ, it works on Jet, SQL Server, and MySQL. I would presume that this application doesnt use fkeys or transactions. The very application I'm using now (this forum) is probably DB driven and doesn't use these features. Meh?
Fri 21 Feb | Patrik | Agreed, Little Horsie is as of now dead.
Fri 21 Feb | ODN | Since you mention future migration to .NET, you may want to work toward where you want to end up. Here are a few articles on ADO.NET database independence: Transparent Database Access with ADO.NET http://www.ondotnet.com/pub/a/dotnet/2002/12/16/transadonet.html Database Independent Data Access http://www.codeguru.com/columns/DotNet/DotNet200208.html You may also want to check out the data access application block for .NET http://msdn.microsoft.com/library/en-us/dnbda/html/daab-rm.asp
Fri 21 Feb | Herbert Sitz | '> My own application enforced referential integrity system and application controlled transaction handling, that is. This is hard nasty code. I wouldn't recommend it and it is not necessarily a necessity in a DB abstraction layer. It can be avoided if you exclude Access and MySQL from your list of DBs to support. ' FYI, Access/Jet has both referential integrity and transactions. (No, the transactions aren't ACID compliant, but they're better than nothing.) And MySQL has at least transactional capability via several different add-ons.
Fri 21 Feb | Herbert Sitz | fdwhitlark -- Or maybe you were just referring to ability to use transactions in stored procedures, in which case you're completely right.
Sat 22 Feb | AEB | ODN: The problem with the 'Transparent Database Access with ADO.NET' and other links is that the breaking point is still the sql statement. I still think it's a good direction. 'SELECT top 10 table_name FROM INFORMATION_SCHEMA.TABLES' won't work in oracle, but. 'SELECT * FROM (SELECT rownum, table_name FROM systables ORDER BY table_name)x WHERE x.rownum <= 10 ' will. In the same way that Sql Server and Oracle uses different functions (getdate() vs. sysdate), etc.
Sat 22 Feb | AEB | I did a system that supported both SQL Server and Oracle but was done in java not vb. I'm doing .net now (I did vb6 a f ew years back) but the same approach could apply. 1. You have to write a layer that hides the specfic database implementation. i.e. an Adapter pattern. This was easier because we used generic jdbc functionality - no driver specific stuff. This is where those articles in ODN's post are of great help - especially the codeguru one. 2. Connection properties should be configured and stored somewhere - text file, xml, etc. so that they can be replaced and edited in one place. 3. SQL Statements should be configured and stored somewhere as described in #2. Not in the code!! If you do step 1, you just write some code to retrieve the sql string from wherever based on the specific database being used (determined in #2 - i.e. ORA or MSSQL). As a simple example, you end up with... SELECT_CUSTOMER_MSSQL = 'select blah blah blah' SELECT_CUSTOMER_ORA = 'select blah blah blah' SELECT_CUSTOMER_DB2 = 'select blah blah blah' Some issues to note... * Identities/Sequences - i.e. autogenerated values from the db. In mssql, you find out the value AFTER it is inserted whereas Oracle's sequences are determine before the INSERT statement. * If possible, use SQL 92 standards - I know that SELECT * FROM product p LEFT JOIN vendor v ON p.vendor_id = v.vendor_id' is not as intuitive as what everyone is used to for outer joins, but it works in both of the recent versions of mssql and oracle. * Start with 2 database and build out from that. In order for this to work, you HAVE to know each one inside and out. Don't expect your product to support MS SQL, Oracle, DB2, MySQL, Access on day one. What functions do they use (COALESCE vs. NVL vs. NULLIF, etc.) and what is equivalent? * I haven't found a way to do Oracle's 'connect by' w/o using a cursor in a stored procedure. It's a great feature, but if you aren't already using it, don't worry about it yet. * Try to stick to general datatypes - luckily I didn't have any exotic ones or any BLOBS, so I was somewhat lucky.
Sun 23 Feb | John Ridout | Don't write a class for your database abstraction, write an interface then create an implementation of the interface for each DBMS. Then create an instance of the appropriate class for your database access.
CVS on dev servers | Fri 21 Feb | Neil E
It seems CVS is mainly geared toward keeping everything in order when developers each have their own copy of the source. Is there an official approach to using it on a single server where multiple developers may be working on the same copy of the code (Im talking about Web sites here mainly)?
Fri 21 Feb | Bill Tomlinson | I don't think so. The official approach is to have each developer have their own workspace. While there are ways to do reserved checkouts in CVS I would say that if you want to have only one workspace, I'd recommend using something other than CVS. Maybe go back to older technology like RCS or SCCS. That said, why would you want to do it this way? You mention developing web sites, but I don't understand why you wouldn't just have each developer set up a workspace (webserver and database usually) on their own workstation. That's what we do and there's no technical obstacle. The only thing that would make me consider a single development workspace is if the product required some sort of very expensive thing to work (say, has to interface with some proprietary hardware costing a quarter million a piece).
Fri 21 Feb | Ryan LaNeve | [That said, why would you want to do it this way? You mention developing web sites, but I don't understand why you wouldn't just have each developer set up a workspace (webserver and database usually) on their own workstation. That's what we do and there's no technical obstacle.] Security springs to mind. We worry enough and spend enough time keeping our network running virus free with only 4 IIS servers (2 production, 2 development). If we installed IIS on every employee's machine who worked on web projects, our IIS count would triple. That said, we're very near deciding to install IIS on dev machines anyway. There are just too many issues with the shared workspace development model that would instantly disappear with private workspaces.
Fri 21 Feb | Chris Tavares | Can you split the difference? Give each developer their own virtual directory on a single IIS server? That way you only have the one server, but each dev has their own sandbox. Although having individual servers on dev boxes is still the best way to go - least hassle for the dev team.
Fri 21 Feb | Philip Janus | I'm not a sysadmin, and I'm sure one of the SA's here can speak to this better, but... What about segmenting your internal network? Put the production web servers on their own subnet with a firewall between them and your dev subnet. Don't open port 80 on that firewall. Have a standalone terminal that *can* see the web servers (so devs can see the reported bugs) Then you can put IIS on each desktop. Keep them patched (once a week or after critical updates the SA does a walkaround). If you have dev and test in-house there shouldn't be a huge need for the developers to look at the production system, right? Philo
Sun 23 Feb | Neil E | Thanks for the replies so far. Bill Tomlinson asked why I want to do it this way - it's mainly because it's useful to be able to edit the site on any platform, and obvioisly and IIS & ASP site won't run on a Linux box or a Mac. I reckon the 'one copy per developer' is the best approach, with a virtual directory (or virtual server running on a port 8080 onward) for each developer and save port 80 for the release version. Cheers folks, it's all clear to me now!
Least admirable people in IT | Fri 21 Feb | Long time listener, first time caller
Thereve been posts before on the most admirable people in IT, but Im curious who the least admirable people are. Im really not trying to start a flame war here (but its probable inevitable, isnt it?). Im NOT interested in how much you hate Bill Gates, Steve Jobs, Larry Ellison, etc. What I am interested in is knowing the false prophets that should be avoided - bad authors, speakers, web pundits, etc. Its always helpful to find out where to find good information, but its also just as valuable to find out whose advice you should avoid.
Fri 21 Feb | John Topley | Anybody from Gartner.
Fri 21 Feb | Jeff | I've got a good one: David Siegel His book, Creating Killer Web Sites, is responsible for more poorly designed Websites then any other book. Anyone disagree?
Fri 21 Feb | Better than being unemployed... | Sanford Wallace
Fri 21 Feb | Joe Paradise | My boss at my first job. Looked like Dilbert's boss and about as useful.
Fri 21 Feb | Simon Lucy | Any recruitment consultant.
Fri 21 Feb | John Topley | Hey, my girlfriend's a recruitment consultant! :-( Not in the field of IT though. There are some good ones about, you know. I know from personal experience that there are a lot who know FA about the sector.
Fri 21 Feb | Just me (Sir to you) | Most IT professors in academia.
Fri 21 Feb | Prakash S | Profs qualify as IT people? OUCH!
Fri 21 Feb | Prakash S | I would say 'Clueless Upper Management'
Fri 21 Feb | Robert Moir | Anyone from Gartner. Or any other similar place.
Fri 21 Feb | Prakash S | You guys are so wrong about the fine people at Gartner. I guess this because you are unable to interpret what they say. As a rule of thumb: If Gartner/Meta/Giga say 'turn left', you should 'turn right', if they come up with some , consider only 10% of that. Do this and you are fine:-)
Fri 21 Feb | Bella | 'Media types', like writers for things like TechoWeek. Reviews of dev tools by people don't even know how to code. Tech sales people. Like an Oracle salesman. People/firms who flood your (snail) mailbox with junk mail for overpriced corporate training. Headhunters & Agencies Vendors of useless junk development tools. There were 1000's in the bubble. 100 different tools that all did the same thing. Just another useless layer. Interesting, I guess the pattern I'm developing is people who are not directly in the IT field, but are making money off it with their ancillary services. Carperbaggers, if you will.
Fri 21 Feb | Neil E | I'll add stock market analysts to the list - not all of them, just the ones (like Henry Blodgett) who forgot that the idea is to hand out sensible advice rather than tell everyone to bet on nutty get-rich-quick schemes.
Fri 21 Feb | Just me (Sir to you) | It is not just the carperbaggers though. Count in all the zealots from every persuasion ( http://slashdot.org ).
Fri 21 Feb | tapiwa | One more vote for Gartner. We paid £50k for a report that was totally useless. And that' me putting it very nicely. Still it buys senior management a warm and fuzzy feeling.
Fri 21 Feb | tapiwa | One more ... anyone that does HTML Programming
Fri 21 Feb | Patrik | >One more ... anyone that does HTML Programming 'HTML programming ' as a phrase should be outlawed, since it missleads people to believe that people doing HTML pages is programmers. I do some HTML occasionally, just to present some DB-data to users :-) YAY! Im the least admirable guy in IT.
Fri 21 Feb | Neil E | People who think HTML is programming, shurely?
Fri 21 Feb | Neil E | Hokay, how about the gits who hide what their work actually is by inventing new words, or new uses for old words. Was it here on JoS that someone pointed out the simple truth that Architects 'design' buildings, but Software Designers 'Architect' software?
Fri 21 Feb | tapiwa | I think you misunderstood. I should have said anyone who does 'HTML Programming' :) Every time I hear that phrase, I cringe, and feel like shooting the person, chopping them up and then feeding them to the pigs.
Fri 21 Feb | programmer | John Topley -- Care to elaborate on your impression of Gartner? I went to a conference with several speakers from Gartner, and frankly I wasn't very impressed. But I'm curious why you said to avoid Gartner.
Fri 21 Feb | Neil E | I agree this time T. I think it's about as sensible as someone saying 'I did some Photoshop programming'. Unless they happen to work for Adobe, obviously. Now 'Flash Development' is a weird one. I'm not sure if that sounds right or not.
Fri 21 Feb | Richard Marks | The arrogant technical people that have no sense on where their paychecks come from.
Fri 21 Feb | John Topley | Programmer: I've read some of their reports that have been used as part of the decision-making process where I work and wasn't very impressed with some of their assessments. It's probably more of a reflection on some high-level managers who I feel should educate themselves about industry trends, rather than just make decisions based on what Gartner say.
Fri 21 Feb | Brian Hall | Politicians that try to get involved in any technology, when they haven't the absolute least clue what the hell they are talking about. So I guess that's about all of them, really.
Fri 21 Feb | Bored Bystander | Any agency technical recruiters. The people that play mind games with you and work hard to control you. Contract recruitment agencies. Lying scum o' the earth pieces of human excrement that would treat Stephen Hawking - level people like streetsweepers, and would sell out their grandmothers to crack whoring. And that's on a day when they're feeling ethical. HR personnel in most companies. Clueless gatekeepers looking for keyword hits in resumes and snottily defending their ignorance in ongoing work to defend their existence. Any condescending a$$hole in our industry who falls back on 'higher authority' arguments: 'we don't use contractors, that's er, uhm, Mr. Big's jurisdiction and he is just too busy to bother.' An actual person: Harris Miller, president of the Information Technology Association (ITAA; Arlington, Va.), who has spin-doctored a non existence shortage of IT people. This guy is the Joseph Mengele of mass corporate layoffs and offshoring. Any and all of these people should be top candidates for testing of the next space shuttle mission... in the cargo bay, with 20 gal. gas cans tied around their waists.
Fri 21 Feb | fool for python | Telecom Industry management and everyone who believes that the solution to every IT problem is a Microsoft | SUN | Oracle | IBM.... product.
Fri 21 Feb | Just me (Sir to you) | Judges, that unhindered by any knowledge of the subject matter are led by lawyers that unhindered by any knowledge of the subject matter cave into a public court that misguided by devious spindocters edges on a clueless press that unhindered by any knowledge of the subject matter spouts any nonse it believes will rack in more pageviews.
Fri 21 Feb | Cedric | People that advocate scale out for things that should be scaled up. People that advocate FAT clients. The people that wrote Adage.
Fri 21 Feb | Li-fan Chen | I am the least admirable person in IT. I am going to open a eatery and watch the y generation try to walk the walk in the next dot com.
Fri 21 Feb | Long time listener, first time caller | I forgot to add my own to this list: Steve Gibson of http://www.grc.com . The guy's a great self-promoter, but he's been debunked by many others with better credentials. I steer clear of GRC nowadays. (for a nice listing of Steve Gibson debunking articles, see http://cable-dsl.home.att.net/netbios.htm#ShieldsUp )
Fri 21 Feb | Just me (Sir to you) | Will you do tuna burgers?
Fri 21 Feb | Just me (Sir to you) | 'Politicians that try to get involved in any technology, when they haven't the absolute least clue what the hell they are talking about.' Maybe politicians that do have a clue are even more dangerous. RMS?
Fri 21 Feb | fool for python | FAT clients are now called RICH clients so all those people can still be admired ;-)
Fri 21 Feb | Just me (Sir to you) | We broke free from the punch card reader, We escaped the green screen, We outran the X-terminal It's bedtime for the browser ;-)
Fri 21 Feb | Kyralessa | I second the vote for people in general who conned the media into believing there was a mass IT shortage, the purpose of this grand con being to extend and expand the H1-B visa program.
Fri 21 Feb | Q | Jack Valenti Not that he is 'in IT'. Just that he may be doing more damage to IT than anyone else.
Fri 21 Feb | ODN | Wow, I agree with Bella! ZDNet commentary column writers.
Fri 21 Feb | Daniel Shchyokin | <> Sorry rich but our paychecks come from us with you skimming of the top
Fri 21 Feb | .. | Gartner and (most) recruiters
Sat 22 Feb | ac | Jerry Pournelle Eric S. Raymond
Sat 22 Feb | Cedric | The Angry Coder aka Mr Knowitall
Sat 22 Feb | trollbooth | People that classify developers as 'the technical people'
Sat 22 Feb | sgf | John C. Dvorak
Sat 22 Feb | raindog | I thiught the original question was more about 'false prophets', not about ordinary less-than-ideal people like technical recruiters, etc. In this regard, my candidate for least admirable language designer: James Gosling Look at the designers of the other popular languages: Kernighan, Ritchie, Stroustrup, Wall, van Rossum, Hejlsberg, Matsumoto, etc. and compare their attitude and insight with Gosling's.
Sun 23 Feb | Cedric | Didn't James Gosling go off on a Microsoft evil, Sun good tangent at the Java devcon recently? That does seem to be typical from anyone from Sun lately though.
Sun 23 Feb | Stephen Jones | >>>>>John C. Dvorak sgf Saturday, February 22, 2003 <<<<<<< Strange; he's my favorite journalist. Think of the money people would have saved if they'd listened to him talking about dotcom companies.
Sun 23 Feb | programmer | Least admirable person -- Dave Winer. Unfortunately, he thinks he 'got there first' on the weblog trend, and he won't let anyone forget about it. His products don't work worth a damn. And his observations in his weblogs are imbecilic.
dumb Unix question | Wed 19 Feb | PC
What is the meaning of etc as a name for a directory? Also var? I have been wondering about this for years but I didnt want to ask anyone, since it doesnt matter. But every time I look at those directories, I have to wonder. I also wonder about the meaning of /usr/local. Its local as opposed to what? (Sorry, I just dont have much to do at this moment. I finished a project that I thought would never end, and the next one starts tomorrow afternoon. I will finally have a chance to sort my e-mail.)
Wed 19 Feb | flamebait sr. | Local meaning your local, individual system, as opposed to the entire cluster. (Many unix instalations are designed to have some large number of systems all working off of the same NFS mount)
Wed 19 Feb | flamebait sr. | Actually, I may have gotten that wrong. It might also be that /usr/local/ is for stuff that is not part of your OS install, meaning things you install. There's years and years of history that makes things work like this and sometimes the reasoning doesn't make complete sense now.
Wed 19 Feb | mackinac | You could call 'var' the variable stuff because it consists of files that are always changing: system logs, outgoing mail queues and incoming mail files,... If you are careful, you can set up your partitions so that /usr is readonly and all the system writable files are on /var. This can protect executables and libraries from corruption, intentional or accidental.
Wed 19 Feb | mackinac | /usr/local sure isn't local to the machine I am using. I think it more gener